Conversation
…, and state artifacts
…unknown branch; dedupe identity
…efuse path; matrix rerun still in flight, doc transcript not yet replaced
…provenance and pointers
…OMP bun, gate tmux OMP probe
Preserve launch-bound OMP identity inside the generalized session-lock matcher, combine test-lane and supervision ownership, and carry current upstream main without rewriting history.
Enable OMP as the native Firstmate harness
Update docs/examples/crew-dispatch.json, the starting-point example for config/crew-dispatch.json: - claude harness: claude-sonnet-5 -> claude-opus-4-8 (bare full-name form) - pi harness: anthropic/claude-sonnet-5 -> anthropic/claude-opus-4-8 (confirmed present in authenticated `pi --list-models`) Rule structure and all other profiles (grok, claude/haiku, codex/gpt-5.5) are unchanged. Validated against the repo's crew-dispatch schema in bin/fm-bootstrap.sh crew_dispatch_validate: all harnesses verified and every effort/harness pair supported (claude:low/high, codex:high/medium, pi:medium). The schema does not validate model identifiers; they pass through to fm-spawn.
Author
|
Closing: this PR was opened against the wrong target by the validation pipeline. The intended change is a single-file docs example refresh (docs/examples/crew-dispatch.json, Sonnet 5 -> Opus 4.8). Because this branch is based on a fork main that is ahead of upstream, the PR here bundled 66 commits / 93 files of unrelated OMP-harness work under a mismatched title, and this repo has no CI checks configured for it. Closing in favor of a corrected PR opened against the fork's own main (dnth/firstmate:main) containing only the one-file dispatch-example change. No merge performed. |
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
Audit docs/examples/crew-dispatch.json as a valid, current crew-dispatch example and replace both Claude Sonnet 5 profiles with Claude Opus 4.8: the claude harness profile claude-sonnet-5 becomes claude-opus-4-8 (verified bare full-name form), and the pi harness profile anthropic/claude-sonnet-5 becomes anthropic/claude-opus-4-8 (provider-qualified identifier, confirmed present in authenticated pi --list-models). Preserve the existing rule structure and intent unless the audit finds a concrete schema or launch-compatibility defect. Do not modify the captain's private config/crew-dispatch.json. Keep the diff limited to the example and any strictly necessary correction to its authoritative validation coverage.
What Changed
bin/fm-omp-capabilities.shandbin/fm-omp-process-lib.sh, OMP detection and marker/ancestry binding infm-harness.sh,fm-session-lock-lib.sh, andfm-session-start.sh, plus OMP spawn, send, supervise, and teardown paths for the primary, secondmate, and worker roles.bin/fm-primary-watch-core.tsconsumed by both.pi/extensions/fm-primary-pi-watch.tsand the new.omp/extensions/fm-primary-omp.ts, versioned viafm-primary-watch-version-lib.sh; the tmux backend now recognizes the OMP waiting footer and the composer strips prompt glyphs independent of locale.tests/, and updates the harness/AFK skills, architecture, backend, and verification docs;docs/examples/crew-dispatch.jsonmoves both Claude profiles from Sonnet 5 to Opus 4.8 (claude-opus-4-8bare,anthropic/claude-opus-4-8for pi).Note: the review and document gates both flagged that
docs/examples/crew-dispatch.jsonhas no automated schema validation — bootstrap'screw_dispatch_validateonly reads the installed config, andtests/fm-bootstrap.test.shuses inline fixtures. Pre-existing gap; the example was validated manually through bootstrap and realfm-spawn.shruns for all six profiles.Risk Assessment
✅ Low: The authored change is a two-line model-identifier swap in a documentation example that the schema validator does not inspect and that no runtime code imports, and it matches the intent's required substitutions exactly while leaving rule structure and every other profile untouched.
Testing
Installed the shipped example as an active crew-dispatch config and ran the repo's real validator in bin/fm-bootstrap.sh: it stays silent (valid) and, in verbose mode, reports the rules with claude/claude-opus-4-8/high and pi/anthropic/claude-opus-4-8/medium. Then drove real fm-spawn.sh with a fake tmux for every profile the example can resolve to, capturing the literal launch commands — the two changed profiles launch as
claude --model 'claude-opus-4-8' --effort 'high'andpi --model 'anthropic/claude-opus-4-8' --thinking 'medium'. Confirmed both identifiers live: anthropic/claude-opus-4-8 appears in authenticatedpi --list-models, andclaude --model claude-opus-4-8 -p ...answered, proving the bare full-name form is accepted. Diff scope verified limited to the example with the captain's private config untouched and no residual sonnet-5 references in docs; the temporary evidence harness under tests/ was deleted and the worktree is clean.Evidence: Bootstrap validation + verbose dispatch facts for the shipped example
$ FM_HOME=$H bin/fm-bootstrap.sh # valid config -> silent (no CREW_DISPATCH error line) $ FM_BOOTSTRAP_VERBOSE_FACTS=1 FM_HOME=$H bin/fm-bootstrap.sh BOOTSTRAP_INFO: crew dispatch active config/crew-dispatch.json BOOTSTRAP_INFO: crew dispatch rule: ...fresh news... -> grok BOOTSTRAP_INFO: crew dispatch rule: ...trivial mechanical edit... -> claude/haiku/low BOOTSTRAP_INFO: crew dispatch rule: ...big or ambiguous multi-file feature... -> quota-balanced[claude/claude-opus-4-8/high, codex/gpt-5.5/high] BOOTSTRAP_INFO: crew dispatch default: quota-balanced[codex/gpt-5.5/medium, pi/anthropic/claude-opus-4-8/medium]Evidence: Literal fm-spawn launch commands for every example profile
--- example rule: claude/claude-opus-4-8/high (big-work rule) spawned $TASK_ID harness=claude kind=ship mode=no-mistakes ... CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false claude --dangerously-skip-permissions --model 'claude-opus-4-8' --effort 'high' "$('$FM_REPO/bin/fm-operational-input.sh' encode launch-brief < '$FM_HOME/data/$TASK_ID/brief.md')" --- example rule: pi/anthropic/claude-opus-4-8/medium (default) spawned $TASK_ID harness=pi kind=ship mode=no-mistakes ... FM_PI_HARNESS=pi pi --model 'anthropic/claude-opus-4-8' --thinking 'medium' -e '$FM_HOME/state/$TASK_ID.pi-ext.ts' "$('$FM_REPO/bin/fm-operational-input.sh' encode launch-brief < '$FM_HOME/data/$TASK_ID/brief.md')"Evidence: pi --list-models confirms anthropic/claude-opus-4-8
$ pi --list-models | grep -E "opus-4-8|sonnet-5" anthropic claude-opus-4-8 1M 128K yes yes anthropic claude-sonnet-5 1M 128K yes yesEvidence: claude CLI accepts the bare full-name claude-opus-4-8
$ claude --model claude-opus-4-8 -p "Reply with exactly: MODEL-OK" MODEL-OKPipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
.agents/skills/afk/SKILL.md- branch carries 65 commit(s) that exist on your local main branch but were never pushed to origin/main; rebasing would bundle this unrelated work (113 file(s)) into the PR:Push main to origin, or rebase your branch onto origin/main, before gating.
🔧 Fix applied.
1 warning still open:
.agents/skills/afk/SKILL.md- branch carries 65 commit(s) that exist on your local main branch but were never pushed to origin/main; rebasing would bundle this unrelated work (113 file(s)) into the PR:Push main to origin, or rebase your branch onto origin/main, before gating.
docs/examples/crew-dispatch.json:1- docs/examples/crew-dispatch.json is not exercised by any automated check: bin/fm-bootstrap.sh crew_dispatch_validate only ever reads $CONFIG/crew-dispatch.json, and tests/fm-bootstrap.test.sh uses inline fixtures rather than the shipped example. The schema conformance claimed in the commit message was verified manually, so the copyable operator example can silently drift out of schema in future edits. Pre-existing gap, not introduced by this change; out of the intent's stated diff scope.✅ **Test** - passed
✅ No issues found.
FM_HOME=$tmp FM_BOOTSTRAP_VERBOSE_FACTS=1 bin/fm-bootstrap.shwith docs/examples/crew-dispatch.json installed as config/crew-dispatch.json (crew_dispatch_validate: no CREW_DISPATCH error, full BOOTSTRAP_INFO profile block)Drove realbin/fm-spawn.shvia the tests/fm-spawn-dispatch-profile.test.sh fixtures (fake tmux capturingsend-keys -l) once per example profile: grok,--harness claude --model haiku --effort low,--harness claude --model claude-opus-4-8 --effort high,--harness codex --model gpt-5.5 --effort high|medium,--harness pi --model anthropic/claude-opus-4-8 --effort medium— all 6 spawned and threaded the expected model/effort flagspi --list-models | grep claude-opus-4-8(authenticated) — anthropic/claude-opus-4-8 presentclaude --model claude-opus-4-8 -p "Reply with exactly: MODEL-OK"— bare full-name form accepted, returned MODEL-OKScope check:git show --stat ea2cfb9(only docs/examples/crew-dispatch.json, 2 lines),git ls-files config/(captain config untracked/untouched),grep -rn claude-sonnet-5 docs/(no leftovers)docs/examples/crew-dispatch.json:1- docs/examples/crew-dispatch.json has no automated validation coverage: nothing in tests/, bin/, or .github/ references the example path, so bootstrap's crew_dispatch_validate never runs against it and schema drift in the copyable example would go undetected. Not caused by this change and out of scope for a docs-only phase (adding it means a test change). Worth a follow-up that feeds the example file through crew_dispatch_validate in tests/fm-bootstrap.test.sh.✅ **Push** - passed
✅ No issues found.