Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
171 commits
Select commit Hold shift + click to select a range
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
a29cdce
fix: reduce local ShellCheck source-analysis cost (#3778)
kunchenguid Sep 5, 2026
d6660d7
fix(pi): route decision-owned wake batches to main (#3776)
kunchenguid Sep 5, 2026
f19efa6
feat(bin): add opt-in worker launch environment allowlist (#3802)
tiago-peixoto Sep 5, 2026
f9aca25
feat(bin): add rovo crewmate/scout adapter with home-path file access…
Puneet-Patwari Sep 5, 2026
12fc10e
fix(bin): prevent false pipeline blocks after drive timeouts (#3813)
kunchenguid Sep 6, 2026
702004e
fix(bin): scope the worker role contract for ship and scout launches …
tiago-peixoto Sep 6, 2026
c499f84
fix(bin): stop ringing steering doorbells into dead panes (#3823)
kunchenguid Sep 6, 2026
51d2e8c
fix(bin): wait out transient primary-checkout reads in the spawn work…
tiago-peixoto Sep 6, 2026
c562be1
fix: support stock macOS Bash 3.2 paths (#3732)
3264studios Sep 6, 2026
a913539
fix(bin): read orphaned green ci monitor and daemon-down failed recor…
RooseveltAdvisors Sep 6, 2026
85ad5e7
fix(spawn): verify preserved backlog state after interrupted spawn de…
RooseveltAdvisors Sep 6, 2026
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
484b64e
merge: sync upstream/main (9f8ad95a) into the fork, keeping every for…
TastyTom13 Sep 16, 2026
3600435
fix: port fork behaviours onto upstream's restructured contracts
TastyTom13 Sep 16, 2026
41df23d
test: adapt fork suites to upstream's board, live-gate, and Underway …
TastyTom13 Sep 16, 2026
628e88e
test: pin the fork's declared-wait rule in upstream's churn case; 4h …
TastyTom13 Sep 17, 2026
be61f79
test: read the fork's recheck wording in upstream's wedge-threshold d…
TastyTom13 Sep 17, 2026
15d1be4
test: hint the 37 serial scripts upstream's coverage guard found unme…
TastyTom13 Sep 17, 2026
8750e96
test: drop the fork's duplicate record_daemon_lock helper (upstream's…
TastyTom13 Sep 17, 2026
757dcbe
fix: keep the browser-bridge owner watcher off fake panes and off the…
TastyTom13 Sep 17, 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
  •  
  •  
  •  
158 changes: 87 additions & 71 deletions .agents/skills/afk/SKILL.md

Large diffs are not rendered by default.

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
107 changes: 80 additions & 27 deletions .agents/skills/bearings/SKILL.md

Large diffs are not rendered by default.

44 changes: 32 additions & 12 deletions .agents/skills/bearings/assets/board-template.html
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,17 @@
so every count of queued work excludes them. */
function isWarning(t) { return t && t.kind === "warning"; }
function chartedQueued(rows) { return (rows || []).filter(function (t) { return !isWarning(t); }); }
/* Charted Next reads newest filed first, so the most recently filed upcoming
work is at the top. ISO filed dates compare as text; a row with no
comparable date keeps its payload order after every dated row. */
function chartedOrder(rows) {
var dated = [], undated = [];
(rows || []).forEach(function (t) {
if (t && typeof t.filed === "string" && t.filed) dated.push(t); else undated.push(t);
});
dated.sort(function (a, b) { return a.filed < b.filed ? 1 : (a.filed > b.filed ? -1 : 0); });
return dated.concat(undated);
}
var chartedMoreQueued = data.charted_more || 0;
var chartedMoreWarnings = data.charted_warning_more || 0;
function utf8ByteLength(text) { return new TextEncoder().encode(text).length; }
Expand Down Expand Up @@ -843,10 +854,9 @@
var fd = new FormData(form);
var value = fd.get("answer");
var note = (fd.get("note") || "").trim();
/* picked option, optionally annotated; a bare note is itself the answer */
var answer = value ? (note ? value + " - " + note : value) : note;
if (!answer) return;
if (utf8ByteLength(answer) > 512) {
var displayAnswer = value ? (note ? value + " - " + note : value) : note;
if (!displayAnswer) return;
if (utf8ByteLength(displayAnswer) > 512) {
answerLimit.textContent = "Answer is too long to queue (512 bytes maximum).";
answerLimit.classList.add("is-visible");
return;
Expand All @@ -856,13 +866,20 @@
answerLimit.classList.add("is-visible");
return;
}
/* close carries the composer-declared close mode: "release" frees a
captain-gated work item instead of completing a question task */
var ctxData = { question: item.key, answer: answer };
/* The versioned context keeps the selected option separate from its
note, while close carries the composer-declared completion mode:
"release" frees a captain-gated work item instead of completing a
question task. */
var ctxData = {
schema: "fm-bearings-answer.v1",
question: item.key,
selection: value || "",
note: note
};
if (item.close) ctxData.close = item.close;
window.lavish.queuePrompt(
"Captain's Call answer - " + item.title + ": " + answer,
{ tag: "choice", text: item.title + " -> " + answer, element: form,
"Captain's Call answer - " + item.title + ": " + displayAnswer,
{ tag: "choice", text: item.title + " -> " + displayAnswer, element: form,
data: ctxData }
);
card.classList.add("is-queued");
Expand Down Expand Up @@ -911,10 +928,13 @@
var row = el("div", "bb-row");
row.appendChild(badge(t.state === "working" ? "online" : "info", t.state));
var main = el("div", "bb-row__main");
main.appendChild(el("div", "bb-row__title", shownTitle(t.doing, t.idea)));
/* the snapshot's durable name-or-id label leads the row so a scan says
WHICH task this is; the run status keeps its place on the second line */
main.appendChild(el("div", "bb-row__title", shownTitle(t.name, t.idea)));
/* captain-facing rows name the repo; the internal task id shows only when
no repo is known */
main.appendChild(el("div", "bb-row__sub", t.kind + " · " + (t.repo || t.id)));
main.appendChild(el("div", "bb-row__sub",
t.doing + " · " + t.kind + " · " + (t.repo || t.id)));
row.appendChild(main);
uw.appendChild(row);
});
Expand Down Expand Up @@ -1014,7 +1034,7 @@
if (!chartedQueued(data.charted).length && !chartedMoreQueued) {
ch.appendChild(el("div", "bb-empty", "Nothing is queued."));
}
data.charted.forEach(function (t) {
chartedOrder(data.charted).forEach(function (t) {
var row = el("div", "bb-row");
if (t.dispatchable && !isWarning(t)) {
anyPickable = true;
Expand Down
26 changes: 17 additions & 9 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 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, HOME_SUMMARY, BACKLOG_RECONCILE, SECONDMATE_SYNC, SECONDMATE_LIVENESS, SECONDMATE_HANDOFF, NUDGE_SECONDMATES, or FMX - or reports that an interrupted backlog cleanup may have left an endpoint or local copy, or when a standalone bin/fm-bootstrap.sh or bin/fm-startup-network.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, PRESENTATION_UNAVAILABLE, BACKEND_INVALID, NEEDS_GH_AUTH, TANGLE, STARTUP_MEMORY_BUDGET, CREW_DISPATCH invalid, FLEET_SYNC, NETWORK_CHECKS, HOME_SUMMARY, BACKLOG_RECONCILE, SECONDMATE_SYNC, SECONDMATE_LIVENESS, SECONDMATE_HANDOFF, NUDGE_SECONDMATES, or FMX - or reports that an interrupted backlog cleanup may have left an endpoint or local copy, 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 any other BOOTSTRAP_INFO fact, means no skill load.
user-invocable: false
metadata:
Expand All @@ -19,9 +19,12 @@ 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.46.0, because this repo's PR gate requires structured pipeline attestation that older builds do not write.
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 essential axi-family tools - `gh-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.
- `PRESENTATION_UNAVAILABLE: lavish-axi ...` - explain that visual presentation is unavailable and continue nonvisual work with plain-text decisions and reports; do not hold unrelated dispatch for installation consent.
Do not use Lavish until it satisfies the floor owned by `bin/fm-bootstrap.sh`; when visual work needs it, request consent for the printed install or upgrade command, then rerun bootstrap to confirm compatibility before using it.
Scout briefs check the same floor when scaffolded and ask for a text report instead of a Lavish loop, so scaffold a visual scout only after that rerun confirms compatibility.
- `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).
Expand All @@ -45,22 +48,27 @@ When any diagnostic needs captain attention, report the plain consequence and re
Read the named record for the recorded reasons, then reproduce with a direct `bin/fm-home-summary-refresh.sh` (no `--best-effort`, which is what keeps the failure quiet) so the refresh error reaches you.
A recorded deadline means the complete refresh did not finish inside `FM_HOME_SUMMARY_TIMEOUT`, so inspect lock acquisition and producer completion before validation or publication, and fix the blocked phase rather than raising this load-bearing bound.

- `BOOTSTRAP_INFO: closed the backlog item for <id> after interrupted cleanup; its endpoint or local copy may remain and should be reconciled` - replay closed the item, but the durable close says physical cleanup was interrupted.
- `BOOTSTRAP_INFO: closed the backlog item for <id> after interrupted cleanup; its endpoint or local copy may remain and should be reconciled` - replay closed the item, but the durable transition says physical cleanup was interrupted.
Verify process reaping, the local-copy return, and endpoint closure, then reconcile any surviving resource.
- `BACKLOG_RECONCILE: <id>: recorded backlog close could not be replayed: <reason>` - this session start found a pending-close record but could not land it.
A valid teardown record proves the close was authorized and recorded, but physical cleanup may be partial: verify process reaping, the local-copy return, and endpoint closure before assuming those resources are gone.
- `BOOTSTRAP_INFO: kept the captain call for <id> open with its deliverable recorded after interrupted cleanup; its endpoint or local copy may remain and should be reconciled` - replay retained the captain-held item, but physical cleanup was interrupted.
Verify process reaping, the local-copy return, and endpoint closure without closing or lifting the captain's call, then reconcile any surviving resource.
- `BACKLOG_RECONCILE: <id>: recorded backlog close could not be replayed: <reason>` - this session start found a pending-close record carrying a close or retention transition but could not land it.
A valid teardown record proves the transition was authorized and recorded, but physical cleanup may be partial: verify process reaping, the local-copy return, and endpoint closure before assuming those resources are gone.
A validation error means the record cannot be trusted, so do not assume cleanup completed or follow any path or argument stored in it.
Read the named reason, inspect the marker as inert data when validation failed, fix the record or backlog-file problem, and rerun session start so a valid recorded close replays.
Never hand-close the item by deleting `state/<id>.backlog-close` - that can discard a completion link the cleanup captured, and the surviving marker prevents the record sweep from starting the item meanwhile.
Read the named reason, inspect the marker as inert data when validation failed, fix the record or backlog-file problem, and rerun session start so the valid recorded transition replays.
Never delete `state/<id>.backlog-close` by hand - that can discard a completion link or captain-call retention the cleanup captured, and the surviving marker prevents the record sweep from starting the item meanwhile.
- `BACKLOG_RECONCILE: <id>: worker record exists but its backlog item could not be read: <reason>` - this home could not determine whether the item matches its worker record.
Resolve the named backlog read problem and rerun session start; never guess by starting or closing an unreadable item.
- `BACKLOG_RECONCILE: <id>: worker record exists but its backlog item could not be moved to In flight: <reason>` - this home owns a worker whose backlog item is still queued, and the reconciliation could not correct it.
Until it is corrected, the fleet view reads that worker as work no backlog item owns; resolve the named backlog problem and rerun session start.
- `BACKLOG_RECONCILE: code-root <file> is not this home's <file>; ...` - a tasks-axi write addressed the code root instead of this home, so the queue has already forked and either copy may hold rows the other lacks; [`docs/configuration.md`](../../../docs/configuration.md) ("Backlog backend") owns why.
Neither copy is a safe winner: union-merge them into this home's file by task id, resolve each conflicting id to its most recent real transition, check this home's archive before treating a missing Done row as lost, and verify the merged id set equals the union of both inputs before installing it.
Then move the code-root file aside rather than deleting it, tell the captain which rows were recovered, and run every later backlog command through `bin/fm-tasks-axi.sh`; re-linking the code-root copy is never the fix, because the next cwd-relative tasks-axi write replaces the link again.
- `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.
- `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, pending backlog receipt or receiver-wake confirmation.
Preserve that outbox and rerun `bin/fm-backlog-handoff.sh --resume-pending` after the route or endpoint problem is resolved; never re-add or dispatch the items from the main backlog.
- `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 because backlog receipt or local outbox cleanup has not completed; [`bin/fm-backlog-handoff.sh`](../../../bin/fm-backlog-handoff.sh) owns the release contract.
Preserve that outbox and rerun `bin/fm-backlog-handoff.sh --resume-pending` after the route, receipt, or cleanup problem is resolved; 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.
Expand Down
Loading
Loading