1. Most cost: turns and time were small, about 10 turns. The package test run took the longest, and the fmt scan ran beside it. The one real slip was mine. I wrote Fixes: none in the report and didn’t run scripts/commit.nika --dry-run first, so the pushed message reads Fixes none and lacks Part of #928. A pushed commit can’t be amended, so all that’s left is to name it under Needs:.

  2. Looked up: only how commit.nika treats Fixes: against Part:, which I read after the push. The brief says “message Part of #928” but not that the report field must be Part: #928 with no Fixes: line at all. builder.md says “Fixes: #N or Part: #N”, but nothing warns that Fixes: none wins over Part:. Everything else (the steps, the pre-flight, the gate) the brief handed over exactly.

  3. Checks: the winnow-grammar rev grep, the y15 test file’s existence, and cargo build --profile fast. The build was a no-op: the binary’s timestamp predated y15’s commit, but it had been built from the same sources. The “binary newer than the commit” rule gave a false alarm, though a no-op build costs nothing. After that came fmt, then check, the package tests, fmt::every_nika_file and pre-push-check. None were wasted. The missing check was commit.nika --dry-run.

  4. One change: in builder.md’s Commit with the script, say “run --dry-run once and read the message before the real commit; leave out Fixes: when it is Part:, never Fixes: none”. Better still, make commit.nika skip none, as it already does for Body: and Changelog:.

This site is open source. Improve this page.