Skip to content

feat(bin): carry standing worker rules in generated fm-brief scaffolds - #1395

Open
sbracewell64 wants to merge 3 commits into
kunchenguid:mainfrom
sbracewell64:fm/brief-conflict-resolution-rule
Open

feat(bin): carry standing worker rules in generated fm-brief scaffolds#1395
sbracewell64 wants to merge 3 commits into
kunchenguid:mainfrom
sbracewell64:fm/brief-conflict-resolution-rule

Conversation

@sbracewell64

Copy link
Copy Markdown

Intent

Put the captain-approved standing worker rules for delegated branch conflict resolution and verification discipline where workers actually read them: the generated fm-brief scaffold and the firstmate-coding-guidelines skill. Branch-shipping briefs must require autonomous rebase/conflict resolution at any file count when intent is clear, with base changes retained where the branch made no deliberate change, branch contributions reapplied, all prior pipeline fix commits preserved, and only genuinely ambiguous intent escalated to firstmate, never the captain. Any variant that may run verification must require a witnessed negative control before trusting success-by-absence checks and must wait on completion artifacts rather than process names, treating a missing expected artifact at collection as failure. Ship briefs carry both rules; scout and secondmate variants carry verification only because they do not directly ship branches. Keep generated prose terse, state the measured ship-scaffold byte delta and generated output plus variant rationale in the PR body, carry the same rules in the coding skill by reference where cleaner, and make documentation/contract-text changes only with no runtime guard or enforcement code.

What Changed

  • bin/fm-brief.sh emits two new heredoc sections into generated briefs: # Verification discipline (witness a negative control fail before trusting success-by-absence, wait on completion artifacts rather than process names, treat a missing artifact at collection as failure) and # Branch conflict resolution (rebase and resolve branch/base conflicts autonomously at any file count when intent is clear — keep base where the branch made no deliberate change, reapply branch contributions, preserve every prior pipeline fix commit, escalate only genuinely ambiguous intent to firstmate, never the captain). Verification discipline is interpolated into ship, scout, and secondmate scaffolds; branch conflict resolution only into ship, since scout and secondmate never ship a branch directly. The no-mistakes Definition of done gains a one-line carve-out naming the delegated rebase as the exception to "do not hand-edit or commit while a run is active", and the script header/--help documents both new sections.
  • Measured generated-output growth with path lengths held constant: the no-mistakes ship brief goes 5714 → 6596 bytes (+882, the extra 162 over other ship modes being the delegated-rebase carve-out), direct-PR 4652 → 5372 and local-only 4862 → 5582 (+720 each), scout 3479 → 3829 and secondmate 5434 → 5784 (+350 each, verification discipline only). Section-presence matrix over the generated briefs confirms the intended variant split and zero captain-escalation text.
  • Contract text only — no runtime guard or enforcement code was added. AGENTS.md notes the delegated-rebase exception to its worker-validation rule, and .agents/skills/firstmate-coding-guidelines/SKILL.md points at the two generated sections by reference rather than restating them. tests/fm-brief.test.sh adds test_standing_worker_rules_by_variant, pinning presence/absence of each section per variant plus the individual rule lines, and extends the --help header test to cover the new documentation lines.

Risk Assessment

