Milestone branch next for merge into main. Everything on it passed an independent adversarial review and a green make check before being squash-merged.
On the branch
Repo standards adoption (#1): script/ entrypoints with the Makefile as thin shims, containerised lint and tests, CI workflow, vendored .golangci.yml, REPO_POLICIES.md, TODO.md; all lint findings fixed. Behavior unchanged.
macOS support and single-interface UI (#2): Linux with both bridge interfaces is unchanged; otherwise the default-route interface alone is monitored and the UI draws one pane. On macOS a running VPN tunnel (utun) is the primary pane next to the physical default-route interface, or the physical interface alone. Anything outside that matrix exits with an error.
What to know before merging or deploying
make lint, make test and make check now need a Docker daemon.
The personal copy/run rsync deploy targets were removed from the Makefile; make run runs the binary locally.
Not verified on a real mac (no mac in the fleet): live netstat -rn parsing, IP_BOUND_IF socket binding, and whether Mullvad leak protection lets bound traffic leave the physical interface. A first run on your mac is the test.
On macOS --ifaceA/--ifaceB are ignored (interfaces come from detection); --labelA/--labelB still apply.
The CI status shown here is red for every push in this repo because the Docker daemon on the mac-studio runner fails before checkout with "all predefined address pools have been fully subnetted" (out of container-network subnets; pruning unused networks there, or widening default-address-pools in its daemon config, clears it). The repo gate is make check, run by the reviewer on each head; nothing on this branch is unverified.
Waiting on the owner
Nothing blocks the merge. The Starlink status unit (#3) lands here next as it passes review; this body is kept current.
Model: fable-5-1
Milestone branch `next` for merge into `main`. Everything on it passed an independent adversarial review and a green `make check` before being squash-merged.
**On the branch**
- Repo standards adoption (https://git.eeqj.de/sneak/rtnetmon/issues/1): `script/` entrypoints with the Makefile as thin shims, containerised lint and tests, CI workflow, vendored `.golangci.yml`, `REPO_POLICIES.md`, `TODO.md`; all lint findings fixed. Behavior unchanged.
- macOS support and single-interface UI (https://git.eeqj.de/sneak/rtnetmon/issues/2): Linux with both bridge interfaces is unchanged; otherwise the default-route interface alone is monitored and the UI draws one pane. On macOS a running VPN tunnel (`utun`) is the primary pane next to the physical default-route interface, or the physical interface alone. Anything outside that matrix exits with an error.
**What to know before merging or deploying**
- `make lint`, `make test` and `make check` now need a Docker daemon.
- The personal copy/run rsync deploy targets were removed from the Makefile; `make run` runs the binary locally.
- Not verified on a real mac (no mac in the fleet): live `netstat -rn` parsing, `IP_BOUND_IF` socket binding, and whether Mullvad leak protection lets bound traffic leave the physical interface. A first run on your mac is the test.
- On macOS `--ifaceA`/`--ifaceB` are ignored (interfaces come from detection); `--labelA`/`--labelB` still apply.
- The CI status shown here is red for every push in this repo because the Docker daemon on the `mac-studio` runner fails before checkout with "all predefined address pools have been fully subnetted" (out of container-network subnets; pruning unused networks there, or widening `default-address-pools` in its daemon config, clears it). The repo gate is `make check`, run by the reviewer on each head; nothing on this branch is unverified.
**Waiting on the owner**
- Nothing blocks the merge. The Starlink status unit (https://git.eeqj.de/sneak/rtnetmon/issues/3) lands here next as it passes review; this body is kept current.
Model: fable-5-1
clawbot
self-assigned this 2026-09-21 09:22:47 +02:00
Standard scaffold: script/ entrypoints with the Makefile as thin shims, a Dockerfile whose lint and test phases gate the build, a Gitea CI workflow running script/cibuild, REPO_POLICIES.md, TODO.md, .editorconfig, .dockerignore, LICENSE, wider .gitignore. .golangci.yml is byte-identical to the canonical copy in the prompts repo.
211 lint findings fixed in code: package globals became functions/fields and a cobra command constructor, magic numbers became named constants, ctx is threaded into the probes, monitor loops split. Tests moved to external _test packages with export_test.go. Behavior unchanged.
Readers will trip over: make lint/test/check now need a Docker daemon; the personal rsync copy/run targets are gone and make run runs locally.
Disclosure: four //nolint:gosec remain on the fixed-argv ping/curl calls and the operator-chosen log file, as the reference repo annotates the same class.
Disclosure: module path left as-is.
Model: opus-4-8 (implementation); fable-5-1 (merge)
Linux runs exactly as before when both bridge interfaces exist. When they do
not, the lone default-route interface is monitored, and a single interface
draws a single UI pane instead of an empty second one.
macOS is newly supported: a running VPN tunnel (utun) is monitored as the
primary pane alongside the physical default-route interface, or the physical
interface alone when no VPN is up.
Detection lives in internal/netdetect: interface/route data types, pure
selection logic keyed on OS name, and route parsers, all unit-tested on Linux
for both platforms. Only the real route query and the per-platform TCP dial
binding are build-tagged. NewMonitor now takes a list of interfaces.
Not verified on a real mac: live netstat parsing, IP_BOUND_IF dialing, Mullvad leak protection.
Model: opus-4-8 (implementation); fable-5-1 (landing commit)
clawbot
removed their assignment 2026-09-21 15:02:29 +02:00
sneak
was assigned by clawbot2026-09-21 15:02:29 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Milestone branch
nextfor merge intomain. Everything on it passed an independent adversarial review and a greenmake checkbefore being squash-merged.On the branch
script/entrypoints with the Makefile as thin shims, containerised lint and tests, CI workflow, vendored.golangci.yml,REPO_POLICIES.md,TODO.md; all lint findings fixed. Behavior unchanged.utun) is the primary pane next to the physical default-route interface, or the physical interface alone. Anything outside that matrix exits with an error.What to know before merging or deploying
make lint,make testandmake checknow need a Docker daemon.make runruns the binary locally.netstat -rnparsing,IP_BOUND_IFsocket binding, and whether Mullvad leak protection lets bound traffic leave the physical interface. A first run on your mac is the test.--ifaceA/--ifaceBare ignored (interfaces come from detection);--labelA/--labelBstill apply.mac-studiorunner fails before checkout with "all predefined address pools have been fully subnetted" (out of container-network subnets; pruning unused networks there, or wideningdefault-address-poolsin its daemon config, clears it). The repo gate ismake check, run by the reviewer on each head; nothing on this branch is unverified.Waiting on the owner
Model: fable-5-1
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.