fix: tighten worker status protocol - #120
Merged
Merged
Conversation
…livery-contract tests pass
…ery-contract tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
The captain, 2026-09-08, after seeing that 114 of 231 firstmate turns today were monitoring notifications: "Turn off the per-status doorbells for progress lines: workers should append only phase changes. Several briefs today still produced chatty status." and "are we done with these -? if not get it going". Existing backlog item (2026-08-24): tighten generated brief status wording: working = phase change only, no pre-pipeline done, no resolved echo. Evidence from today: workers appended working: lines for sub-steps ("local validation passed at 1440 and 390", "committed fix round 2 successfully and started re-review", "assembling doors 2 and 3 locally"), a done: line before the no-mistakes pipeline had run (fm-codex-max-effort-f1 "done: committed ... lint and both focused test files pass"), and resolved echoes of firstmate's own steers.
What Changed
working:rules, and bans on sub-step progress and resolved steer echoes.donefollows green pipeline results, while scout completion requires a completed report.Risk Assessment
✅ Low: Captain, the changed generated contracts consistently enforce phase-only working updates, prohibit pre-pipeline done signals, and carry the no-resolved-echo rule through promotion.
Testing
Focused automated tests, end-to-end brief generation, and promoted-scout handoffs all exercised the requested status protocol. Evidence confirms phase-only working rules, mode-specific phases, no resolved echoes, and no pre-pipeline done event.
Evidence: Generated brief and promoted-scout CLI transcript
Source: Generated brief and promoted-scout CLI transcript
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed (3) ✅
bin/fm-brief.sh:465- The generated scout brief saysworking:is valid forPR openedandimplementation committed and validation startedat bin/fm-brief.sh, while the same scout contract is report-only and forbids pushing or opening a PR at lines 454-455. An unpromoted scout can therefore emit a false or forbidden phase. Render scout-specific phases, or explicitly condition ship-only phases on promotion.🔧 Fix: Captain: scout working phases narrowed to research/report only
2 issues (1 error, 1 warning) still open:
bin/fm-brief.sh:465- The narrowed scout contract at this line is still carried into promoted ship tasks:bin/fm-promote.sh:216says the original status protocol remains unchanged. A scout promoted to--mode no-mistakestherefore still seesworking:limited to investigation/research/report phases and has no permittedworking: implementation committed and validation startedphase. Render the mode-specific ship status protocol in the promotion handoff instead of carrying the scout protocol.bin/fm-brief.sh:549- This shared ship wording allowsworking: ... PR openedfor every mode, while--mode local-onlyexplicitly forbids opening a PR inbin/fm-dod-lib.sh:195. The generated local-only contract is internally contradictory; make the allowed working phases conditional on the selected delivery mode.🔧 Fix: Captain: mode-specific status handoffs fixed; delivery-contract tests pass
1 error still open:
bin/fm-promote.sh:221- The authoritative intent requires “no resolved echo,” specifically preventing “resolved echoes of firstmate’s own steers.” The promotion handoff only says the inbox rules carry over unchanged and injects wake/working rules; it does not deliver the new prohibition. Promotion sends onlyship-instructions.md, so a legacy scout brief can be promoted while still permitting aresolved:echo. Include this rule in the promotion payload.🔧 Fix: Captain: promotion payload fix verified by delivery-contract tests
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
bin/fm-test-run.sh --changed --exclude-family real-herdr-gatedtests/fm-brief.test.shtests/fm-task-delivery.test.shExecutor baseline:bin/fm-test-run.sh --changed --exclude-family real-herdr-gatedManualbin/fm-brief.shgeneration for all ship modes and scout modeManualbin/fm-promote.shpromotion for all three ship modesFinalgit statusand transient-artifact cleanup check✅ **Document** - passed
✅ No issues found.
🔧 **Lint** - 1 issue found → auto-fixed ✅
🔧 Fix: Suppress intentional SC2016 literal-backtick warnings
✅ Re-checked - no issues remain.
✅ **Push** - passed
✅ No issues found.