Skip to content

feat(bin): add a token-efficiency work policy to the owner contract and ship briefs - #1971

Open
Andy7596183 wants to merge 10 commits into
kunchenguid:mainfrom
Andy7596183:fm/firstmate-token-efficiency-policy-h4
Open

feat(bin): add a token-efficiency work policy to the owner contract and ship briefs#1971
Andy7596183 wants to merge 10 commits into
kunchenguid:mainfrom
Andy7596183:fm/firstmate-token-efficiency-policy-h4

Conversation

@Andy7596183

Copy link
Copy Markdown

Intent

Codify a small, durable Firstmate policy for token-efficient work that never weakens intelligence, reasoning, accepted scope, evidence, validation, or safety. Inspect existing authoritative contracts first and patch their owner language rather than appending a parallel policy or duplicating rules already present. The policy must apply across project tasks and supported worker runtimes without depending on one model vendor or an optional plugin. Save tokens by eliminating duplicated work, irrelevant raw context, and repeated evidence collection, not by lowering the task-appropriate model or effort solely to conserve quota. Preserve direct user requirements, authoritative source material, durable decisions, and necessary targeted rereads; never rely on a lossy summary when an exact source is required to act safely or correctly. During implementation and correction loops, group related fixes and prefer the smallest focused checks that establish changed behavior before rerunning broader suites. The selected delivery path remains authoritative: required final tests, documentation, review, no-mistakes gates, PR checks, and CI may never be skipped, narrowed, or replaced for token savings. Do not commission optional duplicate reviewers or repeat an already-answered investigation unless the captain explicitly requested that deliverable or new evidence could materially change the outcome. Do not restart, duplicate, or supersede an active validation run to save tokens; preserve its fixes and drive its current gate. Keep independent ready work moving, but do not create redundant parallel work on the same deliverable. This is an instruction-policy change, not new machinery: do not add wrappers, hooks, daemons, background processes, model routers, token counters, custom verifiers, or new runtime state. Do not change watcher, supervision, dispatch, no-mistakes, merge-authority, approval, worktree, recovery, destructive-action, or security-sensitive contracts. Preserve automatic no-mistakes and green-merge behavior, routine yolo decision authority, required captain boundaries, and true semantic dependency handling. Keep the always-loaded addition concise. Use the documentation audience inventory and one-owner rule to place supporting prose; do not create a new skill without a genuine conditional trigger. Validate the complete final diff for contradictory or duplicate rules. Run bin/fm-doc-audience-check.sh and every existing relevant documentation/instruction check. Do not add source-text assertion tests. Commit the minimal coherent change, run the full no-mistakes path, and report the green PR URL. Do not create a standalone HTML summary.

What Changed

  • AGENTS.md: folded token-efficiency rules into the existing owner clauses instead of a parallel section — savings must come from eliminating duplicated work, irrelevant raw context, and repeated evidence collection, never from weakening accepted scope, reasoning, evidence, validation, or safety; model and effort are chosen from the accepted work and dispatch evidence and never lowered to conserve quota; the selected delivery path's required final tests, docs, review, no-mistakes gates, PR checks, and CI can't be skipped, narrowed, or replaced; an active validation run can't be restarted, duplicated, or superseded for token savings; and dispatch may not create redundant parallel work on the same deliverable.
  • bin/fm-brief.sh: generated ship briefs now carry a worker-owned iteration rule (rule 8) to group related fixes behind the smallest focused checks that establish the changed behavior before rerunning broader suites, explicitly bounded so it ends when the mode's required final checks begin and never narrows the Definition of done; the script header documents the same rule.
  • bin/fm-promote.sh: the promotion handoff hint relays that mode-neutral loop guidance to a promoted scout, whose original brief never contained it. Tests assert the guidance appears in all three ship-mode briefs and in the promotion hint, and that the hint's payload stays safe under its own single quoting.

Risk Assessment

