feat: make /quiet a statement when attended supervision is ready - #5928
Merged
Merged
Conversation
On a home that opted into the supervision host, quiet mode is what the attended host already does, so /quiet now enters nothing there instead of launching the quiet daemon and writing a record that would park a present captain's main. - bin/fm-afk-launch.sh quiet-check says quiet mode needs nothing where the attended host runs, or that the session is paused while its broken-session latch holds; a quiet enter refuses there before writing anything. - Where the home opted in but the attended host lacks a part (engine, tools, verified mirror writer, identifiable main session, valid mirror), quiet-check names it and quiet mode falls back to the daemon. - Under a live away record on that home, quiet-check and a quiet enter refuse and name the record, so the return runs first, whatever state/.afk says. - A quiet enter records mode: quiet in the posture record, so start and start-native launch the quiet daemon without FM_AFK_MODE, and the away refusal wording fires only for away. - bin/fm-host-mirror.sh check validates the dialog mirror read-only and exits 1 on a missing, unreadable, or invalid mirror. - The quiet and afk skills and the supervision-host docs describe the new behavior; homes without the opt-in and Pi homes keep the daemon path.
neel-mishra
added a commit
to neel-mishra/firstmate
that referenced
this pull request
Sep 28, 2026
…odel flag (#1) * fix: silence routine no-change supervision outcomes (kunchenguid#5808) * Allow silent task-level no-change outcomes * no-mistakes(review): Exclude silent outcomes from captain-return handoffs * fix: look up supervision receipts by exact sequence * no-mistakes(review): Suppress silent notes in away-return brief * no-mistakes(review): Clarify visible notes; remove unused mode * no-mistakes(review): Clarify silent outcomes and avoid false drain promises * no-mistakes(document): Clarify silent supervision outcome documentation * feat: make /quiet a statement when attended supervision is ready (kunchenguid#5928) * feat: make /quiet a statement where the attended supervision host runs On a home that opted into the supervision host, quiet mode is what the attended host already does, so /quiet now enters nothing there instead of launching the quiet daemon and writing a record that would park a present captain's main. - bin/fm-afk-launch.sh quiet-check says quiet mode needs nothing where the attended host runs, or that the session is paused while its broken-session latch holds; a quiet enter refuses there before writing anything. - Where the home opted in but the attended host lacks a part (engine, tools, verified mirror writer, identifiable main session, valid mirror), quiet-check names it and quiet mode falls back to the daemon. - Under a live away record on that home, quiet-check and a quiet enter refuse and name the record, so the return runs first, whatever state/.afk says. - A quiet enter records mode: quiet in the posture record, so start and start-native launch the quiet daemon without FM_AFK_MODE, and the away refusal wording fires only for away. - bin/fm-host-mirror.sh check validates the dialog mirror read-only and exits 1 on a missing, unreadable, or invalid mirror. - The quiet and afk skills and the supervision-host docs describe the new behavior; homes without the opt-in and Pi homes keep the daemon path. * no-mistakes(review): Archive the quiet record when a quiet daemon start fails * no-mistakes(document): Clarify quiet-mode documentation and remove stale duplicates * fix(bin): deliver opencode model through config, not the rejected --model flag The installed opencode's interactive `opencode --prompt` launch rejects `--model` (the CLI accepts it only on `opencode run`), so any pinned-model spawn died before the worker read its brief. Carry the resolved model as the OPENCODE_CONFIG_CONTENT config's top-level `model` field, beside the effort variant already keyed there, and stop emitting the positional flag. Other harnesses keep their `--model` flag unchanged. --------- Co-authored-by: John Poyser <13007391+jcpoyser@users.noreply.github.com> Co-authored-by: Kun Chen <3233006+kunchenguid@users.noreply.github.com> Co-authored-by: Neel Mishra <neelmishra@Neels-Mac-Mini.local>
This was referenced Sep 28, 2026
knowttl
pushed a commit
to knowttl/firstmate
that referenced
this pull request
Sep 29, 2026
…chenguid#5928) * feat: make /quiet a statement where the attended supervision host runs On a home that opted into the supervision host, quiet mode is what the attended host already does, so /quiet now enters nothing there instead of launching the quiet daemon and writing a record that would park a present captain's main. - bin/fm-afk-launch.sh quiet-check says quiet mode needs nothing where the attended host runs, or that the session is paused while its broken-session latch holds; a quiet enter refuses there before writing anything. - Where the home opted in but the attended host lacks a part (engine, tools, verified mirror writer, identifiable main session, valid mirror), quiet-check names it and quiet mode falls back to the daemon. - Under a live away record on that home, quiet-check and a quiet enter refuse and name the record, so the return runs first, whatever state/.afk says. - A quiet enter records mode: quiet in the posture record, so start and start-native launch the quiet daemon without FM_AFK_MODE, and the away refusal wording fires only for away. - bin/fm-host-mirror.sh check validates the dialog mirror read-only and exits 1 on a missing, unreadable, or invalid mirror. - The quiet and afk skills and the supervision-host docs describe the new behavior; homes without the opt-in and Pi homes keep the daemon path. * no-mistakes(review): Archive the quiet record when a quiet daemon start fails * no-mistakes(document): Clarify quiet-mode documentation and remove stale duplicates
RooseveltAdvisors
pushed a commit
to RooseveltAdvisors/firstmate
that referenced
this pull request
Sep 29, 2026
…chenguid#5928) * feat: make /quiet a statement where the attended supervision host runs On a home that opted into the supervision host, quiet mode is what the attended host already does, so /quiet now enters nothing there instead of launching the quiet daemon and writing a record that would park a present captain's main. - bin/fm-afk-launch.sh quiet-check says quiet mode needs nothing where the attended host runs, or that the session is paused while its broken-session latch holds; a quiet enter refuses there before writing anything. - Where the home opted in but the attended host lacks a part (engine, tools, verified mirror writer, identifiable main session, valid mirror), quiet-check names it and quiet mode falls back to the daemon. - Under a live away record on that home, quiet-check and a quiet enter refuse and name the record, so the return runs first, whatever state/.afk says. - A quiet enter records mode: quiet in the posture record, so start and start-native launch the quiet daemon without FM_AFK_MODE, and the away refusal wording fires only for away. - bin/fm-host-mirror.sh check validates the dialog mirror read-only and exits 1 on a missing, unreadable, or invalid mirror. - The quiet and afk skills and the supervision-host docs describe the new behavior; homes without the opt-in and Pi homes keep the daemon path. * no-mistakes(review): Archive the quiet record when a quiet daemon start fails * no-mistakes(document): Clarify quiet-mode documentation and remove stale duplicates
andrewesweet
pushed a commit
to andrewesweet/firstmate
that referenced
this pull request
Sep 30, 2026
…chenguid#5928) * feat: make /quiet a statement where the attended supervision host runs On a home that opted into the supervision host, quiet mode is what the attended host already does, so /quiet now enters nothing there instead of launching the quiet daemon and writing a record that would park a present captain's main. - bin/fm-afk-launch.sh quiet-check says quiet mode needs nothing where the attended host runs, or that the session is paused while its broken-session latch holds; a quiet enter refuses there before writing anything. - Where the home opted in but the attended host lacks a part (engine, tools, verified mirror writer, identifiable main session, valid mirror), quiet-check names it and quiet mode falls back to the daemon. - Under a live away record on that home, quiet-check and a quiet enter refuse and name the record, so the return runs first, whatever state/.afk says. - A quiet enter records mode: quiet in the posture record, so start and start-native launch the quiet daemon without FM_AFK_MODE, and the away refusal wording fires only for away. - bin/fm-host-mirror.sh check validates the dialog mirror read-only and exits 1 on a missing, unreadable, or invalid mirror. - The quiet and afk skills and the supervision-host docs describe the new behavior; homes without the opt-in and Pi homes keep the daemon path. * no-mistakes(review): Archive the quiet record when a quiet daemon start fails * no-mistakes(document): Clarify quiet-mode documentation and remove stale duplicates
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
stop the ongoing runs and then force upgrade. otherwise we are in dead lock. i want those two stuck changes to start from clean slate by an opus crewmate after the upgrade. i worry it is already polluted by the loop and want a clean slate crewmate to look at what is done and only pick the clean parts and try to land them via new clean branches.
Context: the machine was stuck on no-mistakes v1.83.1, whose document-after-review push-refusal loop (fixed in no-mistakes v1.84.0) kept every run from publishing; both old runs were aborted and the machine is now on v1.84.0. This task is one of those two stuck changes. Its original ask follows, verbatim:
yes do A.
Context: that chose option A for PR #5631 (AFK revamp rung 3c): land the approved repeated-escalation fix first, then re-cut 5631 from the branch's final validated tree into four PRs in dependency order - 3c-1 broken-session latch; 3c-2 dialog mirror for Claude and Cursor; 3c-3 attended posture core with the two drain fixes and the reconciled prompt rule, keeping every Pi home unchanged; 3c-4 the /quiet statement - and move Codex attended support to rung 3d. Each PR ships through no-mistakes and the captain merges. 3c-1 (#5701), 3c-2 (#5707), and 3c-3 (#5748) have landed, and PR 5631 is closed; this is 3c-4, the last piece.
The AFK revamp's standing words also apply: "2 should be done by opus crewmates" and "this is a major architectural revamp so i want it to do very careful live validation including regression in isolated live environments with some real complex sessions before calling it done. it's ok to use my real llm tokens here".
Substance of the referenced assessment for 3c-4: making /quiet a statement on the supervision host - bin/fm-afk-launch.sh's quiet-check and quiet refusals, the quiet and afk skill text, and the tests in tests/fm-afk-launch.test.sh - roughly 80 production, 165 test, and 15 doc lines, behind the config/supervision-host opt-in. The assessment noted /quiet readiness has many states (engine, tools, verified writer, identifiable main session, valid mirror, latch pause) - each with a reason, heavy for what the plan called a statement, but acceptable.
i want to wait for that fix, then live validate the second mate path as well. is that doable?
Context: that later captain request holds /quiet until the new-span wake-scope fix lands and re-validates /quiet live with a second mate present.
What Changed
/quietenter nothing on opted-in homes where the attended supervision host is ready;quiet-checkreports readiness or a paused session without writing a record or starting a daemon.Risk Assessment
Testing
The targeted launcher test passed. In a disposable single-server tmux lab, the ready host handled two second-mate wakes off main, while a malformed mirror caused /quiet to start a daemon that self-handled a wake; /quiet off and the later /afk return restored the expected posture. Failed quiet and away starts produced the expected differing record states. The lab was removed. Evidence is terminal-pane and CLI transcripts rather than screenshots because this was a headless terminal session.
Evidence: Live Claude, second-mate, host, daemon, and posture transcript
Source: Live Claude, second-mate, host, daemon, and posture transcript
Evidence: Failed quiet versus away start CLI transcript
Source: Failed quiet versus away start CLI transcript
Evidence: Targeted AFK launcher test output
Source: Targeted AFK launcher test output
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed ✅
bin/fm-afk-launch.sh:275- A quiet fallback writesmode: quietto the record (bin/fm-afk-contract.sh:225), but this gate treats any existing quiet record as a reason not to use the attended host. If the mirror is missing at quiet entry and becomes available before the daemon starts—or the daemon later stops and its flag disappears—the host still treats that record as away (bin/fm-supervision-host.sh:718,959,1022), parks the present captain, and withholds outcomes. The watcher likewise silences captain-held rechecks based on record presence (bin/fm-watch.sh:410). This leaves the failure the statement is meant to prevent reachable through the authorized fallback. Make the quiet-versus-away distinction hold at the shared posture consumers, including those sibling paths.🔧 Fix applied.
✅ Re-checked - no issues remain.
🔧 **Test** - 1 issue found → no changes applied (3) ✅
tests/fm-afk-launch.test.sh(targeted regression suite)Launched a real Claude primary on a private fm-lab tmux socket and drovebin/fm-afk-launch.sh quiet-check,enter,start, andstopagainst a disposable opted-in lab homeInspected the lab’s posture record, daemon flag, and archived records after each lifecycle step🔧 No changes applied.
2 warnings still open:
/quiet, main response, and absence of posture files before fallbackself-handle: signal: ...mate.status, return response, and absent live posture filesmate.status, and a direct watcher cycle. The lab Stop auto-arm did not produce a handled wake; mate auto-relaunch…claudeprimary and spawned Claude second mate in marked disposable lab homes on a private tmux socket; typed/quietand/quiet offinto the primaryAppended a malformed lab dialog-mirror line, then staged a routinemate.statusupdate and inspected the daemon log and primary transcriptRanfm-afk-launch.sh enterandstartagainst a disposable lab home with an unsupported backend for both quiet and away modesRepaired the injected mirror line, retried/quiet, staged another mate status, and inspected the supervision-host log and wake queue🔧 No changes applied.
2 warnings still open:
bin/fm-lab-home.sh createand directbin/fm-afk-launch.sh enter/startin a disposable worktree-local lab for quiet and away failure pathstmux -S <worktree-lab>/tmux/default new-sessionandTMUX_TMPDIR=. tmux new-sessionto probe boundary-compliant private socketsbin/fm-host-mirror.sh verified claude; checkedclaude --versionand cleaned the lab🔧 No changes applied.
✅ Re-checked - no issues remain.
bash tests/fm-afk-launch.test.shTyped/quiet,/quiet off,/afk hold routine updates while I step out, and/quietinto a real Claude primary with a live second mate; staged three routine mate status updates and inspected the primary pane, host log, daemon log, and posture records.Ranbin/fm-afk-launch.sh enter,start, andquiet-checkagainst disposable quiet and away homes to exercise failed starts.✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.