[auto-review] _reconcile_runtime_row_drift treats any needs_input ticket with a live
**Severity:** high **Location:** mc_pickup.py:1965 **Flagged by:** codex **Issue:** _reconcile_runtime_row_drift treats any needs_input ticket with a live interactive runtime a...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge14d ago
Ticket is done; runtime is closed.·profile control-room-codex-nosandbox · cwd /home/lucienne/workspace/state/control-room-worktrees/mc-4428-4429 · uptime 14d 4h · last activity 14d 2h ago
Description
MC-4428
**Severity:** high
**Location:** mc_pickup.py:1965
**Flagged by:** codex
**Issue:**
_reconcile_runtime_row_drift treats any needs_input ticket with a live interactive runtime as row drift and calls _normalize_ticket_to_live_runtime, which force-patches status to in_progress and clears pending_state/pending_reply. A live runtime can legitimately be waiting for Elmar's answer, so the next pickup cycle can hide the question without any reply.
**Suggested fix:**
Do not include needs_input in the proactive reconcile query. Reconcile only todo tickets, or require a newly claimed reply/pending input before normalizing needs_input and preserve pending fields until the reply is delivered.
---
Found by mc-auto-review on 2026-05-30 06:01 SAST.
Repos reviewed: workspace, mission-control.
auto-review-hash: 3be01a9eb969
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· High
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
mc-auto-review (scheduled)
Mission Control
14d ago
14d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.controller_gate_passed_landed_6d3b8612profile control-room-codex-nosandbox · cwd /home/lucienne/workspace/state/control-room-worktrees/mc-4428-4429 · uptime 14d 4h · last activity 14d 2h agoMC is visibility-only. Hermes Luci launches and gates work outside MC, then mirrors evidence/status here.Raw console: luci · codex/openai/gpt-5.5
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.
Control Room picked this up. Plan: one direct Codex builder in isolated worktree `/home/lucienne/workspace/state/control-room-worktrees/mc-4428-4429` will implement MC-4428 + MC-4429 together because both touch `mc_pickup.py` runtime row-drift/send-adopt logic. Gate before close: narrow regression tests for needs_input non-normalization, todo row-drift preservation, and non-409 send failures not self-healing; controller will verify commit/tests before closing. Expected check-in: 2026-05-30T06:44:46.877149+02:00.
Luci Control Room14d ago
Builder startup recovery: first Codex run could not execute shell commands because the workspace sandbox failed at bwrap loopback setup before touching files. Restarting Codex directly in the same isolated worktree; controller will still gate tests/commit before close.
Luci Control Room14d ago
Controller gate passed and landed.
Evidence:
- Builder commit: d122e0a431468f805c2ed9f09e54723162ad14b2 in isolated worktree.
- Independent review: PASS for MC-4428/MC-4429 logic.
- Landed on master as 6d3b8612 and verified pushed to origin/master.
- Narrow gate on live checkout: `python3 -m pytest tests/test_mc_pickup_regressions.py::RuntimeRowDriftRegressionTests tests/test_mc_pickup_regressions.py::ReviewerSeverityRubricTests::test_tmux_runtime_send_busy_409_adopts_live_runtime tests/test_mc_pickup_regressions.py::ReviewerSeverityRubricTests::test_tmux_runtime_send_non_busy_failures_return_ticket_to_todo tests/test_mc_pickup_regressions.py::ReviewerSeverityRubricTests::test_tmux_runtime_send_failure_returns_ticket_to_todo tests/test_mc4236_pickup_recovery.py -q` -> 8 passed.
- `python3 -m py_compile mc_pickup.py` -> passed; `git diff --check` -> passed.
Closing: fix is landed; no human action required.