✅ Low: Instruction-policy-only change: five net lines of always-loaded prose plus mode-neutral guidance in two generated interfaces, with no new machinery, no runtime state, every intent criterion traceable to a specific line, the earlier out-of-scope quota-array-dispatch edit fully reverted to base, and new assertions that exercise emitted output rather than implementation source.

Testing

Ran the documentation-audience check and the targeted tests covering both changed scripts (fm-brief, fm-task-delivery, fm-documentation-audiences, fm-ask-user-authority, fm-tangle-guard, fm-secondmate-safety, fm-subagent-pretool-check) — all pass — then went past the unit assertions and exercised the real surfaces: generated actual ship briefs for all three delivery modes plus a scout, confirming the new grouped-fix/focused-check rule renders with its "never narrows your Definition of done" boundary in every ship mode and is absent from the scout brief, and ran the scout-to-ship promotion end-to-end, shell-parsing and executing its emitted handoff command against a stub fm-send.sh to prove the relayed instructions reach the promoted crewmate as one intact argument. No rendered UI exists in this change (it edits AGENTS.md prose and two bash scripts that emit agent instruction text), so evidence is the generated brief and executed CLI transcripts rather than screenshots. Transient temp state was removed and the worktree is clean; no findings.

Evidence: Generated crewmate ship brief (no-mistakes mode) carrying the new rule 8
You are a crewmate: an autonomous worker agent managed by firstmate. Work on your own; do not wait for a human.

# Task
{TASK}

# Herdr lifecycle declaration - NOT ENABLED
**HARD SAFETY GATE:** this scaffold cannot inspect the task text that replaces `{TASK}` later.
If the task will start, stop, delete, restart, profile, or otherwise drive Herdr lifecycle behavior, stop and regenerate the brief with `--herdr-lab` before dispatch.
Do not add Herdr lifecycle commands to this unguarded brief by hand.

# Setup
You are in a disposable git worktree of some-proj, at a detached HEAD on a clean default branch.

**Verify isolation before anything else.** Run `pwd -P` and `git rev-parse --show-toplevel`; both must resolve to the disposable task worktree you were launched in, such as a treehouse pool path or an Orca-managed worktree, not the primary checkout firstmate operates from.
The path check is authoritative: `git rev-parse --git-dir` and `git rev-parse --git-common-dir` can help inspect the repo, but they do not prove you are outside the primary checkout.
If the top-level path is the primary checkout or not the worktree you were launched in, STOP - do not branch or commit here - append `blocked: launched in primary checkout, not an isolated worktree` to the status file and stop.

1. First action: create your branch: `git checkout -b fm/demo-no-mistakes`
2. Run `no-mistakes doctor`; if it reports the repo is not initialized here, run `no-mistakes init`.

# Rules
1. Never push to the default branch. Never merge a PR.
2. Stay inside this worktree; modify nothing outside it.
3. Use gh-axi for GitHub operations and chrome-devtools-axi for browser operations.
4. Report status by appending one line:
   `echo "{state}: {one short line}" >> '/var/folders/rc/mqjhh21s1zs8j8l54gtwm7c40000gn/T//fm-evidence.ENSbgL/home/state/demo-no-mistakes.status'`
   States: working, needs-decision, blocked, paused, done, failed.
   Each append wakes firstmate, so report sparingly: only phase changes a supervisor
   would act on (setup done, bug reproduced, fix implemented, validation passed) and the
   needs-decision/blocked/paused/done/failed states. No step-by-step FYI progress lines;
   firstmate reads your pane for that.
   A mid-task `working:` line (including setup complete) is nonterminal: do not end the
   turn after it; continue the same stage until a defined `done:` gate under Definition of done.
   Use `paused: {why}` - distinct from `blocked:` - ONLY when you are deliberately idling on a
   known external wait you expect to clear on its own (an upstream release, a rate-limit reset,
   a scheduled window): firstmate then leaves your idle pane alone and rechecks it on a long
   cadence instead of treating it as a possible wedge. Use `blocked:` when you are stuck and need help.