✅ Low: Documentation and contract-text only (102 added lines across a scaffold's generated prose, its --help header, and a new behavior test) with no runtime guard or enforcement code, all three prior findings resolved, the rule-vs-DOD contradiction now explicitly carved out and pinned by tests, and every source-verifiable acceptance criterion satisfied.

Testing

Ran the targeted fm-brief and documentation-audiences suites (all pass), then generated real briefs from both the base and target commits and diffed them to show what a worker actually reads: ship variants (no-mistakes, direct-PR, local-only, herdr-lab) gain both the branch-conflict-resolution and verification-discipline sections, scout and secondmate variants gain verification discipline only, and the no-mistakes definition-of-done gains the delegated-rebase carve-out while direct-PR correctly does not. Rule wording matches every required constraint and no brief escalates to the captain; measured ship-scaffold growth is +882 bytes for no-mistakes and +720 for other ship modes (verification 350 B + conflict 370 B + 162 B carve-out), with scout and secondmate at +350. The change is documentation/contract text only — no runtime guard or enforcement code was added. No screenshots apply: the end-user surface here is generated markdown brief text and CLI --help output, both captured verbatim as artifacts.

Evidence: Generated ship brief diff (base → head, no-mistakes mode) — shows both new sections and the delegated-rebase carve-out as the worker reads them

+# Branch conflict resolution +Rebase and resolve branch/base conflicts yourself whenever intent is clear, at any file count: keep the base wherever this branch made no deliberate change, reapply this branch's contributions on top, and preserve every prior pipeline fix commit through the rebase. +Escalate only genuinely ambiguous intent to firstmate, never the captain. + +# Verification discipline +- Before trusting success reported only by absence - an empty violations log, no output, or no failures - run a negative control and watch it fail, then run the real check. +- Wait on completion artifacts, never process names. + At collection time, report a missing expected artifact as failure, not as a job still running. ... (Definition of done) +The one exception is a rebase the pipeline hands back to you: resolve and commit it under # Branch conflict resolution above, then return to driving the gates.

--- home-base/data/ship-nomistakes/brief.md	2026-07-31 11:01:44.553240860 -0400
+++ home-head/data/ship-nomistakes/brief.md	2026-07-31 11:02:05.552938379 -0400
@@ -23,7 +23,7 @@
 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}" >> 'home-base/state/ship-nomistakes.status'`
+   `echo "{state}: {one short line}" >> 'home-head/state/ship-nomistakes.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
@@ -43,11 +43,20 @@
    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.
 
+# Branch conflict resolution
+Rebase and resolve branch/base conflicts yourself whenever intent is clear, at any file count: keep the base wherever this branch made no deliberate change, reapply this branch's contributions on top, and preserve every prior pipeline fix commit through the rebase.
+Escalate only genuinely ambiguous intent to firstmate, never the captain.
+
+# Verification discipline
+- Before trusting success reported only by absence - an empty violations log, no output, or no failures - run a negative control and watch it fail, then run the real check.
+- Wait on completion artifacts, never process names.
+  At collection time, report a missing expected artifact as failure, not as a job still running.
+
 # Project memory
-If `AGENTS.md` or `CLAUDE.md` already exists, or if this task produced durable project-intrinsic knowledge, run `root-base/bin/fm-ensure-agents-md.sh .` in the worktree.
+If `AGENTS.md` or `CLAUDE.md` already exists, or if this task produced durable project-intrinsic knowledge, run `root-head/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 `root-base/bin/fm-ensure-agents-md.sh` in the same pass.
+If you touch a project `AGENTS.md` that lacks `## Maintaining this file`, add that short self-governance section from `root-head/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
@@ -58,6 +67,7 @@
 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.
 Do not hand-edit, commit, or fix findings yourself while a run is active - the pipeline applies every fix.
+The one exception is a rebase the pipeline hands back to you: resolve and commit it under `# Branch conflict resolution` above, then return to driving the gates.
 
 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.
Evidence: Variant coverage matrix over 8 generated briefs + captain-escalation leak check

VARIANT KIND #BranchConflict #Verification RebaseCarveOut ship-nomistakes ship PRESENT PRESENT PRESENT ship-directpr ship PRESENT PRESENT absent ship-localonly ship PRESENT PRESENT absent ship-herdr ship PRESENT PRESENT PRESENT scout-demo scout absent PRESENT absent scout-herdr scout absent PRESENT absent secondmate-demo secondmate absent PRESENT absent secondmate-projects secondmate absent PRESENT absent captain-escalation leak check (must be 0 hits across all generated briefs): 0

VARIANT                  KIND       #BranchConflict #Verification  RebaseCarveOut
ship-nomistakes          ship       PRESENT        PRESENT        PRESENT       
ship-directpr            ship       PRESENT        PRESENT        absent        
ship-localonly           ship       PRESENT        PRESENT        absent        
ship-herdr               ship       PRESENT        PRESENT        PRESENT       
scout-demo               scout      absent         PRESENT        absent        
scout-herdr              scout      absent         PRESENT        absent        
secondmate-demo          secondmate absent         PRESENT        absent        
secondmate-projects      secondmate absent         PRESENT        absent        

