Skip to content

feat(monitor): TUI StopRun via daemon verb + v2 dispositions (coupling-core Phase B)#464

Merged
proboscis merged 1 commit into
mainfrom
feat/coupling-core-phase-b
Jun 12, 2026
Merged

feat(monitor): TUI StopRun via daemon verb + v2 dispositions (coupling-core Phase B)#464
proboscis merged 1 commit into
mainfrom
feat/coupling-core-phase-b

Conversation

@proboscis

Copy link
Copy Markdown
Owner

Summary

Stacked on #463 (Phase A). Phase B of docs/design/coupling-core-roadmap.md.

B3 (partial) — TUI StopRun → daemon verb

before                                   after
──────                                   ─────
TUI: kill via LOCAL mux                  TUI: m.api.StopRun(ctx, ref)
   + append canceled client-side         daemon: host-aware kill (worker
→ broken for worker-hosted runs            lease for remote) + canceled
→ client-plane status writer               append with source=user

Whitelist meter: 46 → 45 frozen writers.

B2 — dispositions recorded (run-state-machine.md §6)

Writers Disposition
W2–W7 launch ladders + bootstrap-fail integrate into step() (v2, first)
W6 feedback, W8 user stop integrate (v2)
W9 master projections quarantine — law boundary (status-preserving replication)
W10 external append quarantine — law boundary (orch repair = sanctioned client)
TUI ResolveRun pending issue; equation specified in §6

§7 — open-law decisions

  • D-C1 restart transparency (L7): WasAlive/PRRecorded become fold-derivable; DeadCheckCount/PromptStreak/OutputHash declared ephemeral-by-law (bounded re-convergence). No new persistence mechanism.
  • D-C3 (L3'): never-alive verdict asymmetry resolved — both planes conclude unknown after grace (restores I7 liveness).

Verification

  • go build / go vet clean; write-surface semgrep scan: 0 findings
  • No behavior tests existed for Monitor.StopRun; daemon StopRun path is covered by existing proto handler tests

🤖 Generated with Claude Code

…ispositions (coupling-core Phase B)

B3 (partial): Monitor.StopRun previously killed the session via the LOCAL
multiplexer and appended a canceled status client-side — both wrong for
worker-hosted runs (the session lives on another host) and a violation of
the daemon-as-SSOT boundary. It now calls the daemon StopRun verb, which
owns the host-aware session kill (worker lease) and the user-sourced
canceled append. One frozen client writer removed (whitelist 46 -> 45).

B2: every frozen status writer now has a recorded disposition in
docs/design/run-state-machine.md §6 — integrate into step() (W2-W8) or
quarantine as a law boundary (W9 projections, W10 external append with
orch repair as its sanctioned client). The B3 ResolveRun consolidation is
specified as an equation for a follow-up issue.

Also records two open-law decisions in §7: D-C1 (restart transparency via
fold-derivable fields + ephemeral-by-law counters, L7 — no new
persistence mechanism) and D-C3 (never-alive verdict asymmetry resolved:
both planes conclude unknown after grace, L3').

Verified: go build/vet, semgrep write-surface scan 0 findings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@proboscis proboscis deleted the branch main June 12, 2026 07:56
@proboscis proboscis closed this Jun 12, 2026
@proboscis proboscis reopened this Jun 12, 2026
@proboscis proboscis changed the base branch from feat/coupling-core-phase-a to main June 12, 2026 07:57
@proboscis proboscis merged commit 77b41bf into main Jun 12, 2026
@proboscis proboscis deleted the feat/coupling-core-phase-b branch June 12, 2026 07:59
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.

1 participant