5. If you hit the same obstacle twice, append `blocked: {why}` and stop; firstmate will help.
6. If a decision belongs above the implementation worker (product choices, destructive actions, ask-user findings),
   append `needs-decision: {summary of options}` and stop. Firstmate will apply the configured authority and reply with the decision.
   A decision or blocker you opened stays open until a `resolved` line carrying its exact key lands; a later `done:` or `working:` line never closes it, even when the answer is what started that work.
   Firstmate's reply normally writes that closing line at answer time; when a blocker or wait clears WITHOUT a firstmate reply, append `resolved: {how it cleared}` yourself (same `[key=<slug>]` if you opened it with one) as you resume.
7. Never stop, restart, or update the shared `no-mistakes` daemon - it is one instance serving
   every lane/home, so restarting it kills other lanes' in-flight pipeline runs. On ANY no-mistakes
   daemon error, append `blocked: {the daemon error}` and stop; only firstmate manages the daemon.
8. While the change is still yours to edit, group related fixes and run the smallest focused checks that
   establish the changed behavior before rerunning broader suites. This ordering ends when this mode's
   required final checks begin, and it never narrows what your Definition of done requires.

# Project memory
If `AGENTS.md` or `CLAUDE.md` already exists, or if this task produced durable project-intrinsic knowledge, run `/Users/johndoe/.no-mistakes/worktrees/49d49de89cf6/01KZHG6P67N6CP1MBKZ3XD99NK/bin/fm-ensure-agents-md.sh .` in the worktree.
Record only project knowledge useful to almost every future session.
For anything the codebase already shows, prefer a pointer to the authoritative file, command, or doc over copying the detail.
If you touch a project `AGENTS.md` that lacks `## Maintaining this file`, add that short self-governance section from `/Users/johndoe/.no-mistakes/worktrees/49d49de89cf6/01KZHG6P67N6CP1MBKZ3XD99NK/bin/fm-ensure-agents-md.sh` in the same pass.
Keep it proportionate: skip `AGENTS.md` edits for trivial tasks that produced no durable project knowledge.

# Definition of done
Delivery contract: mode=no-mistakes
The task is complete only when committed on your branch.
When you believe it is complete, append `done: {summary}` to the status file and stop.
Firstmate will then instruct you to run /no-mistakes to validate and ship a PR.

You drive no-mistakes by responding to its gates, not by implementing fixes.
Follow the guidance no-mistakes itself provides for the mechanics: it loads when you invoke /no-mistakes, and `no-mistakes axi run --help` plus the `help` lines in each `axi` response are authoritative and version-matched to the installed binary.
When starting no-mistakes, make `--intent` preserve all relevant content from this brief's `# Task` section plus every later accepted Firstmate requirement, clarification, constraint, exclusion, and supersession, carrying only each requirement's current accepted form; retain direct requirements instead of substituting a diff summary, and exclude generic operational, status, delivery, and other scaffold boilerplate unless it is task-specific.
Do not hand-edit, commit, or fix findings yourself while a run is active - the pipeline applies every fix.

Two firstmate-specific rules layer on top of that guidance:
- ask-user findings are never yours to answer: escalate to firstmate (rule 6) and stop.
  Firstmate applies the authority contract in its `AGENTS.md` and obtains any required captain decision.
  When the decision comes back, feed it to the gate with `no-mistakes axi respond` and let the pipeline apply it - do not route the question to "the user" or implement the fix yourself.
- Avoid `--yes`: it would silently bypass firstmate's authority check and any required captain escalation.

After /no-mistakes reports CI green (the CI-ready return point - do not wait for it to keep monitoring in the background until merge), append `done: PR {url} checks green` and stop. You are finished.
Evidence: New brief rule as rendered in all three ship modes (and absent from the scout brief)