captain-escalation leak check (must be 0 hits across all generated briefs):
0
Evidence: Measured generated-brief byte delta (identical root/home layout), base f7d0d0a → head 911e248

ship-nomistakes 5883 -> 6765 (+882 bytes) ship-directpr 4825 -> 5545 (+720 bytes) scout-demo 3632 -> 3982 (+350 bytes) secondmate-demo 5513 -> 5863 (+350 bytes) Decomposition: verification discipline 350 B (all variants) + branch conflict resolution 370 B (ship only) + 162 B delegated-rebase carve-out (no-mistakes DOD only).

generated brief byte delta (identical root/home layout), base f7d0d0a -> head 911e248
ship-nomistakes    5883 ->   6765  (+882 bytes)
ship-directpr      4825 ->   5545  (+720 bytes)
scout-demo         3632 ->   3982  (+350 bytes)
secondmate-demo    5513 ->   5863  (+350 bytes)
Evidence: Generated scout brief diff — verification only, no branch conflict section
--- home-base/data/scout-demo/brief.md	2026-07-31 11:01:44.605240810 -0400
+++ home-head/data/scout-demo/brief.md	2026-07-31 11:02:05.597040583 -0400
@@ -19,7 +19,7 @@
 2. Stay inside this worktree; the only files you may write outside it are the report and the status file below.
 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}" >> 'home-base/state/scout-demo.status'`
+   `echo "{state}: {one short line}" >> 'home-head/state/scout-demo.status'`
    States: working, needs-decision, blocked, paused, done, failed.
    Each append wakes firstmate, so report sparingly: only phase changes a supervisor
    would act on and the needs-decision/blocked/paused/done/failed states. No step-by-step
@@ -36,9 +36,14 @@
    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.
 
+# Verification discipline
+- Before trusting success reported only by absence - an empty violations log, no output, or no failures - run a negative control and watch it fail, then run the real check.
+- Wait on completion artifacts, never process names.
+  At collection time, report a missing expected artifact as failure, not as a job still running.
+
 # Definition of done
-Write your findings to `home-base/data/scout-demo/report.md`.
+Write your findings to `home-head/data/scout-demo/report.md`.
 The report must stand alone: what you did, what you found, the evidence (commands run, output, file:line references), and what you recommend.
-Before reporting done, read and follow `root-base/.agents/skills/decision-hold-lifecycle/SKILL.md` and pass its shared completion gate for the report and any visual review.
+Before reporting done, read and follow `root-head/.agents/skills/decision-hold-lifecycle/SKILL.md` and pass its shared completion gate for the report and any visual review.
 When the report is complete, append `done: {one-line conclusion}` to the status file and stop.
 If your findings reveal work that should ship (e.g. you reproduced a bug and the fix is clear), say so in the report; firstmate may promote this task in place, and you would then receive mode-specific ship instructions as a follow-up message.
Evidence: Generated secondmate charter diff — verification only
--- home-base/data/secondmate-demo/brief.md	2026-07-31 11:01:44.625240791 -0400
+++ home-head/data/secondmate-demo/brief.md	2026-07-31 11:02:05.615999613 -0400
@@ -18,6 +18,11 @@
 Act only on tasks the main firstmate routes to you.
 Never start a survey, audit, or "find improvements" sweep on your own initiative; that is not your job and it is unwanted.
 
+# Verification discipline
+- Before trusting success reported only by absence - an empty violations log, no output, or no failures - run a negative control and watch it fail, then run the real check.
+- Wait on completion artifacts, never process names.
+  At collection time, report a missing expected artifact as failure, not as a job still running.
+
 # Requests from the main firstmate
 You are a firstmate in your own home, so an incoming message reaches you in your own chat.
 You must distinguish who it is from, because the answer goes to a different place.
@@ -33,7 +38,7 @@
 # Escalation to main firstmate
 Handle routine work yourself.
 Report only true captain-relevant outcomes or a declared external wait by appending one line:
