Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
312 commits
Select commit Hold shift + click to select a range
f3b7e74
docs: correct runtime-backend maturity labels for Herdr (#3821)
kmorebetter Sep 6, 2026
f91a950
fix: restore intent-targeted no-mistakes validation (#3865)
kunchenguid Sep 6, 2026
b028e8b
fix: verify Treehouse slot ownership before teardown (#3837)
kunchenguid Sep 6, 2026
2e65d2e
feat(bin): add verified omp (Oh My Pi) harness adapter for crew, seco…
danielkuykendall23-boop Sep 6, 2026
d8e2bb3
fix(pi): invoke Bash helpers correctly on native Windows (#3843)
cr101 Sep 6, 2026
71ec401
test(bin): pin teardown outcomes for squash-merged rebased branches (…
MortenGad Sep 6, 2026
29015a2
fix(bin): keep supervision armed for registered custom checks (#3860)
gyute Sep 6, 2026
64d3905
fix(bin): resolve Treehouse locks for remote secondmate homes (#3883)
kunchenguid Sep 7, 2026
cf7e2fa
fix(bearings): repair board listening and decision reconciliation (#3…
kunchenguid Sep 7, 2026
1533f47
fix(bin): allow pooled spawns without a git origin (#3885)
kunchenguid Sep 7, 2026
5592cb6
feat(tests): run live harness guards by default when available (#3889)
kunchenguid Sep 7, 2026
6d396da
fix(bin): refuse test runs in the primary checkout when a task marker…
3264studios Sep 7, 2026
d4eb228
fix(bin): bound stale alarms for backlog captain holds (#3842)
mremond Sep 7, 2026
0b9f518
feat(pi): resolve extension-registered providers in the supervision b…
0x7067 Sep 7, 2026
ffd2c89
fix(bin): gate secondmate wake-loop stall alerts on real queue no-pro…
cisrd Sep 7, 2026
36fd955
test(calm): harden the export-DOM render step and record Pi 0.85.1 ev…
cisrd Sep 7, 2026
3af74fe
fix(bin): make every counted wake queue row presentable or retired (#…
cisrd Sep 7, 2026
98b37d4
fix(bin): use system stat for Darwin BSD formats (#3305)
0x7067 Sep 7, 2026
72bfdd0
fix(spawn): carry attribution-off policy in every claude launch (#3945)
NewAiCoder-bot Sep 7, 2026
891dc51
fix(bin): derive watcher beacon staleness grace from poll cadence (#3…
NewAiCoder-bot Sep 8, 2026
b84e0e3
fix(procevent): reap orphaned runners and prevent launch storms (#3904)
kunchenguid Sep 8, 2026
c034b26
test: make timestamp fixtures portable across macOS and Linux (#4037)
mremond Sep 9, 2026
746fc0a
feat(pi): accept native Codex ultra effort with progress-aware superv…
3264studios Sep 9, 2026
0fe226c
fix(herdr): bypass stale clients rejected by running servers (#4041)
kunchenguid Sep 9, 2026
40c50ea
feat: add durable AFK posture lifecycle (#4048)
kunchenguid Sep 9, 2026
9ba29db
feat(bin): add IMAP/SMTP mail plane with standing poll (#3765)
feilipu Sep 9, 2026
55d4069
fix: launch remote Herdr through the user login shell (#4061)
kunchenguid Sep 9, 2026
1c7a713
fix: distinguish landed deliveries from resolved captain calls (#3710)
mremond Sep 9, 2026
78318e2
fix(remote): keep fm-remote Herdr servers in the Aqua session (#4090)
kunchenguid Sep 9, 2026
28153d1
fix(bin): prefer a live no-mistakes run over a terminal one (#2881)
jayjongcheolpark Sep 9, 2026
00334ef
fix(bin): repair process-event shutdown and tighten guard timing (#4009)
mremond Sep 9, 2026
269f8fe
fix(backlog): route lifecycle transitions through configured adapters…
RooseveltAdvisors Sep 9, 2026
b6b51b9
fix(bin): suppress false Claude long-turn supervision alarms (#4119)
kunchenguid Sep 10, 2026
3e817d3
fix(herdr): recover gone and drifted worker endpoints (#4120)
kunchenguid Sep 10, 2026
b1ad702
fix(bin): prevent receiver wake failures from blocking remote handoff…
kunchenguid Sep 10, 2026
34bd418
fix: restrict captain address rule to user chat (#4075)
mremond Sep 10, 2026
527aa7c
fix(herdr): allow detached teardown of persisted-focused tabs (#4131)
kunchenguid Sep 10, 2026
5300a4f
fix(bin): escalate decision-owned wakes once as the decision (#4169)
tiago-peixoto Sep 10, 2026
4768e98
test(herdr): cover agent exit-to-shell liveness (#4172)
kunchenguid Sep 10, 2026
869ae90
fix(bin): rebalance portable parallel test lanes using CI timings (#4…
mremond Sep 11, 2026
0a4e4a2
fix(bin): stop claiming prose-mentioned PR URLs as a task's delivered…
karotkriss Sep 11, 2026
8a61b50
fix(procevent): confirm reconcile launches and reclaim provably dead …
christophmeise Sep 11, 2026
e0d269e
fix(herdr): verify agent liveness at process level before trusting re…
pablontiv Sep 11, 2026
31f062d
feat: add live-head merge gates and away task grants (#4199)
kunchenguid Sep 11, 2026
9074f9d
fix(bin): bound the Claude turn-end re-block against a frozen auto-ar…
christophmeise Sep 11, 2026
ff5c7af
feat(herdr): add guarded foreground viewer for live validation (#4242)
kunchenguid Sep 11, 2026
dee156f
fix(bin): let nonvisual work proceed when lavish-axi is unavailable (…
tiago-peixoto Sep 11, 2026
eb0ea3a
test: isolate fixture Git config from host global and system settings…
tiago-peixoto Sep 11, 2026
2c1017e
feat(bin): add config/claude-permission-mode to launch Claude workers…
sreekarans Sep 11, 2026
7d14fc1
fix(teardown): leave a Treehouse pool slot reassigned to another task…
christophmeise Sep 11, 2026
9e1e85e
docs(AGENTS): keep brief-fill from widening the captain's ask (#4247)
kunchenguid Sep 11, 2026
46ff99c
fix: identify underway tasks and sort charted work (#4245)
kunchenguid Sep 11, 2026
ad14a8d
fix(bearings): surface return catch-up without blocking snapshots (#4…
kunchenguid Sep 12, 2026
a27646c
fix(bin): address the home's backlog from any directory and detect a …
Shazellb Sep 12, 2026
92856fd
fix: pre-register Claude trust for secondmate homes (#4262)
kunchenguid Sep 12, 2026
c191eac
fix: ignore superseded failed GitHub check runs (#4258)
kunchenguid Sep 12, 2026
de00521
fix(bin): persist merge authority for poll-detected outcomes (#4266)
kunchenguid Sep 12, 2026
83c63cc
ci: supersede superseded PR CI and bound unbounded jobs (#4281)
kunchenguid Sep 12, 2026
fa65b5d
test(watch): gate backlog-hold away-record fixture on tasks-axi (#4288)
cipherholdingsllc Sep 12, 2026
fb19dd9
fix(backlog): bound per-item backlog row reads so a wedged backend ca…
RooseveltAdvisors Sep 12, 2026
76d4405
fix(merge): serialize away authority with synchronous merges (#4285)
kunchenguid Sep 12, 2026
3576148
feat(bin): add Antigravity CLI (agy) as third worker/scout adapter (#…
AnPod Sep 12, 2026
b518a25
feat(afk): add quiet supervision mode for a present captain (#4337)
NewAiCoder-bot Sep 13, 2026
0962d4a
fix(bin): let verified harness ancestry outrank retained markers (#3)…
NewAiCoder Sep 13, 2026
305dfff
fix(bin): pre-approve external CLAUDE.md import dialog for spawned wo…
NewAiCoder-bot Sep 13, 2026
ecfe071
fix(afk-return): treat an acked watcher-down marker as no gap (#4355)
NewAiCoder-bot Sep 13, 2026
b182d0f
fix(bin): rebind fm-procevent-when trust bindings after a self-update…
NewAiCoder-bot Sep 13, 2026
e3bd750
fix(pr-merge): treat plan-gated 403 on branch rules as no merge queue…
NewAiCoder Sep 14, 2026
036fec0
fix(bin): select suites that read a changed top-level test fixture (#…
tiago-peixoto Sep 14, 2026
267441d
fix(bin): treat Claude Code's default external-imports flags as never…
Rangezi Sep 14, 2026
287f41e
fix(bin): keep operator-address labels out of no-mistakes intent (#4445)
tiago-peixoto Sep 14, 2026
18fe6e9
fix: classify OpenCode ellipsis hint as idle (#4451)
pablontiv Sep 14, 2026
80556bc
fix(composer): recognize Grok 1.0.5's oversized titled bottom border …
pablontiv Sep 14, 2026
c1103a1
fix(bin): translate Stop hook timeout signals into durable auto-arm f…
pablontiv Sep 14, 2026
0b9de13
fix(spawn): establish Claude task channel authority (#4464)
pablontiv Sep 14, 2026
a6618dd
fix(bin): refuse fm-control.sh exit when the composer holds unproven …
pablontiv Sep 14, 2026
c806c6a
fix(spawn): establish crewmate identity first (#4481)
pablontiv Sep 15, 2026
d499323
fix(bin): reconcile redundant secondmate divergence during updates (#…
pablontiv Sep 15, 2026
da5e658
feat: enable gpt-5.6-luna max reasoning for crew dispatch (#4497)
umeranjum17 Sep 15, 2026
616049a
feat(calm): render smooth Unicode swell with asymmetric two-color sai…
yasuhito Sep 15, 2026
aa92177
fix(bin): supersede stale scout delivery text in brief.md on promotio…
pablontiv Sep 15, 2026
b85e28b
fix(bin): make captain holds work on hosts with an older JSON::PP, an…
Marsjohn-11 Sep 15, 2026
8b10b61
fix(bin): read codex 0.154's idle braille starfield rows as composer …
tbillings28 Sep 15, 2026
2da3c5e
fix(bin): refuse empty text steers in fm-send (#4259)
pablontiv Sep 15, 2026
0f242b9
fix(calm): paint the working ship one yellow over all-blue water (#4554)
kunchenguid Sep 15, 2026
a8dd08d
fix(bin): stop aging a second mate's active turn from its launch (#4270)
tiago-peixoto Sep 15, 2026
8b944a1
feat(bin): add read-only PR blocker and reviewer discovery commands (…
tiago-peixoto Sep 15, 2026
db645b8
fix(bin): teach validation-round pauses in generated briefs (#2752)
tiago-peixoto Sep 15, 2026
9ad5fc4
docs(readme): add star history chart (#4558)
kunchenguid Sep 15, 2026
1bdfd8c
fix(bin): refuse teardown when a task's endpoint close fails (#4510)
aminry Sep 15, 2026
bdcacb9
feat(calm): add flag-gated Claude Code Calm mode (#4565)
kunchenguid Sep 15, 2026
b430bf5
fix(bin): honour a declared wait before wedge-escalating a quiet pane…
aminry Sep 16, 2026
7111081
fix(bin): report verified PR state for passed runs (#4624)
jokim1 Sep 16, 2026
af1f2ea
fix: restore published contribution follow-up (Fixes #4469) (#4627)
mremond Sep 16, 2026
36c9814
fix(bin): make remote report transfers explicit and fail-open (#4658)
kunchenguid Sep 16, 2026
6483df6
fix(calm): preserve substantive mid-turn responses (#4655)
kunchenguid Sep 16, 2026
baede47
fix(bin): preserve PR merge polls across volume remounts (#4656)
mremond Sep 16, 2026
9f8ad95
fix(bin): keep contribution records when the poll budget runs out (fo…
mremond Sep 16, 2026
b0877b4
fix(bin): clear parent pending-replies on local secondmate retirement…
thelad-dev Sep 16, 2026
795e5e4
fix(bin): accept Orca's composite worktree id when tearing down a tas…
JuanJoseGonGi Sep 16, 2026
69d660a
feat(bin): add opt-in typed dispatch resolution (#4692)
kunchenguid Sep 17, 2026
334fa12
fix(bin): read the latest status event so buried declarations and ope…
tiago-peixoto Sep 17, 2026
fa93097
fix(bin): launch codex crewmates with codex's hook layer disabled (#4…
codyjohnsontx Sep 17, 2026
3eb5b63
fix(bin): settle terminal contribution observations (Fixes #4669, Fix…
mremond Sep 17, 2026
f5d7f5f
fix: select authoritative no-mistakes runs (#4476)
mremond Sep 17, 2026
a221640
fix: distinguish captain outcomes from no-op updates (#4738)
kunchenguid Sep 17, 2026
5e879ba
fix(bin): let non-owner Claude Stops exit safely (#4777)
kunchenguid Sep 17, 2026
e213343
fix(bin): survive bash 3.2 empty-array expansion in watcher churn abs…
0x7067 Sep 17, 2026
b752ced
Make the foreign-owner turn-end repro create a Linux-readable session…
kunchenguid Sep 17, 2026
8d9d5da
fix: require complete captain-facing final responses (#4779)
kunchenguid Sep 17, 2026
888871d
fix: preserve substantive mid-turn text in Pi Calm (#4788)
kunchenguid Sep 17, 2026
4055cbd
fix: harden mail checks and rebalance full-coverage CI (#4800)
kunchenguid Sep 18, 2026
5d3acc8
fix(bin): answer Kimi 2.0.0 folder-trust dialog during spawn (#4799)
Shazellb Sep 18, 2026
9bc051f
fix(bin): report a dead-agent record once instead of escalating forev…
umeranjum17 Sep 18, 2026
daaffdb
fix(bin): create captain-hold rows when Beads requires due (#4854)
RooseveltAdvisors Sep 18, 2026
1bb72cc
fix: disable compact adviser for spawned agents (#4877)
kunchenguid Sep 18, 2026
4812db8
fix(bin): preserve Claude lock ownership after helper recycling (#4894)
kunchenguid Sep 19, 2026
65a3bac
feat: park main under the away posture on Pi (#4889)
kunchenguid Sep 19, 2026
2bcb88c
ci: standardize workflow timeouts into three tiers (#4910)
kunchenguid Sep 19, 2026
b6930db
fix(bin): keep supervisor status closes from waking the same home (#4…
tiago-peixoto Sep 19, 2026
1b1b6e0
fix(bin): stop labeling Herdr as experimental (#4972)
kunchenguid Sep 19, 2026
dd9b2ef
fix(bin): treat a live no-mistakes run as current after rebase (#4973)
rovermike Sep 20, 2026
a452a79
fix(bin): prevent long worker launch command truncation (#4994)
kunchenguid Sep 20, 2026
a0b2f34
test: authorize isolated Herdr lab validation (#4998)
kunchenguid Sep 20, 2026
90cd351
docs(vision): accept vendor-semantics and 9k AGENTS ceiling (#4873) (…
kunchenguid Sep 20, 2026
9aabe3b
feat(bin): defer the wedge escalation for a lane parked at a supervis…
aminry Sep 20, 2026
1b1b3cd
fix(bin): reclaim a task whose herdr endpoint was destroyed (#5007)
RooseveltAdvisors Sep 20, 2026
a09090d
feat(bin): stamp status events with their emission time (#3764)
tiago-peixoto Sep 20, 2026
c443d8c
fix(bin): unify Lavish host and disconnect handling (#5060)
kunchenguid Sep 20, 2026
dee119b
feat: act on captain's away words during AFK supervision (#5076)
kunchenguid Sep 20, 2026
804394e
fix(bin): render the remote charter's steering-inbox path host-local …
kesslerio Sep 21, 2026
bd65e4a
feat: route Lavish feedback directly to owning workers (#5099)
kunchenguid Sep 21, 2026
b8ab735
fix(bin): fit pull observation within the contribution poll budget (#…
sdivanl Sep 21, 2026
631bc26
feat(bin): add idempotent inbox capture, replies, receipts, and readi…
cliflacata-svg Sep 21, 2026
d08e327
fix(bin): stop harness footer rows below a composer from reading as p…
puntkoen Sep 21, 2026
fcbaa73
feat(bin): append optional home-local include to briefs (#5115)
guanchengh-lgtm Sep 21, 2026
43bf6d3
fix(bin): report a branch with no validation run as absent instead of…
Authentis Sep 21, 2026
dbc0bc4
fix(bin): require a non-draft pull request before a PR-based done rep…
mremond Sep 21, 2026
259a669
fix: support quota-axi schema 6 snapshots (#4904)
pedromuller-del Sep 21, 2026
aec043c
test: fix Claude session-start drain live E2E (#5165)
kunchenguid Sep 21, 2026
8c1cdb7
ci: pin the no-mistakes required check to v1.80.1 (#5195)
kunchenguid Sep 21, 2026
3fcbc6c
fix(bin): retain Pi watcher predecessor to stop false down alarms (#5…
sdivanl Sep 22, 2026
da9607d
fix(bin): allow cleanup of windowless legacy task records (#5236)
kunchenguid Sep 22, 2026
f9f74a1
ci: exempt kunchenguid from the no-mistakes required check (#5256)
kunchenguid Sep 22, 2026
6f0f139
fix(bin): surface launches parked on an interactive prompt as not-sta…
sdivanl Sep 22, 2026
f5735dc
fix: record away posture immediately on /afk (#5260)
kunchenguid Sep 22, 2026
c5131a3
fix(bin): recognize passed-with-override as a passing outcome (#5294)
mremond Sep 22, 2026
ada21f5
fix: clean up workers after their pull requests land (#5317)
kunchenguid Sep 22, 2026
d92cea0
fix: surface green no-mistakes PRs awaiting merge (#5327)
kunchenguid Sep 22, 2026
884d76b
fix: derive Lavish polling route from board session (#5334)
kunchenguid Sep 22, 2026
dd9f2b4
fix(bin): stop secondmate relaunch failing when watcher scratch files…
tiago-peixoto Sep 22, 2026
39f4c2a
fix(bin): stop each keyed answer from re-waking this home (#4907)
tiago-peixoto Sep 22, 2026
706254d
fix: deliver failed public follow-ups with updated AXI floors (#5350)
kunchenguid Sep 23, 2026
a8a2959
fix(bin): refuse ship done: when the named head exists only in the wo…
tiago-peixoto Sep 23, 2026
82dec2e
fix(bin): ring a proven-idle secondmate before raising a wake-loop st…
tiago-peixoto Sep 23, 2026
a5d78f8
test(watch-arm): size re-arm waits off the real loaded recovery cost …
tiago-peixoto Sep 23, 2026
52fca51
fix: stop watchers reliably during blocked polls (#5362)
kunchenguid Sep 23, 2026
c576c2b
fix: submit stuck inbox doorbells instead of skipping them (#5374)
kunchenguid Sep 23, 2026
f2ab14a
feat: add opt-in fleet activity ledger (#5375)
kunchenguid Sep 23, 2026
e7cb23e
fix: validate public follow-up deliverables and wake on rejection (#5…
kunchenguid Sep 23, 2026
697d94d
feat: add Devin CLI crewmate and scout adapter (#5380)
kunchenguid Sep 23, 2026
7c8f9ee
fix(bin): recognize passed-with-skips as a passing outcome (#5322)
mremond Sep 23, 2026
2efa581
fix(bin): refuse unavailable backend adapters before sourcing (#5382)
Lakescape Sep 23, 2026
77e5af9
test: repair base-red liveness, export-DOM, and wake-queue self-tests…
blackxwhite88 Sep 23, 2026
fef37b9
fix: keep watcher status classification bounded to new log spans (#5383)
kunchenguid Sep 23, 2026
f0da72c
test: close pr-check watcher test gaps (original flake already fixed …
kunchenguid Sep 23, 2026
c00d5e1
feat: record fleet status immediately and emit PR-ready events (#5385)
kunchenguid Sep 23, 2026
1e0e773
test: synchronize foreign queue stall checks with watcher progress (#…
kunchenguid Sep 23, 2026
8c47279
test: isolate the bearings render fixture from the shared Lavish stor…
kunchenguid Sep 23, 2026
7e0e60a
fix(bin): prune a torn-down task's wake rows at teardown (#5390)
blackxwhite88 Sep 23, 2026
9296f9b
test: align portable test expectations with resolved host paths and f…
sandeepsalwan1 Sep 23, 2026
5df1294
test: make sibling secondmate stall tests wait for watcher observatio…
kunchenguid Sep 23, 2026
1d3ac67
fix(bin): refuse a Herdr Claude submit that would send only a message…
tiago-peixoto Sep 23, 2026
fdd3687
feat(bin): publish and watch Gerrit changes on forge-bound projects (…
slnkjthien Sep 23, 2026
0afc6b4
feat(bin): opt-in per-home Claude and Pi worker account pin (#5358)
tiago-peixoto Sep 23, 2026
5bbb978
fix(bin): keep Herdr lab session selection before passthrough argumen…
yasuhito Sep 23, 2026
ac2ed3b
fix: enforce supervision guards across harnesses (#5471)
kunchenguid Sep 23, 2026
67130f1
feat(bin): make the ship-branch prefix configurable per project (#2648)
wesleymatosdev Sep 24, 2026
795e4b5
feat(bin): send dispatch router only the brief's task sections and ad…
zachlandes Sep 24, 2026
9284978
feat: add opt-in Claude away supervision host (#5488)
kunchenguid Sep 24, 2026
d4f3b78
docs: correct the Grok harness reference on folder trust, training op…
Courtneyezra Sep 24, 2026
5842d42
fix(bin): bound the startup-network worker's lock waits by its budget…
karotkriss Sep 24, 2026
e1d6cf9
fix(bin): make the ps-fallback watcher identity immune to terminal wi…
karotkriss Sep 24, 2026
474c6ee
fix(bin): ignore fenced and indented Captain lines when extracting au…
karotkriss Sep 24, 2026
0d983d2
fix(bin): forbid administering the shared worktree pool in crewmate b…
karotkriss Sep 24, 2026
977a81e
fix(bin): refuse tasks-axi add/create --start so In flight always has…
karotkriss Sep 24, 2026
e1b7f4f
feat: extend opt-in away supervision to non-Pi primaries (#5503)
kunchenguid Sep 24, 2026
d1ce6b6
fix: auto-relaunch dead secondmates during supervision (#5496)
kunchenguid Sep 24, 2026
31c47af
fix(bin): start a successor when the Claude Stop-hook arm's attached …
karotkriss Sep 24, 2026
b42d4fa
fix(bin): report a Lavish source armed only after its listener is run…
tiago-peixoto Sep 24, 2026
52e679b
fix(bin): stop repeating unknown-wake escalations that were already d…
tiago-peixoto Sep 25, 2026
c6e816f
fix(bin): keep a stated default-key retraction from cancelling a keyl…
tiago-peixoto Sep 25, 2026
a8572f6
fix(bin): terminate a remote job worker that lost ownership on TERM (…
tiago-peixoto Sep 25, 2026
4be8a40
docs: make configuration settings easier to find and understand (#5589)
tmchow Sep 25, 2026
b52d401
fix: limit project memory edits to factual corrections (#5636)
kunchenguid Sep 25, 2026
ca8c293
feat: permit gate lifecycle calls against disposable lab homes (#5635)
kunchenguid Sep 25, 2026
b575497
fix(bin): evict a watcher whose beacon stalls past a hard bound inste…
karotkriss Sep 25, 2026
5cec4e2
fix(pi): hide queued Firstmate inputs under Calm only when the sessio…
tiago-peixoto Sep 25, 2026
756f64e
fix(bin): refuse teardown when a required source disappears (#5548)
tiago-peixoto Sep 25, 2026
4e99de7
docs: make supervision-host easier to read (#5605)
tmchow Sep 25, 2026
660fa4a
docs: make the Herdr backend guide easier to read (#5606)
tmchow Sep 25, 2026
5323582
docs: make pi-supervision-branch easier to read (#5607)
tmchow Sep 25, 2026
d18a220
docs: make watcher-continuity easier to read (#5608)
tmchow Sep 25, 2026
70e41a8
docs: make sessionstart-nudge easier to read (#5609)
tmchow Sep 25, 2026
7c501a1
docs: make captain-hold-lifecycle easier to read (#5610)
tmchow Sep 25, 2026
c60f0ab
docs: make remote-secondmates easier to read (#5612)
tmchow Sep 25, 2026
683b3eb
fix(bin): bound the away digest and log why a delivery failed (#5554)
Sophylax Sep 25, 2026
dbe124d
test: add a gated harness seam and stabilize lifecycle fixtures (#5638)
kunchenguid Sep 25, 2026
1a814e4
fix(bin): refuse watchers from disposable checkouts and exit when the…
karotkriss Sep 25, 2026
84362f6
fix(bin): surface unrecognized status prefixes instead of reading the…
tiago-peixoto Sep 25, 2026
e97390a
fix(bin): report the failing item when remote inheritance fails (#5658)
karotkriss Sep 25, 2026
c643b57
fix(bin): stand down the Claude Stop auto-arm on pi-code-delivered pa…
karotkriss Sep 25, 2026
d1abcd6
fix(bin): match whole multi-word project names in the registry lookup…
karotkriss Sep 25, 2026
b805823
fix(bin): classify shell stdin payloads after -s operands (#5546)
coreldh Sep 25, 2026
83a4bbd
fix(bin): strip AI co-author trailers from fleet-launched commits (#5…
tiago-peixoto Sep 25, 2026
67f6c27
fix(bin): treat Pi's dollar-first cost footer as furniture (#5683)
tiago-peixoto Sep 25, 2026
8d2ee29
fix(bin): refuse merges with unreported required checks (#5534)
mremond Sep 25, 2026
0154324
fix: keep persistent secondmates out of landed-work cleanup (#5696)
kunchenguid Sep 25, 2026
f54aa00
fix: reject invalid X reply and follow-up arguments before posting (#…
kunchenguid Sep 25, 2026
3c14a54
fix: pause broken supervision-host sessions between engine probes (#5…
kunchenguid Sep 25, 2026
97365aa
fix(bin): absorb routine secondmate working and paused status appends…
karotkriss Sep 25, 2026
c4c9d63
fix(bin): use gh-axi for the ship DoD draft check (#5519)
karotkriss Sep 25, 2026
f1ea9ed
fix(bin): bind inactive-outcome receipt identity to structured fields…
karotkriss Sep 25, 2026
4299683
feat: record the Claude and Cursor dialog for the supervision host (#…
kunchenguid Sep 25, 2026
c33b3f6
fix(bin): retire check-row receipts on branch acknowledgement so away…
kunchenguid Sep 26, 2026
1fe1a67
fix(bin): deliver Claude-bound operational input as a record-backed d…
kunchenguid Sep 26, 2026
ef595d8
test: isolate lint fixture from tracked suite (#5727)
kunchenguid Sep 26, 2026
e789e52
fix(bin): republish parent metadata after a remote secondmate relaunc…
tiago-peixoto Sep 26, 2026
9a4cfbb
fix(bin): give slow watcher suites headroom under the changed-suite b…
karotkriss Sep 26, 2026
df4ae5d
fix(bin): stop nested steal-lock recursion and mid-steal watcher TERM…
kunchenguid Sep 26, 2026
873c923
test: make supervision-host park-boundary tests deterministic (#5710)
kunchenguid Sep 26, 2026
ea7c7f7
fix: stage remote home clones before publication (#5733)
kunchenguid Sep 26, 2026
920a7d9
fix: preserve Herdr status on Pi relaunch (#5161)
sdivanl Sep 26, 2026
65c53fb
Seed the relaunch-ordering PR poll fixture without fm-pr-check.sh (#5…
kunchenguid Sep 26, 2026
9b52cf5
feat: add attended supervision for Claude and Cursor hosts (#5748)
kunchenguid Sep 26, 2026
72b63ee
fix(bin): dedup directed source expansions in fm-pending-reply-lib (#…
kunchenguid Sep 26, 2026
d1a332c
fix(bin): avoid bash 5.2 sibling $() in recovery mint and delivery lo…
Lakescape Sep 26, 2026
3948170
fix(bin): name the recovery for a declined Claude imports dialog and …
karotkriss Sep 26, 2026
062d7a8
fix(bin): report the newest status event in the voice status reader (…
karotkriss Sep 26, 2026
e9a6675
fix(bin): gate a self-announcing tool's update-available report on a …
karotkriss Sep 26, 2026
cf20836
fix(bin): pass the dispatch profile effort to OpenCode workers throug…
karotkriss Sep 26, 2026
9d56cf6
fix: stop cancelled validation runs from reporting false failures (#5…
mremond Sep 26, 2026
bb69be6
fix: require declared waits for workers awaiting their own work (#5812)
mremond Sep 26, 2026
503ba82
fix: bound ShellCheck to one canonical root per process (#5770)
kunchenguid Sep 26, 2026
5700baa
fix: bound watcher cleanup wait on the downtime-marker lock (#5732)
kunchenguid Sep 26, 2026
62d643c
test: stop the remote secondmate e2e watcher before temp-root cleanup…
aminry Sep 26, 2026
30ef650
fix(bin): stop reporting untouched shared-captain copies as drift (#4…
tiago-peixoto Sep 26, 2026
29deb42
Merge upstream main and preserve fleet-board overlays
peterOC26 Sep 27, 2026
d776892
no-mistakes(review): Scope continuation to Pi and restore board overl…
Sep 27, 2026
925e2f3
no-mistakes(document): Clarify shared supervision and host routing do…
Sep 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
121 changes: 65 additions & 56 deletions .agents/skills/afk/SKILL.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .agents/skills/ahoy/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Give the captain a concise session-only recap without gathering fresh state.
A captain boundary is an ordinary user-role message unless it matches one of the narrow operational exclusions below.
Exclude messages that begin with the current U+2063 `FIRSTMATE_OP:` injection prefix.
Exclude legacy bare-marker away-mode injections only when U+2063 is immediately followed by `Supervisor escalate (`.
Exclude a message that is exactly a record-backed operational doorbell that `bin/fm-operational-input.sh doorbell-kind` recognizes from its stdin; Claude Code, which strips U+2063, receives away-mode escalations this way.
Exclude the exact legacy unmarked session-start payload ``Run `bin/fm-session-start.sh` now, exactly once, before executing any other instructions.``
Custom-role messages such as Pi's `firstmate-sessionstart-nudge` are not captain messages.
System, developer, tool, watcher, guard, away-mode, and other injected operational messages are not captain messages.
Expand Down
1 change: 1 addition & 0 deletions .agents/skills/bootstrap-diagnostics/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ When any diagnostic needs captain attention, report the plain consequence and re
- `CREW_DISPATCH: invalid config/crew-dispatch.json - <reason>` - the optional dispatch profile file exists but failed low-cost bootstrap validation; stop profile-based dispatch, report the actionable error, and require correction of the malformed schema, unverified harness name, or invalid harness/effort pair rather than falling back around it or selecting a bad profile.
- `FLEET_SYNC: <repo>: skipped: <reason>` - a benign one-off skip (offline, no origin, local-only); bootstrap continued, investigate only if it blocks work.
A skip can also report the bounded fleet-refresh timeout (`FM_FLEET_SYNC_BOOTSTRAP_TIMEOUT`, or a fleet-size-aware default with a 20 second floor); a timeout never blocks startup.
`skipped: registry entry does not resolve to a delivery posture` is the one skip that is not one-off: the clone is left alone on every bootstrap until `data/projects.md` is corrected, so run the printed `bin/fm-project-mode.sh <repo>` to read the refusal and fix the entry.
- `FLEET_SYNC: <repo>: recovered: <detail>` - the clone had drifted onto a clean detached HEAD holding no unique commits and the sync self-healed it (re-attached the default branch and fast-forwarded); no action needed, it is reported only so the self-heal is visible.
- `FLEET_SYNC: <repo>: STUCK: on <state>, N commits behind <base> - needs attention` - the clone is dirty, on a non-default branch, detached with unique commits, or diverged, so the sync left it untouched (never forcing or discarding); it will keep falling behind until you look.
A loud STUCK, especially a growing N across bootstraps, means that clone needs hands-on attention; dispatch a crewmate or resolve it before it strands work.
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/firstmate-codexapp/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ For a Firstmate-managed task, include an explicit status instruction:
```text
Append supervisor-visible status lines to <absolute-firstmate-home>/state/<task-id>.status.
Use only these prefixes for status changes: working:, needs-decision:, blocked:, paused:, done:, failed:.
Use paused: only for a deliberate known external wait that should be rechecked later, never for a blocker that needs firstmate to act.
Follow the task brief's status-reporting rule for declaring and resolving waits; bin/fm-brief.sh owns that rule.
Before doing substantive work, append "working: Codex Desktop thread started".
```

Expand Down
5 changes: 4 additions & 1 deletion .agents/skills/fmx-respond/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ So treat second-mate-routed Relay work as a promised final by construction: the
2. Register it with `bin/fm-public-followup.sh register <obligation-id> --relation <relation-id> --work-home <main|secondmate:<id>> --work-id <task-id> --generation <n>`.
This is what makes the commitment reconcilable without you.
3. Put `bin/fm-public-followup.sh brief <obligation-id>` output straight into the worker's brief.
It prints the exact reporting command for that binding, including the obligation's actual required deliverable keys.
It prints the exact reporting command for that binding, pre-fills any deliverable value the binding determines, and gives the accepted format for every remaining placeholder.
When the work is routed to a second mate rather than spawned here, the routed item's own note MUST carry that same `brief` output so it survives the routing and reaches whoever ends up doing the work.
A header-only routed item loses the emit command.
Never ask a worker to find the thread or post the reply: only this home holds the relay consent and the thread binding.
Expand All @@ -273,6 +273,9 @@ So treat second-mate-routed Relay work as a promised final by construction: the
1. Run `bin/fm-public-followup.sh consume`.
It reconciles every typed terminal result from disk and prints `ready <obligation-id> <request-id> <platform>` for each commitment that became deliverable.
A refusal prints `rejected <event-id>: <reason>` and quarantines that event; read the reason rather than re-emitting blindly.
The same refusal later arrives as a `public-followup rejected <event-id> ...` wake, so the promise is not left owed silently: have the bound work re-emit with the value the reason names, using the corrected `brief` command.
That wake is at-least-once: a failed cleanup can raise the same refusal again, carrying the same event id and reason.
When the event id is one you already took up, acknowledge the wake and do not re-brief the work; re-acting is safe but redundant, because the corrected result resolves to the event id that was already accepted.
2. For each ready commitment, run `bin/fm-public-followup.sh deliver <obligation-id>`.
With no `--text-file` it reuses the accepted terminal outcome exactly, which is the preferred path for a landed result.
Only pass `--text-file` when the outcome genuinely needs composing, and hold it to the same public-safety bar as every other reply here.
Expand Down
7 changes: 4 additions & 3 deletions .agents/skills/harness-adapters/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: harness-adapters
description: >-
Agent-only reference for firstmate harness operations.
Use before spawning or recovering a crewmate or secondmate, handling a trust dialog, sending a harness-specific skill invocation, interrupting or exiting an agent, resuming an exited agent, or verifying a new harness adapter.
Contains verified facts for claude, codex, opencode, pi, pi-signed, grok, kimi, cursor, gemini, muse, rovo, omp, and agy.
Contains verified facts for claude, codex, opencode, pi, pi-signed, grok, kimi, cursor, gemini, muse, rovo, omp, agy, and devin.
user-invocable: false
metadata:
internal: true
Expand Down Expand Up @@ -35,7 +35,7 @@ For recovery and control, use the exact `harness=` in `state/<id>.meta`; never i
Deliver lifecycle actions only through `../../../bin/fm-control.sh <task-id> interrupt|exit|relaunch`.
Never type an interrupt key or exit command through `fm-send`, where routing-marked lifecycle text becomes chat.
Trust handling is complete only when inspection proves the target started processing its instructions; delivery success alone is not proof.
Muse, Gemini, and AGY are verified only for crewmate and scout work, never a secondmate or primary.
Muse, Gemini, AGY, and Devin are verified only for crewmate and scout work, never a secondmate or primary.

## Detection

Expand Down Expand Up @@ -95,7 +95,8 @@ A new tool remains undispatchable until the `verify` plan, its harness entry, ev
"muse": "references/harness/muse.md",
"rovo": "references/harness/rovo.md",
"omp": "references/harness/omp.md",
"agy": "references/harness/agy.md"
"agy": "references/harness/agy.md",
"devin": "references/harness/devin.md"
}
}
```
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Each supported harness handles its folder-trust gate differently, and the tool r
For Claude, load `references/harness/claude.md`; its workspace-trust section owns the non-key-answerable gate and spawn-time pre-registration for every spawn kind.
agy gates every fresh worktree too; the spawn pre-registers it in agy's own store the same way, and a strict post-launch gate answers any dialog that still renders before the spawn reports success.
Cursor suppresses its dialog with launch-time `--trust`, and Muse suppresses its own with `--yolo`.
Grok dodges its gate instead of granting trust, because its project picker appears only outside a project and the spawn starts in the isolated git root.
Grok renders a folder-trust gate in a linked worktree, and `references/harness/grok.md` owns how to verify the worker's real location, answer it, and where the decision persists; the project picker is a separate dialog that stays absent when the spawn starts in a git root.
Pi gates the fresh-worktree case too, but unlike Claude its dialog is answered with Enter, and `references/harness/pi.md` owns that recipe and where the decision persists.
Codex shows a directory-trust dialog on the first run for a repository root.

Expand All @@ -39,7 +39,8 @@ The tool reference records repeat, acknowledgement, and clearing behavior, while

Native resume availability and form belong solely to the selected tool reference.
Use native resume only when both that reference and the recovery procedure call for it.
Deterministic relaunch instead trusts instructions on disk, not a private session.
Deterministic relaunch instead trusts instructions on disk, not a private session, and never needs a session id printed at exit.
One relaunch-time exception is the runtime's own recorded session identity, used only to keep that runtime's status authority valid across the replacement - `../../../docs/agent-control.md` "Transactional relaunch" owns it.

`../stuck-crewmate-recovery/SKILL.md` owns worker recovery and `../secondmate-provisioning/SKILL.md` owns secondmate recovery; both preserve recorded work.
The router's recovery scenarios select the additional common references for replacement profiles and secondmates.
11 changes: 8 additions & 3 deletions .agents/skills/harness-adapters/references/harness/claude.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Every claude spawn therefore pre-registers the directory its pane starts in befo
A second, separate dialog - "Allow external CLAUDE.md file imports?" - renders whenever a loaded CLAUDE.md chain reaches outside the project tree, which every crewmate's does through the captain's own `~/.claude/CLAUDE.md` importing `~/.claude/RTK.md`.
`--setting-sources project,local` (the minimal worker tool surface) does not suppress it either, and it gates the pane exactly like the trust dialog: cursor on "No, disable external imports", no way to move the selection from firstmate's steering plane.

`../../../bin/fm-claude-trust.sh` records `hasTrustDialogAccepted` for both the worktree and its primary checkout in `${CLAUDE_CONFIG_DIR:-$HOME}/.claude.json` for a ship or scout spawn; a secondmate spawn registers only its own home entry, since a secondmate home has no separate primary-checkout entry to carry import consent forward from.
`../../../bin/fm-claude-trust.sh` records `hasTrustDialogAccepted` for both the worktree and its primary checkout in `${CLAUDE_CONFIG_DIR:-$HOME}/.claude.json`, where a home's worker account pin decides `CLAUDE_CONFIG_DIR` (`../../../docs/configuration.md` "Worker account pin"), for a ship or scout spawn; a secondmate spawn registers only its own home entry, since a secondmate home has no separate primary-checkout entry to carry import consent forward from.
For a ship or scout spawn, the external-imports flags (`hasClaudeMdExternalIncludesApproved`, `hasClaudeMdExternalIncludesWarningShown`) are carried forward alongside the trust flag only when the primary checkout's project entry already carries an explicit `hasClaudeMdExternalIncludesApproved===true` from a prior interactive session - the common first-spawn case is a project claude has never been asked about, so those two flags are left unwritten and the import dialog still renders, even though trust registers normally.
When the project entry instead already carries an explicit decline (`hasClaudeMdExternalIncludesApproved===false` with `hasClaudeMdExternalIncludesWarningShown===true`), the whole registration refuses - including the trust flag - rather than manufacture consent the human never gave, so that spawn wedges on the trust dialog before it would even reach the import one.
Both flags `false` is Claude Code's default entry for a project never asked, not a decline, and is treated like an absent flag: trust registers and the import dialog still renders.
Expand All @@ -32,7 +32,11 @@ The why-two-entries mechanism and the consent-gating logic live in the script's
Never try to answer either dialog with a key.
Firstmate's key plane carries only Enter, Escape, and C-c with no arrow navigation, so it cannot move a dialog's selection at all, and both dialogs render with the cursor on their declining option, which means a sent Enter ends the session instead of accepting.
A visible trust dialog means pre-registration did not take effect (or the project entry already carries an explicit decline) - inspect the store and the spawn's error output rather than sending keys.
A visible external-imports dialog is expected, not a failure signal, whenever the project entry has no prior explicit approval on record - the common first-spawn case; `fm-control.sh <id> interrupt` delivers Escape, which dismisses whichever of the two is on screen without answering it, and is the safe way to clear a wedged pane for inspection.
A visible external-imports dialog is expected, not a failure signal, whenever the project entry has no prior explicit approval on record - the common first-spawn case.
`fm-control.sh <id> interrupt` delivers Escape, which is the safe way to clear a wedged workspace-trust dialog for inspection without answering it.
Escape on the external-imports dialog is different: it records a permanent decline (`hasClaudeMdExternalIncludesApproved: false`, `hasClaudeMdExternalIncludesWarningShown: true`) that `../../../bin/fm-claude-trust.sh` then correctly refuses to override on every later spawn for that project.
Leave a pane showing the external-imports dialog alone and have a person answer it interactively instead of interrupting it.
To recover from an already-recorded decline, remove both flags from the project's entry in `~/.claude.json` and approve the imports dialog once by hand.

The once-per-machine bypass-permissions confirmation is a third, separate dialog, scoped to the machine rather than the path, and pre-registration does not address it.
Never send Enter to that one either: it was observed rendering in the same shape as the trust dialog, with the selection on `No, exit` and the footer `Enter to confirm . Esc to cancel`, so Enter ends the session rather than accepting.
Expand Down Expand Up @@ -64,7 +68,7 @@ A `--secondmate` launch omits the statement because a secondmate operates under

## Primary integration

Primary behavior was verified 2026-07-04 on 2.1.201, preserved 2026-07-08 on 2.1.204, and Stop auto-arm revalidated 2026-07-24 on 2.1.219.
[`../../../../../docs/verification/supervision.md`](../../../../../docs/verification/supervision.md#turn-end-guard) records the current primary and Stop auto-arm live evidence.
This differs from the worker hook, which only touches a task marker through `.claude/settings.local.json`.

Primary `.claude/settings.json` registers `../../../bin/fm-turnend-guard.sh --claude` and `../../../bin/fm-claude-stop-autoarm.sh` with `asyncRewake: true` and `timeout: 28800`.
Expand All @@ -77,6 +81,7 @@ Hooks still run through cwd-sensitive `/bin/sh`, so tracked commands anchor thro

The Stop-owned watcher hook runs every Stop, foregrounds `../../../bin/fm-watch-arm.sh` only when eligible, and uses exit-2 async reawakening as notification.
The model handles notifications but never routine re-arm.
In a home with `config/supervision-host` the hook foregrounds the supervision host instead, which also runs Claude's print mode as its headless engine; [`supervision-host.md`](../../../../../docs/supervision-host.md#engines) owns the verified engine facts.
Claude's PreToolUse seatbelt blocks directly, and its deny is honored only with empty stdout; `../../../docs/arm-pretool-check.md` owns that contract.

### Delegation guard
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,5 @@ The tracked hook anchors to `pwd -P`, verifies that root is Firstmate-shaped and

Codex's primary watcher protocol is `../../../bin/fm-watch-checkpoint.sh --seconds "${FM_CODEX_WATCH_CHECKPOINT:-180}"`, not `../../../bin/fm-watch-arm.sh`.
Codex cannot reason while a foreground tool call is running, so the checkpoint is deliberately foreground and bounded to return control regularly for user messages and queued notifications.
In a home with `config/supervision-host` the checkpoint runs the supervision host instead of the watcher, with Claude's print mode as its headless engine, and holds for at least an hour while away; [`supervision-host.md`](../../../../../docs/supervision-host.md) owns the host and that bound.
Codex's PreToolUse watcher-arm seatbelt blocks directly through its project hook.
2 changes: 2 additions & 0 deletions .agents/skills/harness-adapters/references/harness/cursor.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Cross-harness provider and credential identity is owned by `references/common/mo
|---|---|
| Binary | `fm_cursor_resolve_binary` in `../../../bin/fm-cursor-lib.sh` resolves stable launcher `cursor-agent` or legacy `agent`, never `cursor`; both symlink into `~/.local/share/cursor-agent/versions/<version>/cursor-agent`, whose target auto-update replaces. |
| Launch | Positional instructions with `--trust`, `--yolo`, optional `--model <model>`, and `--workspace <absolute-task-worktree>`, after clearing foreign primary markers. |
| Attribution | Cursor can append a Co-authored-by trailer after the typed message. Every fleet launch installs the pane-scoped commit-msg strip in `../../../bin/fm-git-strip-ai-trailers.sh`, which removes known AI trailers and leaves human co-authors and the author identity untouched. |
| Models | Use current-account `cursor-agent --list-models` or legacy `agent --list-models`; the drifting observed list had only `cursor-grok-4.5-high` and `cursor-grok-4.5-high-fast` for Grok plus several `xhigh` ids, so choose a returned reasoning id and never assume low or medium Grok. |
| Busy state | `../../../bin/fm-busy-lib.sh` folds the per-conversation transcript as `cursor-transcript`: `role:user` opens and typed `turn_ended` closes success or abort, covering manual interrupt; nothing is armed or seeded, and this backend-agnostic source was identical on tmux and Herdr. |
| Exit command | `/exit`. |
Expand Down Expand Up @@ -68,6 +69,7 @@ Example: `../../../bin/fm-spawn.sh <task-id> <project> --scout --harness cursor
## Primary integration

Primary supervision is the stop-hook park in `../../../docs/supervision-protocols/cursor.md` through tracked `.cursor/hooks.json`; primary and secondmate launches require `--trust` or hooks do not load.
In a home with `config/supervision-host` the park runs the supervision host instead of `../../../bin/fm-watch-arm.sh`, with Claude's print mode as its headless engine; [`supervision-host.md`](../../../../../docs/supervision-host.md) owns the host.
Cursor exposes 20 project events plus a Claude-Code compatibility map that loads `.claude/settings.json`.
Tracked hooks register `stop`, `sessionStart`, and two `preToolUse` seatbelts through `$CURSOR_PROJECT_DIR`; Claude entries stand down on Cursor payloads under `../../../docs/turnend-guard.md`.

Expand Down
Loading
Loading