===== mode=no-mistakes : tail of the # Rules section ===== 8. While the change is still yours to edit, group related fixes and run the smallest focused checks that establish the changed behavior before rerunning broader suites. This ordering ends when this mode's required final checks begin, and it never narrows what your Definition of done requires. (identical rule 8 renders for mode=direct-PR and mode=local-only) ===== --scout ===== rule-8 lines in scout brief: 0

Generated crewmate ship briefs - bin/fm-brief.sh <id> some-proj --mode <mode>
The new worker-loop rule is what an implementation crewmate actually receives.

===== mode=no-mistakes : tail of the # Rules section =====
8. While the change is still yours to edit, group related fixes and run the smallest focused checks that
   establish the changed behavior before rerunning broader suites. This ordering ends when this mode's
   required final checks begin, and it never narrows what your Definition of done requires.


===== mode=direct-PR : tail of the # Rules section =====
8. While the change is still yours to edit, group related fixes and run the smallest focused checks that
   establish the changed behavior before rerunning broader suites. This ordering ends when this mode's
   required final checks begin, and it never narrows what your Definition of done requires.


===== mode=local-only : tail of the # Rules section =====
8. While the change is still yours to edit, group related fixes and run the smallest focused checks that
   establish the changed behavior before rerunning broader suites. This ordering ends when this mode's
   required final checks begin, and it never narrows what your Definition of done requires.


===== --scout : no rule 8 (a scout has no delivery contract yet) =====
rule-8 lines in scout brief: 0
Evidence: Scout to ship promotion handoff executed end-to-end

$ FM_HOME=<home> bin/fm-promote.sh demo-scout --mode no-mistakes --yolo on promoted demo-scout to ship mode=no-mistakes yolo=on (teardown protection restored) next: FM_HOME=<home> bin/fm-send.sh fm-demo-scout '<ship instructions for mode=no-mistakes: ... implement, grouping related fixes and running the smallest focused checks that establish the changed behavior before rerunning broader suites; that ordering ends when the final checks this delivery mode requires begin, and never narrows the definition of done; report done>' task record after promotion: window=fm-demo-scout / kind=ship / mode=no-mistakes / yolo=on The captain runs that emitted command. Executed here against a stub fm-send.sh: fm-send.sh received argc=2 arg1 (window) = fm-demo-scout arg2 = the full ship instructions above, delivered intact as a single argument

Scout -> ship promotion handoff, end to end (bin/fm-promote.sh)

$ FM_HOME=<home> bin/fm-promote.sh demo-scout --mode no-mistakes --yolo on
promoted demo-scout to ship mode=no-mistakes yolo=on (teardown protection restored)
next: FM_HOME=/var/folders/rc/mqjhh21s1zs8j8l54gtwm7c40000gn/T//fm-evidence.ENSbgL/promote-home bin/fm-send.sh fm-demo-scout '<ship instructions for mode=no-mistakes: review scratch state with git status and git log; reset to a clean default-branch base; carry over only intended fix changes; create branch fm/demo-scout; implement, grouping related fixes and running the smallest focused checks that establish the changed behavior before rerunning broader suites; that ordering ends when the final checks this delivery mode requires begin, and never narrows the definition of done; report done>'

task record after promotion:
  window=fm-demo-scout
  worktree=/tmp/wt
  kind=ship
  mode=no-mistakes
  yolo=on

The captain runs that emitted command. Executed here against a stub fm-send.sh:
fm-send.sh received argc=2
  arg1 (window) = fm-demo-scout
  arg2 (message delivered to the promoted crewmate):
    | <ship instructions for mode=no-mistakes: review scratch state with git status and git log; 
    | reset to a clean default-branch base; carry over only intended fix changes; create branch 
    | fm/demo-scout; implement, grouping related fixes and running the smallest focused checks that 
    | establish the changed behavior before rerunning broader suites; that ordering ends when the 
    | final checks this delivery mode requires begin, and never narrows the definition of done; 
    | report done>
  FM_HOME seen by fm-send = /var/folders/rc/mqjhh21s1zs8j8l54gtwm7c40000gn/T//fm-evidence.ENSbgL/promote-home