-   `echo "{state}: {one short line}" >> 'home-base/state/secondmate-demo.status'`
+   `echo "{state}: {one short line}" >> 'home-head/state/secondmate-demo.status'`
 States: working, needs-decision, blocked, paused, done, failed.
 Use `paused: {why}` (distinct from `blocked:`) only when your domain is deliberately idling on a known external wait you expect to clear on its own; use `blocked:` when you are stuck and need firstmate to act.
 Use this only for material phase changes, a captain decision, a real blocker, a failure, or work ready for review.
Evidence: Full generated ship brief (head) as the worker receives it
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 no-registry-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/ship-nomistakes`
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}" >> '/tmp/no-mistakes-evidence/01KYWAEMABYGNJDTEBFECAMCR6/home-head/state/ship-nomistakes.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.
   When firstmate replies or a blocker clears and you resume, append `resolved: {how it was decided or unblocked}` (add the same `[key=<slug>]` if you opened it with one) so the decision or blocker is durably closed and does not keep resurfacing.
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.

# Branch conflict resolution
Rebase and resolve branch/base conflicts yourself whenever intent is clear, at any file count: keep the base wherever this branch made no deliberate change, reapply this branch's contributions on top, and preserve every prior pipeline fix commit through the rebase.
Escalate only genuinely ambiguous intent to firstmate, never the captain.

# Verification discipline
- Before trusting success reported only by absence - an empty violations log, no output, or no failures - run a negative control and watch it fail, then run the real check.
- Wait on completion artifacts, never process names.
  At collection time, report a missing expected artifact as failure, not as a job still running.

# Project memory
If `AGENTS.md` or `CLAUDE.md` already exists, or if this task produced durable project-intrinsic knowledge, run `/tmp/no-mistakes-evidence/01KYWAEMABYGNJDTEBFECAMCR6/root-head/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 `/tmp/no-mistakes-evidence/01KYWAEMABYGNJDTEBFECAMCR6/root-head/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
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.
Do not hand-edit, commit, or fix findings yourself while a run is active - the pipeline applies every fix.
The one exception is a rebase the pipeline hands back to you: resolve and commit it under `# Branch conflict resolution` above, then return to driving the gates.

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: `bin/fm-brief.sh --help` excerpt documenting the generated sections

Every scaffold carries a verification-discipline section: witness a negative control fail before trusting success reported only by absence, and wait on completion artifacts rather than process names. Ship scaffolds additionally carry branch conflict resolution: rebase and resolve branch/base conflicts autonomously at any file count when intent is clear, escalating only genuinely ambiguous intent to firstmate. In no-mistakes mode that delegated rebase is the stated exception to the do-not-commit-while-a-run-is-active rule.

45-self-governance section when a touched project AGENTS.md lacks it.
46:Every scaffold carries a verification-discipline section: witness a negative
47-control fail before trusting success reported only by absence, and wait on
48-completion artifacts rather than process names.
49:Ship scaffolds additionally carry branch conflict resolution: rebase and
50-resolve branch/base conflicts autonomously at any file count when intent is
51-clear, escalating only genuinely ambiguous intent to firstmate. In
52-no-mistakes mode that delegated rebase is the stated exception to the
Evidence: firstmate-coding-guidelines skill section (rule carried by reference)

## Generated worker discipline For firstmate-repo work, the generated # Branch conflict resolution and # Verification discipline sections in bin/fm-brief.sh own the full worker rules. Follow both for branch shipping and verification even if the current task was scaffolded before those sections existed.

## Generated worker discipline

For firstmate-repo work, the generated `# Branch conflict resolution` and `# Verification discipline` sections in [`bin/fm-brief.sh`](../../../bin/fm-brief.sh) own the full worker rules.
Follow both for branch shipping and verification even if the current task was scaffolded before those sections existed.

## Compatibility and enforcement

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

