# Workflow One issue per unit of work, one branch and one PR per issue: - ensure a tracked issue exists with a definition of done - branch from `next` (never from `main`) - do the work; open a PR based on `next` (never on `main`) - pass an independent review, then `clawbot` squash-merges it into `next` - push; nothing stays local-only `next` is the branch for the next milestone and must stay green and mergeable to `main` without notice. Only `sneak` merges `next` into `main`. No commits land directly on `main` or `next`, only merges via PRs. A deploy is a squash commit from `main` onto `prod`; `prod` never follows `main` automatically. Other issue branches do not touch this file; it changes only in its own PR to `next`, because every branch editing `TODO.md` conflicts with every other. # Status On `next`: - Repo standards (https://git.eeqj.de/sneak/rtnetmon/issues/1): the `script/` entrypoints, the vendored `.golangci.yml`, and `REPO_POLICIES.md`. - Interface detection on Linux and macOS (https://git.eeqj.de/sneak/rtnetmon/issues/2). - The fix for macOS VPN detection (https://git.eeqj.de/sneak/rtnetmon/issues/8). - Starlink status lines (https://git.eeqj.de/sneak/rtnetmon/issues/3). - A version stamp: built with `make build` or a plain `docker build .`, the binary logs its git tag or short commit at startup (https://git.eeqj.de/sneak/rtnetmon/issues/10). - CI that runs `script/cibuild` on every push to a branch (https://git.eeqj.de/sneak/rtnetmon/issues/12). # Next Step - `sneak` merges the milestone PR, https://git.eeqj.de/sneak/rtnetmon/pulls/6, carrying `next` into `main`. - A first run on a real Mac of what is on `next` now. The fix for https://git.eeqj.de/sneak/rtnetmon/issues/8 has not run on a Mac yet; `sneak`'s first run on his Mac is its test.