Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
258 commits
Select commit Hold shift + click to select a range
56ee51b
docs: trim firstmate agent guidance duplication (#258)
kunchenguid Jul 4, 2026
aaf7de2
feat(backends): improve cmux detection and socket-mode guidance (#259)
kunchenguid Jul 4, 2026
dc37d58
fix(backends): scope zellij tabs by firstmate home (#252)
kunchenguid Jul 4, 2026
65bb62e
fix: sync project clones after merged PR wakes (#293)
kunchenguid Jul 6, 2026
23f2e9c
fix: canonicalize spawn worktree path checks (#294)
kunchenguid Jul 6, 2026
e04902d
docs: add Orca operator skill (#276)
Jul 6, 2026
295c13d
fix: surface green PRs during CI monitoring (#297)
kunchenguid Jul 6, 2026
678f2b5
fix(teardown): recover provably stale git index locks (#296)
kunchenguid Jul 6, 2026
138a9d0
feat(bin): encode project AGENTS.md authoring bar with canonical self…
kunchenguid Jul 7, 2026
463cb51
feat(skills): add captain-invocable bearings status-report skill (#300)
Ballestar Jul 7, 2026
49ffe5d
fix(watcher): make PID identity locale-invariant (#285)
pchuri Jul 7, 2026
0a7cb88
docs: document codex app backend contract (#222)
Jul 7, 2026
a790a20
docs: add Codex Desktop coordination skill (#275)
Jul 7, 2026
f5e89b9
fix(afk): stop herdr escalation redelivery loop (#317)
kunchenguid Jul 7, 2026
01dca33
fix(backends): confirm Herdr submits with native agent state (#323)
kunchenguid Jul 7, 2026
7a42707
feat: add quota-balanced crew dispatch selection (#327)
kunchenguid Jul 8, 2026
121b902
fix(session-start): respawn dead secondmate agents conservatively
kunchenguid Jul 8, 2026
28a3b0e
fix: emit stable secondmate nudge selectors (#331)
kunchenguid Jul 8, 2026
c9e5ba3
feat: require bootstrap detection for AXI tools (#332)
kunchenguid Jul 8, 2026
2061c37
bearings: delete today's report before recreating (#333)
kunchenguid Jul 8, 2026
228963d
feat: guard primary turn ends across harnesses (#339)
kunchenguid Jul 8, 2026
a894c3a
fix: resolve backend selectors by exact task id first (#342)
kunchenguid Jul 8, 2026
091384b
fix: scale bootstrap fleet-sync timeout (#341)
kunchenguid Jul 8, 2026
0f9b7cc
feat: add fleet snapshot and view commands (#343)
kunchenguid Jul 8, 2026
d8a2ff1
fix(fm-send): fail loudly on unresolvable send targets (#254)
mielyemitchell Jul 8, 2026
95dd1a0
fix: deliver AFK escalations through herdr supervisors (#353)
kunchenguid Jul 8, 2026
090483e
feat: add harness-aware supervision (#367)
kunchenguid Jul 8, 2026
4790bc5
fix: split X-mode replies by platform (#369)
kunchenguid Jul 8, 2026
af5361e
fix: make stow memory writes inspect before update (#372)
kunchenguid Jul 9, 2026
7302a95
fix(watcher): wait when arm attaches to a healthy watcher (#375)
kunchenguid Jul 9, 2026
1b5a9f5
feat(pi): simplify primary session launch (#386)
kunchenguid Jul 9, 2026
766f772
feat(supervision): prevent unsafe watcher-arm commands (#387)
kunchenguid Jul 9, 2026
80ecc8d
fix(pi): restore primary watcher supervision lifecycle (#397)
kunchenguid Jul 10, 2026
7525a37
fix: keep persistent secondmates out of the main backlog (#398)
kunchenguid Jul 10, 2026
600075e
fix(backlog-handoff): move full item blocks including indented bodies…
kunchenguid Jul 10, 2026
4bc0824
feat(herdr): make Herdr lab lifecycle safety deterministic for briefs…
kunchenguid Jul 10, 2026
22b1d71
fix(watcher): classify arm-command seatbelt by execution position (#403)
kunchenguid Jul 10, 2026
96244f4
fix: reconcile existing AGENTS.md safely (#405)
kunchenguid Jul 10, 2026
08453f9
feat: support project-less secondmate homes (#409)
kunchenguid Jul 10, 2026
31afb8c
fix: delegate backlog handoffs to tasks-axi (#411)
kunchenguid Jul 10, 2026
171207c
fix: ignore secondmate home marker during sync (#417)
kunchenguid Jul 10, 2026
a955a05
fix(composer): prevent dead-shell message injection (#416)
kunchenguid Jul 10, 2026
7788fa3
feat(watcher): add paused external-wait supervision (#421)
kunchenguid Jul 10, 2026
5f808cc
fix: preserve X-mode follow-up platform limits (#425)
kunchenguid Jul 10, 2026
0eaf293
fix(composer): handle ANSI ghost text safely (#429)
kunchenguid Jul 10, 2026
6d90240
fix(spawn): make tmux window handling robust under non-default config…
Deeds67 Jul 10, 2026
3e3dff6
test: isolate session-start suite from ambient harness markers (#432)
kunchenguid Jul 10, 2026
38086ea
fix(teardown): retry transient index locks during worktree return (#435)
kunchenguid Jul 10, 2026
492c937
fix: complete brief help and consolidate documentation (#438)
kunchenguid Jul 10, 2026
bc558c6
fix: detect Git and centralize backend configuration (#445)
kunchenguid Jul 10, 2026
52241a5
feat(daemon): add backend-independent wedge alerts (#444)
kunchenguid Jul 10, 2026
8cd90fe
docs: centralize firstmate operating contracts (#447)
kunchenguid Jul 11, 2026
3f549c1
fix(cmux): close last workspace during teardown (#449)
kunchenguid Jul 11, 2026
0daf674
fix: recover orphaned packed-refs locks during fleet sync (#453)
kunchenguid Jul 11, 2026
1fb1e30
feat(herdr): escalate blocked panes immediately (#472)
kunchenguid Jul 11, 2026
ad39e49
docs(readme): reposition firstmate as an agent distro (#473)
kunchenguid Jul 11, 2026
a6508b7
feat: add deterministic bounded bearings snapshots (#475)
kunchenguid Jul 11, 2026
78f9cce
fix: enforce deterministic ShellCheck parity (#481)
kunchenguid Jul 11, 2026
88e38ea
feat: guard primary shells from persistent cd commands (#483)
kunchenguid Jul 12, 2026
cb6e8ed
brief: add no-mistakes shared-daemon rule to ship and scout scaffolds…
mielyemitchell Jul 12, 2026
9ecd7c4
feat: make bearings concise and accurate (#485)
kunchenguid Jul 12, 2026
ad9f3a7
fix: harden away-mode daemon lifecycle (#490)
kunchenguid Jul 12, 2026
6556882
fix: prevent no-mistakes gate agents from driving the fleet (#518)
kunchenguid Jul 13, 2026
2364817
fix: guard secondmate primary sessions from blind turn ends (#505)
kunchenguid Jul 13, 2026
547acd7
fix: make bootstrap diagnostics backend-aware (#519)
kunchenguid Jul 13, 2026
b708731
fix: preserve follow-up platform context after inbox cleanup (#520)
kunchenguid Jul 13, 2026
85b7a29
fix: preserve secondmate routing markers in terminal sends (#533)
kunchenguid Jul 13, 2026
8c0d9eb
fix: align Grok effort handling with 0.2.99 (#527)
korallis Jul 13, 2026
8934c17
fix: derive bearings from authoritative secondmate state (#555)
kunchenguid Jul 14, 2026
eb9ee2f
fix: restore fleet snapshots on stock macOS Bash (#578)
kunchenguid Jul 14, 2026
1811b89
fix(afk): make Pi escalation and return catch-up reliable (#587)
kunchenguid Jul 15, 2026
f8c5941
feat: support Pi max reasoning profiles (#537)
korallis Jul 15, 2026
e063ca5
chore: no-mistakes(document): Clarify yolo response ownership (#595)
kunchenguid Jul 15, 2026
fcb9e8a
feat: establish instruction ownership foundation (#619)
kunchenguid Jul 15, 2026
71db4be
fix: compress Firstmate contract and enforce delivery rigor ownership…
kunchenguid Jul 16, 2026
cd218f2
feat: add durable captain decision holds (#593)
kunchenguid Jul 16, 2026
064aa67
fix(bin): harden PR check artifacts (#556)
kunchenguid Jul 16, 2026
815f7af
fix(bin): compact session-start backlog digest (#636)
kunchenguid Jul 16, 2026
2406354
fix: dedupe stale watcher guard banners (#637)
kunchenguid Jul 16, 2026
c115561
fix(bin): balance bearings landed baseline (#640)
kunchenguid Jul 16, 2026
a5d3652
fix: clarify captain-facing translation contract (#644)
kunchenguid Jul 16, 2026
1346ff7
fix(bin): make bootstrap output and nudges deterministic (#646)
kunchenguid Jul 16, 2026
508a6b7
docs(secondmate-provisioning): clarify concise registry ownership (#649)
kunchenguid Jul 16, 2026
024b96b
fix(bin): strip quoted blocked_by values during decision hold resolve…
kunchenguid Jul 17, 2026
e6f240c
feat(secondmate): inherit shared captain preferences (#656)
kunchenguid Jul 17, 2026
c27135c
feat: gate local agent secret injection (#658)
kunchenguid Jul 17, 2026
85643ee
test: isolate Herdr autodetect smoke sessions (#662)
kunchenguid Jul 17, 2026
5bf59ba
docs: adopt under way for active work (#666)
kunchenguid Jul 17, 2026
6de9278
Revert "feat: gate local agent secret injection (#658)" (#668)
kunchenguid Jul 17, 2026
46e4201
fix(pi): distinguish stale locks when arming watcher (#681)
kunchenguid Jul 17, 2026
1182883
fix: accept secondmate house vocabulary (#685)
kunchenguid Jul 18, 2026
d939c49
fix(bin): parse handoff homes after registry parentheticals (#686)
kunchenguid Jul 18, 2026
3ebb219
feat: add native session-start nudges (#687)
kunchenguid Jul 18, 2026
6bdeb3a
docs: call built-in defaults the firstmate repo, not template (#688)
kunchenguid Jul 18, 2026
bc1a21b
fix(bin): repair fm-brief.sh parse error and harden set -u array expa…
Ballestar Jul 18, 2026
3729081
fix(bin): keep watcher supervision continuous across child cycles (#693)
kunchenguid Jul 19, 2026
b2bf95f
fix: fetch current PR head for review diffs (#722)
kunchenguid Jul 19, 2026
7a9b4dd
docs: resolve five contract contradictions across AGENTS.md, README, …
ICGNU3 Jul 19, 2026
15b0fb9
docs(harness): correct Grok exit guidance (#742)
kunchenguid Jul 19, 2026
ab8cea6
fix(watcher): bound stale wakes for parked crew (#743)
kunchenguid Jul 19, 2026
68c6110
fix(supervision): distinguish ordinary wakes from recovery (#744)
kunchenguid Jul 20, 2026
c12bdea
fix(x-mode): dedupe pending mention wakes (#745)
kunchenguid Jul 20, 2026
4ab61fa
feat(wake): enrich drained signals with bounded status context (#747)
kunchenguid Jul 20, 2026
628292d
feat(herdr): add optional presentation spaces (#784)
kunchenguid Jul 21, 2026
c49f823
fix(send): treat opencode busy-queued composer state as submitted (#775)
KostadinP Jul 21, 2026
3f9e70e
fix(spawn): require two stable reads before accepting worktree path (…
Freudator86 Jul 21, 2026
a26b37c
fix(bin): make watcher process identity immune to Linux wall-clock ch…
vvizlan Jul 21, 2026
ea3ac2e
fix: prevent AFK idle stalls and stale run attribution (#758)
jjames27th-eng Jul 21, 2026
916c8e2
fix(bin): allow safe teardown during watcher recovery (#750)
nithingm Jul 21, 2026
f9a89c3
feat(herdr): order presentation spaces while preserving focus (#790)
kunchenguid Jul 21, 2026
b4316be
fix(bin): send literal config reread nudges after pushes (#809)
kunchenguid Jul 21, 2026
59ece45
feat(watch): follow GitLab merge requests to merge (#797)
karotkriss Jul 21, 2026
c58cb0f
fix(herdr): group projected children beneath owning parents (#821)
kunchenguid Jul 22, 2026
b843c66
fix: keep local no-mistakes tests intent-targeted (#823)
kunchenguid Jul 22, 2026
f02eef1
feat: add canonical timed test runner (#825)
kunchenguid Jul 22, 2026
f61e65c
fix: surface main inventory gaps in Bearings (#830)
kunchenguid Jul 22, 2026
622d467
feat: add bounded concurrent test isolation proof (#832)
kunchenguid Jul 22, 2026
14c0d5f
feat: guard against missed secondmate reports (#834)
kunchenguid Jul 22, 2026
f6c281a
feat: require pinned real-Herdr CI coverage (#838)
kunchenguid Jul 22, 2026
673b6ad
feat: shard portable tests and add bounded local parallelism (#841)
kunchenguid Jul 22, 2026
50cc24a
fix: block primary-session delegation outside the fleet (#854)
ItsFlow Jul 22, 2026
f5bdea3
fix: install tasks-axi in portable CI shards (#866)
kunchenguid Jul 22, 2026
5140413
feat(bin): make dispatch profiles quota aware (#867)
kunchenguid Jul 22, 2026
593e3a2
Add built-in ahoy recap skill (#873)
kunchenguid Jul 22, 2026
5549834
fix: preserve trustworthy Bearings data in partial snapshots (#875)
kunchenguid Jul 22, 2026
4497181
feat(pi): add session-local calm mode (#884)
kunchenguid Jul 23, 2026
82a7943
fix(pi): prevent redundant watcher re-arms (#885)
kunchenguid Jul 23, 2026
6db3b09
fix(pi): clean up Calm transcript rendering (#895)
kunchenguid Jul 23, 2026
bd43c73
fix: execute every PR body compliance event (#898)
kunchenguid Jul 23, 2026
6bcb381
fix: exclude operational injections from ahoy boundaries (#899)
kunchenguid Jul 23, 2026
68ed7ed
fix: canonically classify operational inputs across harnesses (#909)
kunchenguid Jul 23, 2026
a7e01bc
fix: avoid generic secondmate start acknowledgements (#926)
kunchenguid Jul 23, 2026
ca4be1c
fix(pi): make calm mode persistent and gapless (#927)
kunchenguid Jul 23, 2026
b24e72c
fix(watch): retire merged PR polls after durable notification (#932)
kunchenguid Jul 23, 2026
792174d
fix: refine scout intake and parallel dispatch (#934)
kunchenguid Jul 23, 2026
65ad47b
fix(pi): prevent duplicate assistant replies in Calm (#936)
kunchenguid Jul 23, 2026
d89a1b6
perf(bin): shrink the ShellCheck source graph (#939)
kunchenguid Jul 23, 2026
6b0d21d
fix(pi): remove Calm hidden-block gaps (#942)
kunchenguid Jul 23, 2026
ec09871
fix: enforce contract boundaries for ask-user findings (#945)
kunchenguid Jul 24, 2026
587f591
docs: prefer direct operational paths (#946)
kunchenguid Jul 24, 2026
1c4d210
fix(pi): hide operational user rows in Calm mode (#948)
kunchenguid Jul 24, 2026
f017572
fix: relaunch missing second mates at session start (#950)
kunchenguid Jul 24, 2026
3eca8ff
fix(herdr): reclaim resumed task projections after restart (#967)
kunchenguid Jul 24, 2026
cb3aa7b
Teach Ahoy to surface open decisions (#968)
kunchenguid Jul 24, 2026
10ee779
Require shipshape routine acknowledgement (#969)
kunchenguid Jul 24, 2026
861b1f8
docs: separate current guidance from verification evidence (#994)
kunchenguid Jul 24, 2026
418ab78
fix: preserve Claude watcher continuity across Stop hooks (#997)
kunchenguid Jul 24, 2026
2b7cd66
fix(herdr): clean stale projections at session start (#996)
kunchenguid Jul 24, 2026
b05eb24
fix: recover Claude supervision without watcher-status gate (#1001)
kunchenguid Jul 24, 2026
5c89d36
fix: make quota-aware profile selection agent-owned (#1018)
kunchenguid Jul 25, 2026
3f71cdd
fix(bin): remove vestigial dispatch selector (#1026)
kunchenguid Jul 25, 2026
34213e6
docs(agents): drop superseded interim quota-window rule (#1039)
kunchenguid Jul 25, 2026
aca3ad1
fix(tmux): scope busy detection and recognize current Claude turns (#…
kunchenguid Jul 26, 2026
c64ad1c
feat: add verified Kimi crewmate adapter (#1047)
kunchenguid Jul 26, 2026
39b450b
fix: harden Kimi submission and spinner matching (#1058)
kunchenguid Jul 26, 2026
4d6992a
feat(bin): add guarded Kimi turn-end wake (#1059)
kunchenguid Jul 26, 2026
a5fe1bc
fix(tmux): classify bordered composers across all rows (#1066)
kunchenguid Jul 26, 2026
b29621b
feat(bin): add verified pi-signed runtime adapter (#1145)
kunchenguid Jul 27, 2026
9ea1a1a
fix(pi): rearm watcher across session transitions (#1166)
kunchenguid Jul 28, 2026
fa0d85d
feat: route crew dispatch using quota-window pace (#1172)
kunchenguid Jul 28, 2026
fbece9c
fix: adapt Grok Stop continuation and harden endpoint cleanup (#1171)
kunchenguid Jul 28, 2026
514f0ab
fix: restore stock macOS Bash 3.2 brief scaffolding (#1093)
karotkriss Jul 28, 2026
2459f77
test: stabilize tmux teardown conformance baseline (#1209)
kunchenguid Jul 28, 2026
b6e351d
docs: slim quota-array-dispatch to the pace selection core (#1197)
kunchenguid Jul 28, 2026
e5bd082
feat(bin): inherit backend config into secondmate homes (#1219)
kunchenguid Jul 28, 2026
c0c0881
fix(pi): remove Calm's upper version ceiling (#1226)
kunchenguid Jul 29, 2026
7cbb3f6
fix(bin): allow session-local todo tools in the subagent guard (#1204)
danielkuykendall23-boop Jul 29, 2026
a117b41
fix(session-lock): resolve Claude bg-spare ancestry to the outermost …
trillium Jul 29, 2026
a323c2b
fix: conferma l'avvio del watcher su Windows/MSYS (#1212)
Unknownzed Jul 29, 2026
41ffd45
fix(spawn): forward CLAUDE_CONFIG_DIR to claude crewmates (#1195)
lucashalbert Jul 29, 2026
99533c5
fix: preserve dispatch identity across authentication checks (#1233)
kunchenguid Jul 29, 2026
6ec5e08
fix(bin): normalize relative durable paths (#1256)
sparkus Jul 29, 2026
c21bf54
refactor(skills): make Bearings chat-only by default (#1136)
deeto15 Jul 29, 2026
96e027e
Clarify follow-up routing during validation (#1277)
kunchenguid Jul 30, 2026
a24eac1
fix: honor concrete approval for project operations (#1272)
kunchenguid Jul 30, 2026
0bbb27b
fix(skills): route new project intake through secondmate scopes (#1275)
kunchenguid Jul 30, 2026
daf6dce
fix: scope validation corrections by accepted behavior (#1281)
kunchenguid Jul 30, 2026
a2d5f26
test: replace source assertions with behavioral coverage (#1282)
kunchenguid Jul 30, 2026
56a7ac6
fix(watch): escalate busy workers with no completed turn (#1286)
kunchenguid Jul 30, 2026
e595611
fix(gitignore): ignore config/ as a directory, not by exact filename …
karotkriss Jul 30, 2026
a53ffc1
fix(tests): replace source-content .gitignore assertion with behavior…
kunchenguid Jul 30, 2026
79e62b8
feat: bound and consolidate startup memory during stow (#1303)
kunchenguid Jul 30, 2026
f0d7cbe
fix(herdr): place workers in the launching workspace (#1328)
kunchenguid Jul 30, 2026
3a112a1
fix(calm): refine Calm working boat animation (#1339)
kunchenguid Jul 31, 2026
28b02d2
fix(dispatch): preflight candidate auth before quota escalation (#1349)
kunchenguid Jul 31, 2026
5fca47f
feat(x-mode): reconcile promised public replies deterministically (#1…
kunchenguid Jul 31, 2026
96542a4
feat(bin): replace busy heuristics with semantic lifecycle state (#1327)
kunchenguid Jul 31, 2026
621299a
fix: preserve Calm boat continuity across working periods (#1356)
kunchenguid Jul 31, 2026
f7d0d0a
fix: restore evidence-based dispatch eligibility (#1358)
kunchenguid Jul 31, 2026
3772964
docs: define captain instruction precedence (#1362)
kunchenguid Jul 31, 2026
9fdef64
docs: define validation supersession sequence (#1407)
kunchenguid Jul 31, 2026
000c1db
fix: bind backend overrides to exact-task authority (#1413)
kunchenguid Jul 31, 2026
66b0f77
fix(herdr): prevent focus flashes during projected workspace cleanup …
kunchenguid Jul 31, 2026
a805766
fix: prioritize completion runway in quota-aware dispatch (#1431)
kunchenguid Jul 31, 2026
68641a3
fix(bin): preserve full task contract in no-mistakes intent (#1447)
kunchenguid Aug 1, 2026
1e24757
fix(bin): parse punctuated secondmate registry entries safely (#1452)
kunchenguid Aug 1, 2026
8c21b10
feat(bin): add durable process-event supervision (#1483)
kunchenguid Aug 2, 2026
cd73e75
fix(bin): retire terminal process events and surface queued wakes (#1…
kunchenguid Aug 2, 2026
f5ab708
perf: shard portable serial tests across CI runners (#1544)
kunchenguid Aug 2, 2026
88b2a94
fix(bin): correct session lock and attached watcher supervision (#1545)
kunchenguid Aug 2, 2026
33a4287
fix(bin): harden Claude supervision auto-arm recovery (#1495)
kunchenguid Aug 2, 2026
4ee4a0a
feat(bin): require an explicit per-task delivery contract (#1563)
kunchenguid Aug 3, 2026
7809ab9
feat(bin): support remote secondmate homes (#1576)
kunchenguid Aug 3, 2026
976d97f
feat: add per-task trace context propagation (#995)
allstargg Aug 3, 2026
cf95112
fix(bin): harden tmux agent liveness across harnesses (#1577)
kunchenguid Aug 3, 2026
3d9d12d
feat(bin): propagate trace context to remote secondmates (#1609)
kunchenguid Aug 3, 2026
733a504
feat(bin): preflight remote runtime tool paths (#1623)
kunchenguid Aug 4, 2026
e5e8a67
feat: gate remote second mates on Herdr readiness (#1639)
kunchenguid Aug 4, 2026
c8edff3
fix: isolate remote secondmates in shared Herdr session (#1659)
kunchenguid Aug 4, 2026
a83be60
feat: route remote commands through an Aqua job worker (#1660)
kunchenguid Aug 4, 2026
fc3684a
fix: clarify remote doctor bootstrap path (#1691)
kunchenguid Aug 4, 2026
1939785
fix(bin): bound remote SSH dead-peer detection (#1699)
kunchenguid Aug 4, 2026
4a9979a
fix: report stale AXI tools during bootstrap (#1701)
kunchenguid Aug 4, 2026
d0461e4
fix: prevent false watcher-down alarms in Claude sessions (#1661)
karotkriss Aug 4, 2026
1cd97c0
test: prevent fixture temporary directory leaks (#1704)
kunchenguid Aug 4, 2026
3089a57
feat(herdr): enable presentation spaces by default (#1708)
kunchenguid Aug 4, 2026
bb352e7
fix(bin): surface fleet-wide open decisions on every wake drain (#1711)
kunchenguid Aug 5, 2026
7ef26c4
fix(bin): abort parked runs and reap leaked processes before teardown…
kunchenguid Aug 5, 2026
bea3d23
fix: resolve fm-remote-entrypoint.sh SCRIPT_DIR through a PATH symlin…
kunchenguid Aug 5, 2026
71f0b3f
fix(pi): gate Calm built-in overrides by activation state (#1724)
kunchenguid Aug 5, 2026
30b18b9
fix(bin): persist secondmate parent bindings for cleanup (#1727)
kunchenguid Aug 5, 2026
ef2c3a2
feat(bin): enforce latest AXI-family tool floors (#1733)
kunchenguid Aug 5, 2026
bf01a42
fix(bin): bound open decision scans with incremental cursors (#1737)
kunchenguid Aug 5, 2026
6f0f87f
fix(bin): prevent remote polls from blocking session startup (#1754)
kunchenguid Aug 5, 2026
3a8d63e
docs: present X mode as the X and Discord public surface (#1778)
kunchenguid Aug 6, 2026
3b6ee03
fix(bin): run session start deterministically from hooks (#1781)
kunchenguid Aug 6, 2026
5d77b48
fix: rename X mode to Relay in user-facing docs (#1784)
kunchenguid Aug 6, 2026
930ca76
feat: add Muse Code crewmate adapter (#1786)
kunchenguid Aug 6, 2026
8387039
fix(herdr): require 0.8.0 for default presentation spaces (#1787)
kunchenguid Aug 6, 2026
8ec3e94
fix(bin): classify settled Muse session logs as idle (#1788)
kunchenguid Aug 6, 2026
2cf0283
docs(agents): read the persisted digest when only a preview is shown …
kunchenguid Aug 6, 2026
345de4e
fix: preserve fleet state in truncated session-start digests (#1798)
kunchenguid Aug 6, 2026
6c206ed
feat(send): close answered decisions at answer time via --resolve-key…
kunchenguid Aug 6, 2026
fb368dc
fix(bin): seed remote secondmates from supplied origins (#1836)
kunchenguid Aug 7, 2026
91fa548
fix(tests): restore reliable fm-send backend parity coverage (#1851)
kunchenguid Aug 7, 2026
990753a
fix(bin): mirror remote secondmate status streams (#1846)
kunchenguid Aug 7, 2026
199cb79
docs(agents): describe the digest's fleet-state-before-context order …
kunchenguid Aug 7, 2026
4cdd0bd
fix(bin): fail closed on NUL bytes in the durable parent binding (#1847)
kunchenguid Aug 7, 2026
8398d31
fix(skills): reconcile inherited secondmate plans with shipped state …
kunchenguid Aug 7, 2026
4b6b89d
fix: move network checks off the session-start blocking path (#1860)
kunchenguid Aug 7, 2026
d8bb074
fix(procevent): apply remote replies during capture (#1831)
kunchenguid Aug 7, 2026
073cb30
feat(skills): port internal stow curation disciplines to the public s…
kunchenguid Aug 7, 2026
70aeba8
chore(bootstrap): raise lavish-axi version floor to 0.1.46 (#1865)
kunchenguid Aug 7, 2026
06b33aa
fix(bin): keep tracked Claude hook entries inert under grok 1.0.0 (#1…
jayjongcheolpark Aug 7, 2026
60eb534
feat(startup-network): record per-step elapsed times for the deferred…
kunchenguid Aug 7, 2026
167ff42
feat(stow): cascade the internal /stow to every registered secondmate…
kunchenguid Aug 8, 2026
be32879
fix(remote-job): stop workers abandoned by a pruned code root (#1927)
kunchenguid Aug 8, 2026
833a9a2
feat(bin): lint only the changed shard locally, full lint in CI (#1925)
kunchenguid Aug 8, 2026
3899464
sync: integrate canonical upstream advances (256 commits)
DereKk8 Aug 8, 2026
d4590c5
merge: incorporate current fork main updates
DereKk8 Aug 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .agents/skills/ahoy/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ metadata:

Give the captain a concise session-only recap without gathering fresh state.

0. Before anything else, check whether this session has already taken the helm: a `SESSION START` digest for this home must be visible in the session history.
If it is not, run `bin/fm-session-start.sh` once and read its digest before producing any recap.
Run-tier harness surfaces run it automatically at session open, so this step is normally already satisfied and costs one glance; it is the safety net for surfaces that cannot run it on a hook, and for any path where a skill would otherwise act first.
Taking the helm always precedes this skill's own logic, and the digest it produces is operational input, never a captain message or a recap event.

1. Inspect only conversation or session history already visible to the current first mate.
2. Find the most recent real captain-authored message before the current `/ahoy` invocation.
A captain boundary is an ordinary user-role message unless it matches one of the narrow operational exclusions below.
Expand All @@ -32,7 +37,7 @@ Give the captain a concise session-only recap without gathering fresh state.
A later unrelated captain message establishes a recap boundary but does not close an earlier decision.
Treat a decision as closed only when a later visible response substantively resolves it, chooses an option, declines it, grants or denies the requested approval, or otherwise directly addresses that decision.
Include every visibly supported open decision once, and deduplicate by the decision's substance when the ordinary interval recap already represents it or its wording differs.
6. The normal recap branch is session-history-only.
6. The normal recap branch is session-history-only, apart from the step 0 helm check.
Do not call Bearings, shell commands, fleet snapshots, status readers, GitHub or browser APIs, tools, or file reads or writes.
Create no report, persist nothing, and do not guess current live state beyond the last visible event.
7. If no ordinary events occurred after the previous captain message but an older visibly open decision exists, report that decision instead of claiming nothing happened.
Expand Down
23 changes: 16 additions & 7 deletions .agents/skills/bootstrap-diagnostics/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: bootstrap-diagnostics
description: >-
Agent-only handling playbook for session-start bootstrap diagnostics.
Use whenever the session-start digest's bootstrap section prints an actionable diagnostic line - MISSING, MISSING_MANUAL, BACKEND_INVALID, NEEDS_GH_AUTH, TANGLE, STARTUP_MEMORY_BUDGET, CREW_DISPATCH invalid, FLEET_SYNC, PR_CHECK_MIGRATION, SECONDMATE_SYNC, SECONDMATE_LIVENESS, NUDGE_SECONDMATES, or FMX - or when a standalone bin/fm-bootstrap.sh run prints one of those lines.
Use whenever the session-start digest's bootstrap or network-checks section prints an actionable diagnostic line - MISSING, MISSING_MANUAL, BACKEND_INVALID, NEEDS_GH_AUTH, TANGLE, STARTUP_MEMORY_BUDGET, CREW_DISPATCH invalid, FLEET_SYNC, NETWORK_CHECKS, PR_CHECK_MIGRATION, SECONDMATE_SYNC, SECONDMATE_LIVENESS, SECONDMATE_HANDOFF, NUDGE_SECONDMATES, or FMX - or when a standalone bin/fm-bootstrap.sh or bin/fm-startup-network.sh run prints one of those lines.
A silent bootstrap section, or a BOOTSTRAP_INFO fact, means no skill load.
user-invocable: false
metadata:
Expand All @@ -19,15 +19,21 @@ When any diagnostic needs captain attention, report the plain consequence and re
- `MISSING: <tool> (install: <command>)` - list the missing tools to the captain with a one-line purpose each plus the printed install commands, wait for consent (one approval may cover the list), then run `bin/fm-bootstrap.sh install <approved tools...>`.
For `treehouse`, this also covers an installed version whose `treehouse get` lacks `--lease`; treat it as an upgrade request.
For `no-mistakes`, this also covers an installed version older than 1.31.2, because crewmate validation briefs delegate gate mechanics to no-mistakes' version-matched guidance.
For `tasks-axi`, this also covers an installed build that fails the compatibility probe (`docs/configuration.md` "Backlog backend" owns the definition); `config/backlog-backend=manual` only suppresses the verbose `BOOTSTRAP_INFO: tasks-axi available` fact, not this missing-tool report.
For any axi-family tool - `gh-axi`, `lavish-axi`, `tasks-axi`, `quota-axi` - an installed version below its floor is a plain upgrade request; [`bin/fm-bootstrap.sh`](../../../bin/fm-bootstrap.sh) owns the floor policy, and never argue the floor down to whatever the home happens to have installed.
For `tasks-axi`, this additionally covers an installed build that fails the separate feature probe (`bin/fm-tasks-axi-lib.sh` owns the definition); `config/backlog-backend=manual` only suppresses the verbose `BOOTSTRAP_INFO: tasks-axi available` fact, not this missing-tool report.
For `quota-axi`, bootstrap requires it because firstmate reads its current output directly before resolving every crew-dispatch profile array; without it, report the missing requirement and do not choose around an unexamined candidate.
- `MISSING_MANUAL: <tool> (instructions: <url>)` - tell the captain why the tool is required and give them the printed instructions URL, but do not pass the tool to `bin/fm-bootstrap.sh install`; wait for the captain to complete the manual installation, then rerun session start to confirm the dependency is present.
- `BACKEND_INVALID: <name> (known: <names>)` - the resolved runtime backend has no verified dependency or lifecycle contract, so do not dispatch work until the invalid `FM_BACKEND` or `config/backend` value is corrected to one of the listed backends.
- `NEEDS_GH_AUTH` - ask the captain to run `! gh auth login` (interactive; you cannot run it for them).
This probe now arrives from the deferred network stage, so it is also how an unreachable network shows up: `gh` cannot validate its token offline and reports the same failure. Confirm reachability before asking the captain to re-authenticate a credential that may be fine.
- `NETWORK_CHECKS: <what did not complete>; rerun <command>` - the deferred network stage itself could not finish, so the checks it names are simply unknown, not failed.
Rerun the printed command; it is idempotent and re-derives every finding.
A `hit the ...s bound` line means one of those checks is slow or unreachable - most often a remote secondmate host - and the stage stopped rather than letting it wedge; a `lock was no longer held` line means the session that asked for the sweeps no longer owns them, so leave them to the session that does.
- `TANGLE: <remediation>` - the primary checkout is stranded on a feature branch instead of its default branch; `AGENTS.md` section 8 explains why this guard exists and what it protects.
The work is safe on that branch ref; restore the primary to its default branch with the printed `git -C <root> checkout <default>`, then re-validate that branch in a proper worktree.
This is the only sanctioned firstmate-initiated git write to the primary, and it is a non-destructive branch switch that strands nothing.
- `STARTUP_MEMORY_BUDGET: invalid config/startup-memory-budget - <reason>` - the visible startup-memory budget is not a safe one-line positive decimal file; do not infer the default or propagate it. Correct the local primary file, then rerun session start so the normal convergence path can deliver the validated value to secondmate homes.
- `STARTUP_MEMORY_BUDGET: invalid config/startup-memory-budget - <reason>` - the visible startup-memory budget is not a safe one-line positive decimal file; do not infer the default or propagate it.
Correct the local primary file, then rerun session start so the normal convergence path can deliver the validated value to secondmate homes.
- `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.
Expand All @@ -44,10 +50,13 @@ When any diagnostic needs captain attention, report the plain consequence and re
Resume the emitted supervision protocol after finishing the session-start wake handling.
- Any other `PR_CHECK_MIGRATION:` refusal means migration did not complete safely, whether because watcher exclusion, a private path, a diagnostic, quarantine validation, or marker publication could not be proved.
Keep each affected poll unavailable, inspect the named private state path, and do not bypass the migration or execute a quarantined artifact; a completed safe-scan marker allows unrelated authenticated polls to continue while private repair remains pending.
- `SECONDMATE_SYNC: secondmate <id>: skipped: <reason>` - the local-HEAD secondmate sync left a live secondmate home on its existing checkout because the home was dirty, diverged, unsafe, on the wrong branch, missing the primary target commit, or otherwise not fast-forwardable, or because inherited local-material propagation failed; bootstrap continued, but inspect the reason because the secondmate's tracked instructions, inherited settings, or shared captain preferences may be stale after a primary update.
- `SECONDMATE_SYNC: secondmate <id>: skipped: <reason>` - secondmate convergence left a live home on its existing checkout because the home was dirty, diverged, unsafe, on the wrong branch, missing its placement-specific target commit, unreachable, or otherwise not fast-forwardable, or because inherited local-material propagation failed; bootstrap continued, but inspect the reason because the secondmate's tracked instructions, inherited settings, or shared captain preferences may be stale after a primary update.
- `SECONDMATE_LIVENESS: secondmate <id>: skipped: <reason>|respawn failed after <cause>: <reason>` - the session-start liveness sweep could not guarantee that the registered secondmate is running a real agent process.
Investigate the reason because that secondmate is not guaranteed live.
- `NUDGE_SECONDMATES: secondmate <id>: send failed: <reason>` - the secondmate sweep fast-forwarded a running secondmate home and its loaded instruction surface (`AGENTS.md`, `bin/`, or `.agents/skills/`) changed, but the deterministic `fm-send.sh fm-<id>` re-read nudge failed.
Inspect the reason, keep the pending marker under `state/.secondmate-nudge-pending/` intact, and rerun session start after the endpoint or metadata issue is fixed so bootstrap can retry the exact same marked send.
- `FMX: X mode on ...` / `FMX: X mode off ...` - bootstrap confirmed or removed the local X-mode poll artifacts (`docs/configuration.md` "X mode (.env)").
- `SECONDMATE_HANDOFF: secondmate <id>: pending delivery: <n> item(s)` - queued work has already left the main dispatchable backlog and remains safe in the named remote route's backlog-format outbox.
Preserve that outbox and rerun `bin/fm-backlog-handoff.sh --resume-pending` after same-host connectivity returns; never re-add or dispatch the items from the main backlog.
An unsafe-outbox variant requires path and file-type inspection before any retry.
- `NUDGE_SECONDMATES: secondmate <id>: send failed: <reason>` - secondmate convergence changed a running home's loaded instructions or inherited config, but the deterministic `fm-send.sh fm-<id>` re-read nudge failed.
Inspect the reason, keep the pending marker under `state/.secondmate-nudge-pending/` intact, and rerun session start after the endpoint or metadata issue is fixed so bootstrap can retry the exact same marked send on the same local or remote route.
- `FMX: X mode on ...` / `FMX: X mode off ...` - bootstrap confirmed or removed the local Relay poll artifacts (`docs/configuration.md` "Relay (.env)"); the emitted line still carries Relay's former `X mode` wording.
Only when a running watcher needs the cadence transition applied immediately, restart the home-scoped watcher through the emitted harness supervision protocol; bootstrap deliberately never restarts the watcher itself.
23 changes: 23 additions & 0 deletions .agents/skills/firstmate-coding-guidelines/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,29 @@ Mark an axis not applicable only after inspecting its integration surface, and u
For critical safety, routing, startup, and supervision infrastructure, prefer deterministic and idempotent enforcement over relying on agent memory alone.
Keep instructions as the authority and discovery layer, but make repeated execution converge safely and make invalid or unsafe states fail closed wherever the runtime can enforce them.

### Harness-dependent checks

This section is the single owner of the rule and of how to satisfy it.

A check is harness-dependent when its verdict comes from something the vendor emits: a process name, rendered output, a spinner or keybind glyph, a banner, or a key the harness binds.
Anything in that class must be proven end to end against the real harness, because a stub or fake agent can only confirm the assumption already written into the stub.
That proof is authorized to spend tokens; the cost is small against a check that silently stops working.

Build the check on the most structural signal that answers the question, and prefer a kernel or protocol fact over anything a release note could change.
When a rendered surface is genuinely the only source, read more than one independent signal and let any of them carry a positive verdict, so no single vendor string is load-bearing.
Where a surface signal is unavoidable, back it with a guard that fails loudly naming the harness and version rather than degrading quietly.

Every such check needs two tests, because they fail for different reasons:

- A portable regression in `tests/` that pins the logic with real processes and no harness, so CI enforces the classifier everywhere it runs tmux.
Drive the signals apart deliberately and assert the verdict survives losing one; assert the divergence itself so the case cannot go quietly vacuous.
Confirm which signal a given construction actually blinds on each supported platform rather than assuming, because the same trick can break different sources on macOS and Linux.
- A live guard in the `live-harness-optin` family (`bin/fm-test-run.sh`), env-gated and self-skipping, that exercises every INSTALLED harness for real and fails naming the harness and version.
Report an absent harness explicitly rather than passing silently over it, and refuse a pass that checked nothing.
This guard is opt-in and on-demand because standard CI has neither harness binaries nor credentials; run it after every harness upgrade and before trusting refreshed per-harness evidence.

Record the dated per-harness result in `docs/verification/runtime-backends.md`, and point at the live guard as the command that refreshes it, rather than leaving a version-scoped observation to rot into a false claim.

## Documentation change review

For every changed maintained prose surface, identify its inventory audience, authoritative owner, current-behavior relevance, destination for supporting evidence, and any unique safety fact that removal could lose.
Expand Down
Loading
Loading