🔧 **Review** - 3 issues found → auto-fixed ✅
  • ⚠️ bin/fm-brief.sh:141 - The new ship-brief rule at bin/fm-brief.sh:141 tells the worker "Rebase and resolve branch/base conflicts yourself whenever intent is clear, at any file count", but the same generated brief's no-mistakes Definition of done (bin/fm-brief.sh:360) states "Do not hand-edit, commit, or fix findings yourself while a run is active - the pipeline applies every fix." A delegated conflict resolution during an active pipeline run is exactly hand-editing and committing while a run is active, so the brief gives the reading agent two opposing instructions for the same moment with no scoping clause. The brief is the sole contract the worker reads, so the ambiguity resolves at runtime by guesswork: one reading stalls on a rebase gate it was told to resolve, the other commits during a run it was told not to touch. A one-clause carve-out (e.g. noting that pipeline-delegated rebases are the exception to the no-commit rule) would remove it without adding prose bulk.
  • ℹ️ bin/fm-brief.sh:46 - fm-brief.sh's header comment is its --help output (rendered by the awk block at lines 53-57) and documents each generated section family it emits - the worktree-isolation assertion at line 36, the project-memory section at lines 42-46, the Herdr contract at lines 24-28. The two new unconditional sections are emitted into every ship, scout, and secondmate brief but are not described there, so --help now understates what the scaffold generates. This also drifts from the coding skill's own tier-7 placement rule (mechanics live in the script header plus --help). Add one line to the header block before line 47's "Refuses to overwrite an existing brief." terminator noting that every scaffold carries the verification-discipline section and ship scaffolds additionally carry branch conflict resolution.
  • ℹ️ tests/fm-brief.test.sh:208 - tests/fm-brief.test.sh asserts the presence of every other generated section per variant - Definition of done and the {TASK} placeholder at lines 208-209, the Herdr contract headings at 292 and 344, the project-memory lines at 275-279, the secondmate status protocol at 407-434. The two new sections have no equivalent assertion in any variant, so a later edit to the heredocs or to the interpolation points (bin/fm-brief.sh:188, :304, :420, :422) can silently drop a captain-approved standing rule from generated briefs with the suite still green. Add assert_grep for "# Verification discipline" in the ship, scout, and secondmate cases, plus assert_grep for "# Branch conflict resolution" in ship and assert_no_grep for it in scout and secondmate, matching the variant split the change deliberately encodes.

🔧 Fix: Scope rebase carve-out, document sections, test variant split
✅ Re-checked - no issues remain.

✅ **Test** - passed

✅ No issues found.

  • bash tests/fm-brief.test.sh — full fm-brief behavior suite including the new test_standing_worker_rules_by_variant
  • bash tests/fm-documentation-audiences.test.sh — validates local link resolution for the edited .agents/skills/firstmate-coding-guidelines/SKILL.md
  • Generated real briefs at base f7d0d0a and target 911e248 from identical root/home layouts: FM_HOME=... bin/fm-brief.sh &lt;id&gt; &lt;proj&gt;, --scout, --herdr-lab, --secondmate --no-projects, --secondmate &lt;proj&gt;, and local-only/direct-PR registry modes; diffed the resulting brief.md files
  • Section-presence matrix over 8 generated brief variants (grep &#39;^# Branch conflict resolution$&#39;, &#39;^# Verification discipline$&#39;, delegated-rebase carve-out line)
  • Captain-escalation leak check across all generated briefs (grep -rn &#39;escalate .*to the captain&#39; data/) — 0 hits
  • Measured ship-scaffold byte delta with path lengths held constant (wc -c base vs head per variant)
  • bin/fm-brief.sh --help — confirmed both new documentation lines render
  • Verified the relative skill link ../../../bin/fm-brief.sh resolves to the real script
  • git diff f7d0d0a..911e248 -- bin/fm-brief.sh | grep &#39;^+&#39; | grep -E &#39;(if|case|exit|\[|test |grep|return)&#39; — confirmed no runtime guard/enforcement code added
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@kunchenguid

kunchenguid commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Automated reminder: thanks for the PR! This branch currently has a merge conflict with the base branch.

When you get a chance, please rebase onto (or merge) the latest base branch, resolve the conflict, and push. After that, checks will re-run and the PR will get looked at again.

Noted for firstmate#1395 at 6fadd8aa.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants