feat(bin): include commit conventions in generated briefs (land of upstream #1587) - #49
feat(bin): include commit conventions in generated briefs (land of upstream #1587)#49sbracewell64 wants to merge 1 commit into
Conversation
AGENTS.md section 1 forbids naming an agent as a commit co-author, and bars the fleet's captain-address and nautical conventions from commits, PRs, and anything other tools read. Neither rule reached a worker: bin/fm-brief.sh stated neither, so a generated brief carried the co-author rule only on firstmate-repo tasks, and then only because those briefs separately name the firstmate-coding-guidelines skill, which carries it. Every worker on every other project was silently missed. Both are structurally the same gap. A crewmate does not read this repo's AGENTS.md for another project, and its own harness instructions may actively tell it to append a Co-Authored-By trailer, so the brief is the only place either rule can arrive. Commit 53932fb on fm/platform-landing-battery-windows-reds shipped a Co-Authored-By trailer for exactly this reason, and a separate incident leaked captain address into a commit subject the same way. Render a "# Commit conventions" section from one shared value into all three scaffolds that can reach a commit - ship for all three delivery modes, scout, and the secondmate charter - placed beside each one's delivery instructions rather than in the preamble. In the ship scaffold it is the last thing before "the task is complete only when committed on your branch". The scout copy adds that scratch commits are held to the same bar because a scout can be promoted in place. Rule numbering is untouched, so no cross-reference moves. test_every_committing_variant_carries_commit_conventions generates all five variants and asserts both rules plus the placement constraint. Witnessed red against the unfixed scaffold first: all five generated variants contained zero occurrences of either rule.
Local test-suite attributionFull local suite at this branch's head: None of the 11 failures come from this change. Attribution below is proven by replay, not asserted. 10 failures pre-exist on the baseBase
1 failure is environment-specific, not from this change
The failure follows the working directory, not the change. The assertion is about secondmate supervision auto-arm and touches no brief content. CI checks on this PR
What did pass
|
Lands upstream PR kunchenguid#1587 (commit
7f62937, "feat(bin): carry the commit conventions into every generated brief") onto this fork's trunk so the running fleet actually gets it.Nothing was redesigned and nothing was re-reviewed. The change was already reviewed upstream; the upstream contribution stays open and untouched on the maintainer's schedule. Only that contribution's own changes are carried here.
What it fixes
Verified against fork trunk
ed376cf:bin/fm-brief.shrenders no commit-conventions section at all, so no generated brief on any project tells a worker that no agent name orCo-Authored-Bytrailer may appear in a commit, or that the fleet's conversational conventions must stay out of commit messages, PR titles, PR bodies, and anything other tools read. The change renders one shared# Commit conventionsblock into all five committing brief variants, beside each one's delivery instructions.Conflict resolution
The cherry-pick conflicted in one hunk of
bin/fm-brief.sh, in the scout scaffold. Trunk has since added$WHO_IS_SPEAKINGand$VERIFICATION_DISCIPLINEat exactly the insertion point. Resolved by keeping both trunk sections and appending the contribution's commit-conventions block plus its scout-specific promotion sentence after them. The other two insertion points (ship and secondmate charter) applied cleanly, as did the whole test file.Delivery disclosure
This shipped direct-PR without the no-mistakes pipeline, under the captain's time-boxed authorization of 2026-08-04.
Verification
Behavioural proof of the fix, negative control first. With the unfixed scaffold in place, the new test was witnessed red:
With the fix in place,
tests/fm-brief.test.shis fully green (25 assertions), includingfm-brief.sh: every committing brief variant carries the commit conventions. Briefs were then generated from this head for all five committing variants and each was confirmed to contain the no-agent-co-author rule exactly once:Lint.
bin/fm-lint.shpasses (ShellCheck 0.11.0, pinned 0.11.0).Full suite.
bin/fm-test-run.sh --allat this head:total=133 failed=11 skipped_gate=13. Every one of the 11 failures was investigated:ed376cf?fm-backend-tmux-smokefm-busy-adapter-wiringfm-calm-pi-extensionfm-launchfm-pi-watch-extensionfm-remote-secondmate-lifecycle-e2efm-session-startfm-tmux-agent-livenessfm-turnend-guardfm-watcher-lockfm-secondmate-harnessTen were proven pre-existing by replaying the same scripts against a clean extraction of base
ed376cf, where all ten fail identically.fm-secondmate-harnessneeded a two-way control, because it passed in the base extraction (2/2) while failing at this head (3/3). Its failing assertion isClaude secondmate with a fresh beacon should use auto-arm supervision, unrelated to brief content.git checkout ed376cf -- bin/fm-brief.sh tests/fm-brief.test.sh): still fails, with the identical assertion and identical output.The failure therefore tracks the checkout environment, not this change. It is a pre-existing environment-specific failure, not a regression introduced here.