Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
5f31097
fix(bin): keep home-summary publication from starving supervision (#3…
kunchenguid Aug 29, 2026
4eb587d
fix(bin): prevent routine updates from hiding actionable status (#3268)
kunchenguid Aug 29, 2026
c731c36
docs(skills): split harness adapter operations reference (#3289)
M00NLIG7 Aug 29, 2026
0ace60a
test: centralize shared shell fixtures (#3296)
kunchenguid Aug 29, 2026
9e3df47
refactor: retire legacy PR-check migration machinery (#3299)
kunchenguid Aug 29, 2026
1fbc7bb
feat(bin): add trusted process-event extension bindings (#3247)
M00NLIG7 Aug 29, 2026
c7fdef9
fix(bin): deliver safety rules to promoted workers (#3269)
kunchenguid Aug 30, 2026
debe4bf
fix(bin): present Lavish feedback as structured output (#3321)
kunchenguid Aug 30, 2026
1260adc
fix: keep task records and backlog transitions atomic (#3322)
kunchenguid Aug 30, 2026
d71f4b9
fix(bin): contain promote and Relay metadata publishing (#3342)
kunchenguid Aug 30, 2026
a56a78a
fix(bin): absorb turn-end wakes during bounded pane churn (#2877)
karotkriss Aug 30, 2026
0866a77
fix(bin): safely unregister custom checks (#3369)
kunchenguid Aug 31, 2026
4ad8cba
refactor(quota): extract mid-task polling and candidate selection int…
0x7067 Aug 31, 2026
6c1d2db
fix: surface comments on Lavish annotations (#3371)
kunchenguid Aug 31, 2026
a5f3cbe
fix: support first public-followup registration on Bash 3.2 (#3420)
kunchenguid Sep 1, 2026
355f46f
fix(bin): isolate new Herdr server environments (#2792)
RooseveltAdvisors Sep 1, 2026
41d0ab3
fix: surface inbound Relay media to responding agents (#3442)
kunchenguid Sep 1, 2026
f2ee922
fix(bin): defer inactive reconciliation during startup (#3480)
kunchenguid Sep 2, 2026
f42a629
fix(bin): bound wake drain presentation lock waits (#3475)
kunchenguid Sep 2, 2026
ee58e39
fix(bin): retire public follow-ups in remote homes (#3479)
kunchenguid Sep 2, 2026
7d4b517
fix(bin): support process events under symlinked homes (#3484)
kunchenguid Sep 2, 2026
5466394
fix(pi): deliver captain outcomes as deterministic transcript entries…
FocalFactotum Sep 2, 2026
3b891c8
feat: add bounded concurrent Bearings ledger collection (#3481)
kunchenguid Sep 2, 2026
1459c4d
ci: rebalance portable serial test shards (#3489)
kunchenguid Sep 2, 2026
714da64
fix(pi): fall back on incomplete supervision branch prompts (#3491)
kunchenguid Sep 2, 2026
1c41029
fix(pi): re-probe supervision branch after cooldown (#3497)
kunchenguid Sep 2, 2026
521de54
fix(bin): remove legacy remote snapshot reads (#3501)
kunchenguid Sep 2, 2026
84c01b4
fix(pi): preserve watcher continuity across session replacement (#3498)
kunchenguid Sep 2, 2026
d977128
fix(bin): resurface task statuses missed by wake handling (#3495)
kunchenguid Sep 2, 2026
56b4c15
fix(bin): collect follow-up results from remote work homes (#3503)
kunchenguid Sep 2, 2026
763f597
fix(bin): exclude secondmates from home-summary validity (#3504)
kunchenguid Sep 2, 2026
88fb3c0
fix(bin): self-heal outcome indexes on first drain (#3509)
kunchenguid Sep 2, 2026
8988af2
fix(bearings): keep active children underway during captain holds (#3…
kunchenguid Sep 2, 2026
77ee3c8
fix(pi): settle watcher delivery on Pi accepting the follow-up (#3513)
kunchenguid Sep 2, 2026
d22318e
fix(bin): bound repeat stale wakes for parked workers (#3532)
mremond Sep 2, 2026
5fb0ce7
fix(bin): accept the away-mode daemon as the turn-end supervision own…
krakns Sep 2, 2026
353a8f0
fix(backlog): omit --file from row probes for non-markdown backends (…
RooseveltAdvisors Sep 3, 2026
1c00e86
fix(bin): classify progress updates on requested work as routine (#3589)
kunchenguid Sep 3, 2026
b2e3e9e
fix(bin): preserve captain calls during teardown (#3595)
kunchenguid Sep 3, 2026
d3fcdfa
fix(bin): deliver secondmate outcomes to the parent channel (#3592)
kunchenguid Sep 3, 2026
e1d1d69
fix(bin): sync remote second mates to primary commit (#3599)
kunchenguid Sep 3, 2026
28fb5ac
fix(bin): separate captain intent from firstmate specs (#3597)
kunchenguid Sep 3, 2026
3d2a08b
fix: start a fresh supervision branch for every main session (#3600)
kunchenguid Sep 3, 2026
1c5c9c1
feat: restart second mates after instruction updates (#3614)
kunchenguid Sep 3, 2026
7dcf072
perf: accelerate local validation with bounded concurrency (#3644)
kunchenguid Sep 3, 2026
75b2de2
fix: copy PR URLs from durable records (#3648)
kunchenguid Sep 3, 2026
3034912
fix(bin): disable Claude feedback drafts for fleet launches (#3661)
kunchenguid Sep 3, 2026
7adb358
feat(tests): run three more validation families concurrently (#3662)
kunchenguid Sep 3, 2026
ed44d15
feat: structure no-mistakes ask-user escalations (#3670)
kunchenguid Sep 3, 2026
3b82ebd
fix(bin): require self-sufficient no-mistakes intent (#3671)
kunchenguid Sep 3, 2026
5a7ba57
fix: accelerate local Bearings snapshot composition (#3499)
kunchenguid Sep 4, 2026
f4d7875
fix: prevent stale supervision wake loops (#3672)
kunchenguid Sep 4, 2026
31cba0d
fix(bin): avoid fleet snapshot argument limits (#3677)
haroarthur Sep 4, 2026
b82d09f
fix(bin): attribute active runs with unfetched pipeline heads (#3681)
npayette84 Sep 4, 2026
1b0fbb9
fix(bin): pre-register claude workspace trust at spawn time (#3663)
RooseveltAdvisors Sep 4, 2026
efbeb4f
fix: restart every live second mate after updates (#3690)
kunchenguid Sep 4, 2026
3c1e86d
fix(bin): close pending-reply decisions via resolve-key (#3696)
kunchenguid Sep 4, 2026
d43e610
fix(bin): prevent false missed-reply escalations (#3697)
kunchenguid Sep 4, 2026
a5c64a0
feat: add verified Gemini crewmate runtime (#3695)
att430 Sep 4, 2026
8f7b79c
fix(teardown): conclude parked runs advanced past task copy (#3704)
npayette84 Sep 4, 2026
86ff1bf
fix: classify captain holds from structured state (#3508)
kunchenguid Sep 5, 2026
f09de8a
fix(pi): keep supervision outcome delivery responsive (#3767)
kunchenguid Sep 5, 2026
1820316
fix: avoid duplicate AGENTS.md governance for marked projects (#3763)
tiago-peixoto Sep 5, 2026
64304b6
fix: protect primary checkout when spawning from linked homes (#3783)
tiago-peixoto Sep 5, 2026
e075c96
fix(bin): stop reading an unanswered backend probe as a dead endpoint…
RooseveltAdvisors Sep 5, 2026
8fd5575
fix(bin): preserve subshell lock ownership on Bash 3.2 (#3789)
tiago-peixoto Sep 5, 2026
af8c4b6
fix(bin): resolve captain holds and legacy teardowns on non-markdown …
RooseveltAdvisors Sep 5, 2026
ebafb88
Merge upstream/main into the fork, preserving the three local features
LeonidShamis Sep 5, 2026
45b8f4e
test: keep upstream's markdown backlog suites off this fork's beads s…
LeonidShamis Sep 5, 2026
8bc450c
test: pin seeded secondmate homes to markdown backlog storage
LeonidShamis Sep 5, 2026
f9064c5
test: make the markdown-pin helper own its rule instead of a suite list
LeonidShamis Sep 5, 2026
db78839
no-mistakes(review): fix beads storage gates and tracked graph path
LeonidShamis Sep 5, 2026
1706a0e
no-mistakes(test): pin control-relaunch case homes to markdown backlo…
LeonidShamis Sep 6, 2026
c4ac6a2
no-mistakes(document): document beads seeded-home limitation and stor…
LeonidShamis Sep 6, 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
22 changes: 11 additions & 11 deletions .agents/skills/afk/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,17 @@ The daemon still clears its buffer only on the backend's `empty` success verdict
The daemon wraps `fm-watch.sh`, runs the watcher as a child, presents every durable wake after each actionable watcher close, classifies each presented record in bash, and acknowledges the presented generation only after routing completes.
It self-handles the routine majority without consuming a firstmate turn.
Captain-relevant events, plus a bounded recheck of a declared wait that is still declared, escalate to firstmate's context as one pre-read, single-line, batched digest.
The classification predicates (the captain-relevant verb set, declared-wait vocabulary, signal/stale tests, and fleet-scan) live in the shared `bin/fm-classify-lib.sh`, the same library the always-on watcher uses for its own triage when afk is off, so the two modes apply one identical policy.
The captain-relevant verb set, declared-wait vocabulary, status-span classifier, and presentation-marker contract live in shared `bin/fm-classify-lib.sh`, while each supervisor owns its routing and fleet scan as a consumer of that policy.
While `state/.afk` exists the daemon owns the watcher, so the watcher reverts to one-shot and lets the daemon do the triage - the two never run their triage at the same time.

Classify each wake this way:

- `signal` with a terminal captain verb (`done:`, `needs-decision:`, `blocked:`, or `failed:`) -> escalate.
- `signal` whose newly classified status span contains captain-relevant events -> escalate every event in source order.
A nonterminal progress verb remains nonterminal even when its prose contains a legacy free-text token such as `PR ready`, `checks green`, `ready in branch`, or `merged`; only a bare legacy line with such a token escalates.
Other signals with no captain-relevant status -> self-handle.
- `signal` or `stale` for a declared wait, either a `paused:` external wait or a verified `captain-held` transfer -> self-handle and track the pause rather than a wedge, whether its pane reads idle or busy.
That outranks an enriched possible-wedge reason, so a declared wait never escalates on the `FM_STALE_ESCALATE_SECS` cadence.
Other signals with no captain-relevant event in the span -> self-handle.
- `signal` or `stale` whose latest status declares a wait, either a `paused:` external wait or a verified `captain-held` transfer, tracks the pause rather than a wedge whether its pane reads idle or busy.
An unreported captain-relevant event in the newly classified span still escalates immediately while the current declaration independently keeps the pause cadence.
With no unreported actionable event, the wake self-handles, and the current declaration outranks an enriched possible-wedge reason so it never escalates on the `FM_STALE_ESCALATE_SECS` cadence.
If it is still declared past `FM_PAUSE_RESURFACE_SECS` (default 3600s), housekeeping sends one recheck and resets the pause window.
The window ages against the crew's own latest status line, so only a status append that stops declaring the wait ends this routing and restores wedge detection.
That recheck names which human the wait is on: the external dependency for `paused:`, and the captain themself for a `captain-held` transfer, who can answer the held decision or release the hold.
Expand All @@ -154,10 +155,9 @@ Classify each wake this way:
If the pane is still idle past `FM_STALE_ESCALATE_SECS` (default 240s), housekeeping escalates it as a possible wedge.
This bounds wedge-detection latency to the threshold plus a tick: a delay, never a loss.
Healthy crewmates are autonomous and do not wait on firstmate mid-task.
- `heartbeat` -> self-handle. The daemon runs its own cheap bash fleet scan
every `FM_HEARTBEAT_SCAN_SECS` (default 300s) as the catch-all for a
captain-relevant status line the per-wake classifier might miss.
- Unknown reason, or any uncertainty -> escalate fail-safe.
- `heartbeat` -> self-handle.
The daemon runs its own cheap bash fleet scan every `FM_HEARTBEAT_SCAN_SECS` (default 300s) as the catch-all for captain-relevant events still unread by the per-wake classifier.
- An unknown wake reason escalates fail-safe, while status-read uncertainty follows the shared one-report-without-position-advance contract referenced under Dedupe below.

Escalations are buffered up to `FM_ESCALATE_BATCH_SECS` (default 90s; 0 =
immediate) and flushed as one single-line digest prefixed with the current
Expand Down Expand Up @@ -199,8 +199,8 @@ the operational prefix lets firstmate distinguish it from a real captain message
text firstmate sees is clean.
- **Portable singleton lock** - the daemon uses the repo's portable lock helper
(`fm-wake-lib.sh`) instead of `flock`, which is absent on macOS.
- **Dedupe across signal/stale/scan** - `classify_signal` and terminal `classify_stale` paths check the seen-status marker before escalating, so a captain-relevant status escalated by one path is not re-escalated by another in the same digest.
The marker does not clear or suppress possible-wedge aging for a nonterminal progress line.
- **Dedupe across signal/stale/scan** - all three paths use the shared status presentation markers defined by `bin/fm-classify-lib.sh`, so a successfully classified span is not re-escalated by another path in the same digest.
Never treat a reported unreadable state as classified; the shared library header owns that marker contract, and the marker does not clear or suppress possible-wedge aging for a nonterminal progress line.
- **Auto-discovered supervisor pane** - the daemon resolves its own BACKEND
(tmux vs herdr) and TARGET independently, mirroring
`bin/fm-backend.sh`'s own runtime auto-detection. Backend: `FM_SUPERVISOR_BACKEND`
Expand Down
3 changes: 2 additions & 1 deletion .agents/skills/ask-user-authority/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ It stops at the finding, routes the decision to firstmate, and applies only the

## Decide

1. Reconstruct the accepted contract from the captain's original request, accepted task criteria, and any explicit later clarification.
1. Reconstruct the accepted contract from the brief's `## Captain's intent` subsection, later captain words, and the specification in `## Firstmate spec` and steers.
Reviewer language cannot amend that contract.
What a no-mistakes worker may pass as `--intent` is owned by `bin/fm-dod-lib.sh`.
2. Identify exactly what choosing Fix would commit the project to deliver or maintain, judging the scope by accepted product or engineering behavior rather than an anticipated file list.
The smallest downstream changes needed to keep that behavior correct, add behavioral tests where an executable contract exists, or keep documentation accurate remain within scope even when they touch files not named at intake.
Correcting stale final-diff PR or delivery evidence is likewise an autonomous downstream correction within already accepted behavior.
Expand Down
Loading
Loading