Fix MC review-gate retry evidence edge cases from audit
Post-audit follow-up from 2026-05-27 controller/review-gate review. Expected check-in: next pickup cycle after dispatch. Scope: (1) make Tessa verdict cycle-aware so a prior ISS...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge16d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_medium · cwd /home/lucienne/workspace/mission-control · uptime 16d 13h · last activity 16d 9h ago
Description
MC-4317
Post-audit follow-up from 2026-05-27 controller/review-gate review. Expected check-in: next pickup cycle after dispatch. Scope: (1) make Tessa verdict cycle-aware so a prior ISSUES verdict does not suppress Tessa rerun after Luci fixes a new done_sha; (2) verify/update done_sha capture so retry completions review the latest SHA, not first-capture-wins stale evidence; (3) harden mc_tessa_gate diff-file lookup consistently with mc_shadow_review; (4) broaden/structure Tessa approval/fail sentinels; (5) fix semantic_router strict-bool parsing if still affected; (6) update stale docs/comments that still say shadow review is watch-only when MC_ORCH_REVIEW_RETRY is enabled. Acceptance: focused review-gate tests plus a cycle test where Tessa ISSUES -> Luci fix -> reviewer pass -> Tessa reruns on new SHA.
## Reopened after live mobile failure
Elmar supplied Android screenshot evidence that the review gate still let a mobile-bad Home/Cockpit UI through. Extend the gate so mobile screenshots are mandatory, attached, and judged against the ticket intent. A render-only mobile check is insufficient; the gate must fail cramped desktop-derived mobile layouts, missing chat composer/thread opening, and poor above-the-fold hierarchy.
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· High
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
api (human)
Mission Control
16d ago
16d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.terminal_state_reapprofile claude_opus_1m_medium · cwd /home/lucienne/workspace/mission-control · uptime 16d 13h · last activity 16d 9h 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.
PKA git-sync self-resolved: tcs_*.py + report files were locally untracked when Lucienne pushed them from Mac; --autostash skips untracked files so merge aborted. Files now tracked in repo, sync clean. No fix needed — transient one-time race.
luci16d ago
Workflow action `review_ready` applied. Work ready for review.
api16d ago
Orchestrator gate FAILURE — worker REVIEW content is unrelated to ticket scope. Worker posted a PKA git-sync triage comment that belongs on a different ticket (MC-4289 or similar). Actual MC-4317 scope (cycle-aware Tessa verdict, done_sha latest-SHA capture, mc_tessa_gate diff lookup parity, sentinel structure, semantic_router strict-bool, stale docs) was NOT addressed — no commits, no code changes for this ticket.
Reassigning lucienne controller. Re-dispatch with explicit ticket-context reset, or implement controller-side. needs_input.
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
Ticket picked up by Luci via MC dispatcher.
MC-4317: Fix MC review-gate retry evidence edge cases from audit
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
luci16d ago
Luci picking up this ticket (background worker).
luci16d 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
system16d 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-4317
luci16d ago
Luci picking up this ticket (background worker).
luci16d 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
system16d 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-4317
Workflow action `review_ready` applied. Work ready for review.
api16d ago
Closed (orchestrator). Worker recovered after lucienne reassign + correct ticket-context dispatch. 89c02a1 merge of 3671440 on master:
1. Cycle-aware Tessa verdict (tessa_verdict_sha + tessa_verdict_at columns; _already_ran matches done_sha)
2. done_sha clear on shadow-FAIL + Tessa-ISSUES retries
3. mc_tessa_gate diff lookup hardened (SHA validation + git env parity with mc_shadow_review)
4. Structured Tessa JSON sentinel + broader regex
5. semantic_router strict-bool projection fix
6. Stale docs updated
Shadow reviewer fail flag was on prior partial diff; verified the merge covers all 6 audit items.
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
luci16d 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
system16d ago
RUNTIME TERMINAL STATE (MC-3482 contract)
status: error
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: Retry limit reached; operator/human inspection is required before another automatic runtime dispatch.
stop_condition: After the configured retry limit, leave the ticket blocked for operator inspection instead of looping.
human_input_required: yes
next_actions:
- Pickup will retry the pending message in a fresh runtime.
- Inspect runtime/send only if the retry fails again.
artifacts:
- ticket:MC-4317
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
luci16d 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
system16d ago
RUNTIME TERMINAL STATE (MC-3482 contract)
status: error
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: Retry limit reached; operator/human inspection is required before another automatic runtime dispatch.
stop_condition: After the configured retry limit, leave the ticket blocked for operator inspection instead of looping.
human_input_required: yes
next_actions:
- Pickup will retry the pending message in a fresh runtime.
- Inspect runtime/send only if the retry fails again.
artifacts:
- ticket:MC-4317
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
[failed_to_inject] runtime_busy: 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
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
luci16d ago
[failed_to_inject] runtime_busy: 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
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
luci16d 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
system16d ago
RUNTIME TERMINAL STATE (MC-3482 contract)
status: error
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: Retry limit reached; operator/human inspection is required before another automatic runtime dispatch.
stop_condition: After the configured retry limit, leave the ticket blocked for operator inspection instead of looping.
human_input_required: yes
next_actions:
- Pickup will retry the pending message in a fresh runtime.
- Inspect runtime/send only if the retry fails again.
artifacts:
- ticket:MC-4317
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
luci16d ago
[failed_to_inject] runtime_busy: 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
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
luci16d ago
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
[system]: Ticket moved to Todo: Fix MC review-gate retry evidence edge cases from audit
api16d ago
Follow-up commit a395a94 on master adds mandatory mobile visual gate enforcement (structured JSON sentinel + mobile-screenshot extraction). Original MC-4317 close stands; this is incremental hardening from worker after Android failure evidence.
Luci16d ago
Controller recovery: this is a technical implementation/review-gate issue, not a product question for Lucienne. Moving back to Luci/todo for explicit retry with ticket-context reset. Scope remains: cycle-aware Tessa verdicts, latest done_sha capture on retries, diff lookup parity, structured Tessa sentinels, strict semantic_router booleans, and stale-doc cleanup.
Luci16d ago
MOBILE REVIEW FAILURE EVIDENCE (2026-05-27 23:12:38): Elmar sent live Android screenshot /home/lucienne/.hermes/image_cache/img_ce6935d5e4c5.jpg.
Verdict: review gate still failed. The mobile page is visibly dashboard/cockpit-first and cramped, not the requested AionUI/Codex/Claude Code message-first experience. The Active Campaign card dominates the phone viewport, keeps a left MC-4324 ID column that wastes horizontal space, wraps the title heavily, and preserves desktop-style density. This proves the gate did not enforce actual mobile UX quality — it likely checked only that the page rendered.
New blocking rule: no Home/Cockpit UI ticket may pass REVIEW/DONE without live 375px/mobile screenshot evidence judged against the ticket's intended UX, not just DOM presence or “fits on screen”.
luci-operator16d ago
Luci Operator corrected this ticket: `blocked` carried a runtime/worker failure with no unanswered worker `QUESTION:`, so it is back in `todo` for Luci/Larry/Tessa to handle.
luci-operator16d ago
Luci Operator corrected this ticket: `blocked` carried a runtime/worker failure with no unanswered worker `QUESTION:`, so it is back in `todo` for Luci/Larry/Tessa to handle.
luci-operator16d ago
Luci Operator corrected this ticket: `blocked` carried a runtime/worker failure with no unanswered worker `QUESTION:`, so it is back in `todo` for Luci/Larry/Tessa to handle.