Harden Control Room CLI worker launch/liveness ledger
Root cause follow-up from Elmar question about Codex/Claude calls breaking and MC-4494 showing missing tmux. Problems to fix: - Umbrella/interactive websocket rows with no tmux...
StateDoneNext ActionWaiting: doneOwnerLuciRuntimeClosedAge12d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_high · cwd /home/lucienne/workspace/state/control-room-worktrees/mc-4502-runtime-hardening · uptime 12d 11h · last activity 12d 11h ago
Description
MC-4502
Root cause follow-up from Elmar question about Codex/Claude calls breaking and MC-4494 showing missing tmux.
Problems to fix:
- Umbrella/interactive websocket rows with no tmux_target can be misread as missing tmux workers.
- Background process workers (hermes-bg:proc_*) are sometimes normalized with tmux_session_missing, which is misleading.
- Codex dispatch must smoke-test exact model first and never default to unsupported codex-mini under ChatGPT OAuth.
- Claude Code print-mode exits such as max_turns/max_budget need clearer classification: partial-useful vs failed vs completed-by-controller.
- Completed/recovered tickets should clear stale failure_reason when validator closes them.
Acceptance:
- Runtime/session UI distinguishes websocket-idle, process-dead, tmux-missing, killed-by-controller, and completed-by-controller.
- Watcher does not surface missing-tmux warnings for umbrella/waiting tickets with no active worker expected.
- Tests cover MC-4494-style stale idle row and hermes-bg process rows.
- Existing completed tickets no longer show stale failure banners after controller recovery.
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· High
· Luci
▼
SState
Done
Waiting: done
PPeople
TTiming / Details▼
telegram (human)
-
12d ago
12d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.tmux_session_missingprofile claude_opus_1m_high · cwd /home/lucienne/workspace/state/control-room-worktrees/mc-4502-runtime-hardening · uptime 12d 11h · last activity 12d 11h agoMC is visibility-only. Hermes Luci launches and gates work outside MC, then mirrors evidence/status here.Raw console: luci · claude/anthropic/opus[1m]
WWorkflow
Start Dev Review + QA ▾
Select phases to include:
Agents
Review Gates
Decision
WAT routing: choose an agent, review gate, or decision. Buttons use the live runtime when one is attached.
Created from Elmar report: Codex/Claude worker calls are too brittle and MC-4494 showed a false missing-tmux state. Initial ledger hygiene already applied; this ticket tracks code-level hardening.
controller12d ago
Coder gate dispatched: Claude Code Opus/high in isolated worktree mc-4502-runtime-hardening. Codex standalone smoke failed for gpt-5.5 and related models; this ticket will include codex smoke-test hardening.
validator12d ago
Validator gate complete — MC-4502 landed.
Commit: 1bd1c48
Branch: cr/mc-4502-runtime-hardening
Master: fast-forwarded and pushed to origin/master.
Evidence:
- Codex standalone smoke failure reproduced: installed codex-cli rejects required models under ChatGPT OAuth.
- Coder produced runtime/liveness hardening; controller recovered max-turns partial work.
- Focused validation after final review: `python3 -m pytest tests/test_mc4502_runtime_hardening.py tests/test_ticket_runtime.py tests/test_terminal_state_reconciliation_regressions.py tests/test_runtime_profiles.py tests/test_mc_pickup_larry_runtime.py tests/test_mc4501_comment_author_type_defaults.py tests/test_mc4500_comment_controller_notify.py -q` → 189 passed + 25 subtests.
- Compile: `python3 -m py_compile app.py models.py ticket_runtime.py /home/lucienne/workspace/mc_pickup.py` → passed.
- Independent review required 4 rounds; final verdict APPROVED.
- graphify update completed.
- `git merge-base --is-ancestor 1bd1c48 origin/master` → passed.
Scope shipped:
- Runtime snapshots expose explicit runtime_class.
- Waiting/umbrella tickets no longer surface false missing-tmux failure warnings.
- tmux_session_missing reaper rows no longer appear as operator-facing provider failures.
- Claude max-turns/max-budget is recoverable partial, with immediate harvest-path ticket update.
- DONE/REVIEW/QUESTION verdicts mentioning max_turns/max_budget are not misclassified as partial, including decorated prefixes.
- Codex model smoke-test helper aborts unsupported model launches before tmux start.