Evidence: AGENTS.md policy sentences shown under the owner sections they were patched into

[## 4. Harness and runtime dispatch] AGENTS.md:190 - task-appropriate model/effort, never lowered solely to conserve tokens or quota [### Intake and authority] AGENTS.md:263-265 - save tokens by removing duplicated work/irrelevant context/repeated evidence; preserve requirements, sources, durable decisions, targeted rereads; grouped fixes behind smallest focused checks for direct work [### Intake and authority] AGENTS.md:283 - no redundant parallel work for the same deliverable [### Selected delivery path and approval authority] AGENTS.md:302 - token savings never skip/narrow/replace required final tests, docs, review, gates, PR checks, or CI [### Validate] AGENTS.md:329 - token savings never authorize restarting/duplicating/superseding an active validation run AGENTS.md total lines: 562 (net +7)

AGENTS.md is the always-loaded firstmate instruction surface (CLAUDE.md is a symlink to it).
Each policy sentence this change adds, shown under the owner section it was patched into:

[## 4. Harness and runtime dispatch]  AGENTS.md:190
  Choose the task-appropriate model and effort from the accepted work and dispatch evidence; never lower either solely to conserve tokens or quota.

[### Intake and authority]  AGENTS.md:263
  Save tokens by eliminating duplicated work, irrelevant raw context, and repeated evidence collection, never by weakening accepted scope, necessary reasoning, evidence, validation, or safety.

[### Intake and authority]  AGENTS.md:264
  Preserve direct user requirements, authoritative source material, and durable decisions, and perform necessary targeted rereads; never substitute a lossy summary when the exact source is required to act safely or correctly.

[### Intake and authority]  AGENTS.md:265
  When firstmate or a secondmate implements or corrects work directly under section 1's existing exceptions, group related fixes and run the smallest focused checks that establish the changed behavior before rerunning broader suites; that ordering ends when the delivery path's required final checks begin and never narrows them.

[### Intake and authority]  AGENTS.md:283
  Treat file or subsystem overlap as a risk signal rather than an automatic reason to wait, and dispatch isolated work immediately with no concurrency cap when each change can be independently implemented and validated and the selected delivery path can reconcile ordinary rebases or conflicts, but never dispatch redundant parallel work for the same deliverable.

[### Selected delivery path and approval authority]  AGENTS.md:302
  The selected delivery path owns its own rigor; token savings never skip, narrow, or replace its required final tests, documentation, review, no-mistakes gates, PR checks, or CI.

[### Validate]  AGENTS.md:329
  Token or quota savings alone never authorize restarting, duplicating, or superseding an active validation run; apart from the supersession sequence below, preserve that run's own pipeline fixes and drive its current gate.

AGENTS.md total lines: 562 (net +7 from this change)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

🔧 **Review** - 3 issues found → auto-fixed (3) ✅
  • ℹ️ AGENTS.md:325 - Commit 71bb97d removed the always-loaded copy of the focused-check loop rule ("Within each delivery-path owner's implementation and correction loops, group related fixes and run the smallest focused checks...") from the Validate section, leaving it only in generated ship briefs (bin/fm-brief.sh:454) and the scout-promotion hint (bin/fm-promote.sh:89). That covers crewmates doing project tasks, which is what the intent's "across project tasks and supported worker runtimes" asks for, but AGENTS.md:40 explicitly authorizes firstmate to change shared tracked material directly when the fleet is empty, and secondmates read AGENTS.md rather than a generated brief. Those actors run their own implementation and correction loops and no longer see the rule anywhere. Confirm the narrowing to crewmate briefs is intended, or restore a one-clause owner sentence for the firstmate/secondmate path.
  • ℹ️ bin/fm-brief.sh:454 - Ship-brief rule 8 says "While implementing and correcting your own work, group related fixes and run the smallest focused checks..." with no scoping to the pre-validation phase. In no-mistakes mode the same brief later states "Do not hand-edit, commit, or fix findings yourself while a run is active - the pipeline applies every fix" (bin/fm-brief.sh:394), and AGENTS.md:345 treats a worker fixing/committing during an active run as duplicated pipeline ownership. Rule 8's guard only protects the Definition of done from being narrowed; it does not say when the loop applies, so a worker mid-pipeline could read a prominent numbered rule as sanction to batch its own fixes. The promotion handoff has the same gap. Scoping the clause (e.g. "while implementing, before validation starts") would close it.
  • ℹ️ AGENTS.md:281 - "Keep independent ready work moving" restates the rule stated in full on the very next line ("dispatch isolated work immediately with no concurrency cap when each change can be independently implemented and validated..."). The only new normative content in the added line is "never dispatch redundant parallel work for the same deliverable," which could be appended to the existing owner sentence instead of adding a line. Given the intent's "Keep the always-loaded addition concise" and "patch their owner language rather than appending a parallel policy or duplicating rules already present," the duplicated clause is worth folding in.

🔧 Fix: Restore owner loop clause and scope pre-validation guidance
2 issues (1 warning, 1 info) still open:

  • ⚠️ .agents/skills/quota-array-dispatch/SKILL.md:92 - Fix round 71bb97d deleted "rather than downgrading it to conserve quota" from selection-order step 3 of the quota-array-dispatch skill. The intent says "Do not change watcher, supervision, dispatch, no-mistakes, ... contracts," and AGENTS.md:193 names this skill "the single owner of the completion-aware selection procedure" - so this is an edit to a dispatch contract. It is also out of scope for the change: the author's own commit (44cf86a) never touched this file, and the duplication being removed was pre-existing, not introduced here. The behavior has a dedicated eval case named for it (tests/fm-quota-array-dispatch-live-e2e.test.sh:103, "required strongest reasoning class is not downgraded for quota"), and docs/verification/dispatch-auth.md:178 lists "the strongest-reasoning constraint" as covered regression surface; removing the only clause in the step that names the quota motive weakens the signal that case exercises. Mitigating: the prohibition is still implied by SKILL.md:89 ("Never use headroom, runway, pace, or reserve to silently replace that reasoning class"), step 3's first sentence, and AGENTS.md:190. Either restore the clause or confirm the dispatch-contract edit is intended.
  • ℹ️ AGENTS.md:264 - The restored owner clause opens "When firstmate or a secondmate implements or corrects work directly, ..." without naming the narrow authority that makes that premise legal. Every other place in this file that contemplates firstmate touching code anchors it explicitly - AGENTS.md:54, :88, and :221 all say "hard rule 1's concrete captain-approved project operation exception," and AGENTS.md:40 scopes the other case to "when the fleet is empty, firstmate may change [shared tracked material] directly." AGENTS.md:16-17 and hard rule 1 ("Never write to a project") are the top-priority rules of the document. A conditional clause is not an authority grant, so this is not a contradiction, but in an always-loaded rule file read by an agent it normalizes the premise without the guardrail the rest of the file consistently attaches. Anchoring it (e.g. "When firstmate or a secondmate implements or corrects work directly under section 1's exceptions, ...") costs a few words and matches the established convention.

🔧 Fix: Restore dispatch clause and anchor direct-work loop guidance
2 infos still open:

  • ℹ️ AGENTS.md:190 - The intent requires token savings "not by lowering the task-appropriate model or effort solely to conserve quota" as an unconditional rule. The author's commit 44cf86a wrote it that way ("Choose the task-appropriate model and effort from the accepted work and dispatch evidence; never lower either solely to conserve tokens or quota"), but the pipeline's consolidation commit 5bd2921 deleted that sentence and folded its content into the pre-existing tight-candidate sentence, which is guarded by "When every candidate is tight". As a result the concrete model/effort anti-downgrade rule now only fires inside a tight quota-array selection; an ordinary dispatch that picks a cheaper model or lower effort while quota is plentiful is no longer covered by section 4 language. AGENTS.md:194 selects effort by task nature but never forbids a token-motivated downgrade, and AGENTS.md:262's "never by weakening ... necessary reasoning" is the only remaining general coverage. Confirm the tight-candidate scoping is intended, or restore the unconditional phrasing (e.g. drop the tight-case guard from the model/effort half, or name model and effort in AGENTS.md:262).
  • ℹ️ bin/fm-brief.sh:454 - Rule 8 is emitted into the shared ship-brief rules block, so it reaches all three delivery modes, but its scoping term "Before validation starts" only has a referent in no-mistakes mode. The direct-PR Definition of done (bin/fm-brief.sh:364) says "Do NOT run /no-mistakes" and the local-only one (bin/fm-brief.sh:373) says "no remote, no PR, no pipeline", and neither block uses the word validation - so for those workers the condition never becomes false and the clause reads as standing guidance right through their final pre-push checks. bin/fm-promote.sh:89 carries the same phrasing ("apply only before validation starts") into a hint whose --mode may be direct-PR or local-only. Mitigating: the clause is an ordering rule that presumes "rerunning broader suites", and the second sentence still protects the Definition of done, so nothing is authorized to be skipped. Consider a mode-neutral phrasing (e.g. "while implementing, before you hand the change to this mode's final checks") or omitting rule 8 from the non-pipeline modes.

🔧 Fix: Restore unconditional model/effort rule, make loop boundary mode-neutral
✅ Re-checked - no issues remain.

✅ **Test** - passed

✅ No issues found.

  • bin/fm-doc-audience-check.sh (ok surfaces=65 local_links=214)
  • bin/fm-test-run.sh tests/fm-brief.test.sh tests/fm-task-delivery.test.sh tests/fm-documentation-audiences.test.sh
  • bin/fm-test-run.sh tests/fm-ask-user-authority.test.sh tests/fm-tangle-guard.test.sh tests/fm-secondmate-safety.test.sh tests/fm-subagent-pretool-check.test.sh (all remaining consumers of bin/fm-brief.sh and bin/fm-promote.sh)
  • Manual: generated real briefs with FM_HOME=&lt;tmp&gt; bin/fm-brief.sh demo-&lt;mode&gt; some-proj --mode no-mistakes|direct-PR|local-only and --scout, then read the rendered # Rules section a crewmate receives
  • Manual: FM_HOME=&lt;tmp&gt; FM_STATE_OVERRIDE=&lt;tmp&gt;/state bin/fm-promote.sh demo-scout --mode no-mistakes --yolo on end-to-end, inspecting the resulting .meta record
  • Manual: bash -n on the emitted next: command, then executed it via eval against a stub bin/fm-send.sh to confirm the ship instructions arrive as one intact argument (argc=2)
  • Manual: extracted each new AGENTS.md sentence with its enclosing section heading to confirm owner-section placement instead of a parallel policy block
  • bin/fm-test-run.sh --list --changed --base 833a9a2 to scope the relevant test set
⚠️ **Document** - 1 info
  • ℹ️ AGENTS.md:265 - Duplicate-rule validation over the final diff: AGENTS.md:265 ends the interim grouped-fix ordering at "the delivery path's required final checks" and AGENTS.md:302 states the delivery path's own rigor rule enumerating those gates. I judged this a deliberate boundary clause at the intake owner rather than a second copy of the delivery-path contract (each is operative in its own section, and the loop rule is unsafe without its boundary), so I left both. Flagging it as the one near-overlap the diff contains, in case a later consolidation pass wants the boundary reduced to a bare cross-reference to the delivery-path section.
✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant