[auto-review] The interactive ticket runtime (`ticket_runtime.py`) was not updated t
**Severity:** high **Location:** mission-control/ticket_runtime.py **Flagged by:** gemini **Issue:** The interactive ticket runtime (`ticket_runtime.py`) was not updated to inj...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge15d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_medium · cwd /home/lucienne/workspace/mission-control/.claude/worktrees/pool-0 · uptime 15d 4h · last activity 15d 2h ago
Description
MC-4406
**Severity:** high
**Location:** mission-control/ticket_runtime.py
**Flagged by:** gemini
**Issue:**
The interactive ticket runtime (`ticket_runtime.py`) was not updated to inject the full `builder_brief_block`, creating an inconsistency with the subprocess dispatch path (`mc_pickup.py`). While `mc_pickup` was updated in commit b92c792 to use `mc_role_guidance.builder_brief_block`, the interactive path still only injects the narrower `architect_brief_block`. This means interactive workers do not receive the full "Builder responsibility" and "Evidence by work class" guidance, contradicting the documented intent in `mc_role_guidance.py` that both dispatch paths should inject the same contract.
**Suggested fix:**
In `ticket_runtime.py`, modify the `_initial_prompt_text` function to call `mc_role_guidance.builder_brief_block(ticket)` instead of `mc_role_guidance.architect_brief_block(ticket)`. This will align both the interactive and subprocess worker dispatch paths.
---
Found by mc-auto-review on 2026-05-29 06:03 SAST.
Repos reviewed: workspace, mission-control.
auto-review-hash: 45ae9ba3ae76
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· High
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
mc-auto-review (scheduled)
Mission Control
15d ago
15d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.ticket_runtime_doneprofile claude_opus_1m_medium · cwd /home/lucienne/workspace/mission-control/.claude/worktrees/pool-0 · uptime 15d 4h · last activity 15d 2h 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.
Ticket picked up by Luci via MC dispatcher.
MC-4406: [auto-review] The interactive ticket runtime (`ticket_runtime.py`) was not updated t
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
luci15d ago
Ticket runtime send failed while dispatching.
root_cause: HTTP Error 409: CONFLICT
safe_retry: returned to `todo` for a fresh runtime retry.
human_input_required: no
system15d ago
RUNTIME TERMINAL STATE (MC-3482 contract)
status: warning
summary: Ticket runtime send failed; parked for automatic recovery.
root_cause: send failed while injecting into ticket runtime: Ticket runtime is not ready for input (status=running). Wait for the current turn to finish, or explicitly interrupt/restart the runtime before sending more terminal input. This message was not sent.
safe_retry: Queued message was returned to pending and the ticket was returned to todo for a fresh runtime retry; no human input is needed.
stop_condition: After the configured retry limit, leave the ticket blocked for operator inspection instead of looping.
human_input_required: no
next_actions:
- Pickup will retry the pending message in a fresh runtime.
- Inspect runtime/send only if the retry fails again.
artifacts:
- ticket:MC-4406
luci15d ago
Luci picking up this ticket (background worker).
luci15d ago
Ticket runtime send failed while dispatching.
root_cause: HTTP Error 409: CONFLICT
safe_retry: returned to `todo` for a fresh runtime retry.
human_input_required: no
system15d ago
RUNTIME TERMINAL STATE (MC-3482 contract)
status: warning
summary: Ticket runtime send failed; parked for automatic recovery.
root_cause: send failed while injecting into ticket runtime: Ticket runtime is not ready for input (status=running). Wait for the current turn to finish, or explicitly interrupt/restart the runtime before sending more terminal input. This message was not sent.
safe_retry: Queued message was returned to pending and the ticket was returned to todo for a fresh runtime retry; no human input is needed.
stop_condition: After the configured retry limit, leave the ticket blocked for operator inspection instead of looping.
human_input_required: no
next_actions:
- Pickup will retry the pending message in a fresh runtime.
- Inspect runtime/send only if the retry fails again.
artifacts:
- ticket:MC-4406
Luci15d ago
ticket_runtime._initial_prompt_text now injects mc_role_guidance.builder_brief_block (was architect_brief_block), matching mc_pickup subprocess path so both dispatch paths inject identical Builder+evidence contract. Verified non-UI=Builder only, UI=+Architect. Committed 4333de1, pushed master, luci-dashboard restarted (HTTP 200).
luci15d ago
Workflow action `review_ready` applied. Work ready for review.
api15d ago
Gated + signed off. Verified on mission-control HEAD 4333de1: ticket_runtime._initial_prompt_text now calls mc_role_guidance.builder_brief_block (line 1167), identical to the subprocess path mc_pickup.py:367. builder_brief_block emits Builder responsibility + evidence-by-work-class always, and appends the Architect design checklist only when is_ui_facing (mc_role_guidance.py:172-173 returns '' for non-UI). So non-UI=Builder-only, UI=+Architect — exactly as claimed. Both dispatch paths now inject the identical contract and cannot drift. Closing.
luci15d ago
Shadow reviewer verdict: FAIL (advisory only). Ticket was gated to done by the orchestrator/operator — not reopening; the gate is authoritative.
Reasons: The committed diff (done_sha=77a2275) contains only timestamp updates in config files, WhatsApp status log changes, and failsafe-state.json heartbeat updates. There is no modification to mission-control/ticket_runtime.py or any Python source file whatsoever. The worker claims to have committed 4333de1 with the fix, but the actual diff provided shows no code change related to the requirement of replacing architect_brief_block with builder_brief_block. No tests are present either.
Gaps:
- No change to ticket_runtime.py in the diff — the core requirement is completely unaddressed
- No test evidence for the claimed change
- Diff only contains config timestamps and log metadata, not the required source code fix
luci-operator15d ago
Luci Operator: promoted this assigned `inbox` ticket to `todo` so pickup can run it.
Luci shepherd15d ago
Shepherd row-drift repair: pickup returned 409/tmux_spawn_failed, but live tmux mc-MC-4406 is running in the isolated worktree. Normalized ticket back to in_progress, restored runtime_session 282320 as running, pane pid 57358. No duplicate dispatch.
Luci shepherd15d ago
Controller gate after shadow-review mismatch: verified MC-4406 is actually landed on mission-control origin/master as 4333de1fe03df171a137dbca9922f51a06b685db. Evidence: ticket_runtime.py now calls mc_role_guidance.builder_brief_block(ticket) at line 1167; direct smoke asserts architect_brief_block is no longer used for that builder block; narrow role-contract tests passed: `python3 -m pytest -q tests/test_mc4372_role_guidance.py tests/test_mc4378_subprocess_role_contract.py` = 21 passed; luci-dashboard is active and /api/health returns 200. Broader tests/test_ticket_runtime_regressions.py still has 4 unrelated legacy failures (Workbench asset expectations + MC3590 routing regression), so not blocking this gate. Corrected stale done_sha metadata from the shadow-review source and kept ticket done.