Skip to content

feat(director): /setup recalls the guide over the air [spec 10] - #141

Merged
wine-fall merged 1 commit into
mainfrom
zachg-0819--setup-recall
Aug 20, 2026
Merged

feat(director): /setup recalls the guide over the air [spec 10]#141
wine-fall merged 1 commit into
mainfrom
zachg-0819--setup-recall

Conversation

@wine-fall

Copy link
Copy Markdown
Owner

Implements specs/spec10/10-tui.md (§3.2-C, §3.4) and specs/spec03/03-03-guide-harness.md (§7) — the mid-broadcast slice of the conversation-partner boundary (PR 2 of 2, after #140). Closes #97.

  • /setup recalls the guide over the air. A command at every steer site (the /settings precedent): the Director's segment loop parks inside the app's setupRecall while whatever is on the air plays out — the record keeps spinning (boundary decision Q6), no new segment opens — and resumes when the conversation ends. Stub runs answer with the shell pointer. Single-flight; a /quit consumed by the guide's reader is handed back to the Director and honored at all three sites.
  • Same conversation, explicit entry: no standing decline; a clean machine answers everything checks out — nothing to fix.
  • Live application where possible: the voice provider swaps behind a delegate when the resolved voice changed (voiceChanged) — buffered look-ahead dropped first, the old provider closed after a grace so the clip on air keeps its file — the TUI identity line re-greets (refreshIdentity), and a repair the environment outranks says so honestly instead of pretending.
  • The A failing voice endpoint never reopens the setup path — segments skip silently forever #97 reopen path: an auth-shaped synth failure (401/402/403) raises an app seam that turns the CONFIGURED endpoint back into a voice gap for the recall's probes, and names the way back once — type /setup to fix it — instead of skipping segments silently forever.

Verification

  • pnpm test 864 green (new: steer parsing + parked-loop resume + stub pointer + auth hint once + non-auth silence + quit-inside-recall, failing-endpoint gap, zero-gap explicit feedback, setupComplete/voiceChanged units, refreshIdentity re-greet); tsc + oxlint clean.
  • Real pty smoke (pyte 180×48, real engine + real haiku brain, stale-yt-dlp sandbox): boot offer declined → broadcast airs → typed /setup re-probes and re-opens the offer card → the loop stays parked (no new segments while the card waits) → decline resumes the broadcast → /quit acks. PASS, twice (before and after the review fixes).
  • Peer review (codex gpt-5.6-sol, xhigh): 4 findings, 4 applied (failing-endpoint gap reachability; look-ahead invalidation across the voice swap; quit honored inside the recall; TUI identity refresh), each locked with a regression test.

AI coding brief

🤖 Generated with Claude Code

The mid-broadcast slice of the conversation-partner boundary (grilling
decisions Q5/Q6) — and the reopen path issue #97 was missing:

- A typed /setup is a command at every steer site (the /settings
  precedent): the segment loop parks inside the app's setupRecall while
  whatever is on the air plays out — the record keeps spinning, no new
  segment opens — and resumes when the conversation ends. Stub runs
  answer with the shell pointer. Proven live (pty + real brain): offer
  reappears mid-broadcast, the loop stays parked, decline resumes it.
- The recall runs the same runSetup, explicit like `make setup`; a clean
  machine answers "everything checks out — nothing to fix."
- Outcomes apply live where they can: the voice provider swaps behind a
  delegate when the resolved voice changed (buffered look-ahead dropped
  first; the old provider closes after a grace so the clip on air keeps
  its file), the TUI identity line re-greets, and a repair that the
  environment outranks says so honestly.
- An auth-shaped synth failure (401/402/403) now raises an app seam that
  turns the CONFIGURED endpoint back into a voice gap — and names the
  /setup path once — so a lapsed key is no longer a silently mute radio
  with no way back (closes #97).

Peer review (codex gpt-5.6-sol, xhigh): 4 findings, 4 applied — the
failing-endpoint gap, look-ahead invalidation across the swap, quit
honored inside the recall at all three steer sites, and the identity
refresh — locked with regression tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@wine-fall
wine-fall merged commit f2f7963 into main Aug 20, 2026
3 checks passed
@wine-fall
wine-fall deleted the zachg-0819--setup-recall branch August 20, 2026 07:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A failing voice endpoint never reopens the setup path — segments skip silently forever

1 participant