Require artifact-level evidence before MC reviewer closes content/audio workflows
Systemic workflow fix from Elmar's challenge: MC reviewer/workflow signed off on MC-4365 without testing the user-facing end-to-end outcome. Existing reviewer gates focus heavil...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge16d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_high · cwd /home/lucienne/workspace/mission-control · uptime 15d 21h · last activity 15d 16h ago
Description
MC-4383
Systemic workflow fix from Elmar's challenge: MC reviewer/workflow signed off on MC-4365 without testing the user-facing end-to-end outcome. Existing reviewer gates focus heavily on code/UI/browser evidence; content/research/audio pipeline tickets need an explicit acceptance-evidence gate too.
Problem:
- MC-4365 was marked done with unit tests and deterministic dry-run evidence.
- The real user concern was daily radio quality: actual episode replay, stale/repeated story suppression, and whether a generated show works.
- MC-4374 improved this with a shadow comparison, but still stopped before audio, so full end-to-end audio was not proven.
Goal:
Add/adjust MC role/reviewer contract so non-UI deliverables cannot be closed merely because code/tests pass when the acceptance criteria imply a real artifact/workflow.
Scope:
1. Inspect mc_role_guidance/reviewer prompts/review gate/worker DONE handling from MC-4372/4375/4378.
2. Add an evidence-by-work-class gate for content/research/audio/scheduler pipelines:
- code tests are necessary but not sufficient;
- must provide a real or shadow artifact when acceptance is user-facing output;
- if production side effects are unsafe, require labelled TEST/ALT artifact or explicit blocker.
3. Add regression/smoke test: a ticket with "radio/audio/show" acceptance cannot close with only unit tests/dry-run if no real/shadow artifact or blocker is present.
4. Update docs/runbook.
Acceptance criteria:
- Reviewer/role contract says artifact/workflow acceptance requires artifact evidence, not just code tests.
- Test proves missing real artifact blocks or routes to review rather than done.
- Applies centrally, not per-runtime copy/paste.
Expected check-in: today.
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· High
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
telegram (human)
Mission Control
16d ago
16d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.controller_closed_after_verified_pushed_branchprofile claude_opus_1m_high · cwd /home/lucienne/workspace/mission-control · uptime 15d 21h · last activity 15d 16h 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-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
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
Ticket picked up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
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
Ticket picked up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
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-4383
Luci16d ago
QUESTION: when you needMC o reflect the next state.
[MC_TICKET_TURN:4383:1779968980143:22f10878 internal routig marker; do
not mention this marker in your reply]
[ptional MC completionsentinel: as the very last line of your reply, on
itsown line, you MAY emit this exactJSON to auo-advancethe ticket:
{"c_signal":"DONE|REVIEW|QUESTION","ticket":"MC-4383","nonce":"MC_TICKET
_TURN:4383:1779968980143:22f10878","payload":"<one-line summary>"} . Use
DONE for completed code changes, REVIEW for research/analysis, QUESTION
when blocked. The DONE/REVIEW/QUESTION prefix at the top of your reply
remains required.]
❯ Press up to edit queued messages
pasteagaintoexpand
62609tokens
You'veused81%ofyourweeklylimit·resetsMay31,7pm(Africa/Johannesb…
Acceptance criteria:
- Reviewer/role contact says artifact/workflow acceptanc requires artifact
evidence, not just code tests.
- Test proves missing real artifact blocks or routes to review rather than
done.
- Applies centrally,ot per-runtime opy/paste.
Expected check-in: today.
Recen conversation:
- luci: Luci pickingup this ticket (background worker).
- luci: [faied_to_inject] runtime_busy: Ticket runtime is not ready for
input (status=running). Wait or the current turn to fish, or explicitly
interrupt/restart the runtime bfore sending more terminal input. This
message
Ticket pickd up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes
content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION:
when you need MC to reflect the next state.
Elmar says: Ticket picked up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes
content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION:
when you need MC to reflect the next state.
[MC_TICKET_TURN:4383:1779968980143:22f10878 internal routing marker; do not
mention this marker in your reply]
[Optional MC completion sentinel: as the very last line of your reply, on its
own line, you MAY emit this exact JSON to auto-advance the ticket:
{"mc_signal":"DONE|REVIEW|QUESTION","ticket":"MC-4383","nonce":"MC_TICKET_TUR
N:4383:1779968980143:22f10878","payload":"<one-line summary>"} . Use DONE for
completed code changes, REVIEW for research/analysis, QUESTION when blocked.
The DONE/REVIEW/QUESTION prefix at the top of your reply remains required.]
·Newspapering…(11s·↑125tokens)
pasteagaintoexpand
63232tokens
You'veused81%ofyourweeklylimit·resetsMay31,7pm(Africa/Johannesb…
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
Ticket moved to Todo: Require artifact-level evidence before MC reviewer closes content/audio workflows
luci16d ago
Worker died unexpectedly.
**Worker PID:** unknown
**OOM kill:** unknown
**Exit signal / dmesg:** unknown
**Last tool_use:** none
**tmux target:** mc-MC-4383
**Last pane output:**
```
[no pane output captured]
```
Reset to Todo to retry, or provide additional context.
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
Ticket picked up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
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
Ticket picked up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
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
Ticket picked up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
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-4383
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
Ticket moved to Todo: Require artifact-level evidence before MC reviewer closes content/audio workflows
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-4383
luci16d ago
Controller recovery: no live mc-MC-4383 tmux exists; latest runtime is closed(ticket_marked_blocked), but the main mission-control checkout contains incomplete MC-4383/slot2 WIP. I ran the narrow tests from the checkout with /usr/bin/python3; artifact gate tests fail because mc_role_guidance lacks the new artifact helpers, and Flask-dependent UI tests need the system Python env. Releasing this ticket back to todo so the worker can finish/reconcile the dirty WIP in /home/lucienne/workspace/mission-control, commit/push, run narrow tests with the correct Python, and report REVIEW/DONE. No Elmar input required.
luci16d ago
Luci picking up this ticket (background worker).
luci16d ago
Ticket picked up by Luci via MC dispatcher.
MC-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
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-4383
luci16d ago
Controller recovery dispatch: I created a patch artifact for the dirty main-checkout WIP at /home/lucienne/workspace/ticket-attachments/MC-4383/dirty-main-20260528T1607.patch (sha256 30fc8ceaf41b4b107567935951b7ce41b00bc284fd0675dbda1f517e2cfac35e). The live ticket runtime was restarted after the false 409. Worker must reconcile/finish MC-4383 in the pool worktree; apply/inspect that patch as needed, implement missing mc_role_guidance artifact helpers, run narrow tests with /usr/bin/python3, commit + push, and report REVIEW/DONE with exact evidence. No Elmar input required.
luci16d ago
Ticket picked up by Luci via controller recovery.
MC-4383: Require artifact-level evidence before MC reviewer closes content/audio workflows
Context: dispatcher pickup hit a false 409/runtime-send race, so the controller restarted this runtime manually and is injecting the work directly.
Important: the main mission-control checkout has dirty WIP from the prior dead runtime, but this runtime is in the pool worktree. I preserved that dirty WIP as a patch artifact:
/home/lucienne/workspace/ticket-attachments/MC-4383/dirty-main-20260528T1607.patch
sha256: 30fc8ceaf41b4b107567935951b7ce41b00bc284fd0675dbda1f517e2cfac35e
Your task:
1. Inspect/apply/reconcile the patch artifact as needed in the pool worktree.
2. Finish the missing MC-4383 implementation: mc_role_guidance artifact-workflow detection/evidence helpers, reviewer/build contract changes, central DONE->review gate, docs/runbook if applicable.
3. Run the narrow tests with /usr/bin/python3 (not the Hermes venv python): tests/test_mc4383_artifact_gate.py plus related MC home/runtime tests if touched.
4. Commit and push.
5. Reply REVIEW or DONE with commit SHA, test evidence, and whether live restart is required.
No Elmar input is needed; decide technical details yourself. 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 moved to Todo: Require artifact-level evidence before MC reviewer closes content/audio workflows
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-4383
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.
luci16d ago
Controller normalization after full pending audit: ticket row said in_progress but runtime is closed and no mc-MC-4383 tmux exists. Preserving uncommitted WIP in the main mission-control checkout; do not auto-pickup until MC-4371/MC-4357 main-checkout safety/merge path is resolved.
luci-controller16d ago
Controller heartbeat/row-drift repair: verified live tmux mc-MC-4383 with pane PID 3581840; updated runtime/ticket PID fields so board/runtime/tmux agree. Worker is still actively implementing MC-4383; no Elmar input required.
Controller decision
luci-controller16d ago
Controller recovery: mc-MC-4383 tmux/runtime disappeared while the ticket row stayed in_progress, and the worker left uncommitted WIP in /home/lucienne/workspace/.mc-wt-MC-4383. Preserved that WIP as patch artifact /home/lucienne/workspace/ticket-attachments/MC-4383/controller-recovery-wip-20260528T161956.patch (sha256 3ba9d2fb7a2d7c15c6f9e9700f638ed04b62abdfc8bb9520e23fa3e68acbe530) plus status /home/lucienne/workspace/ticket-attachments/MC-4383/controller-recovery-wip-20260528T161956.status.txt. Requeued MC-4383 for a fresh Luci worker. Resume by inspecting/applying this patch in a safe worktree, finish the artifact-evidence gate, run the narrow MC-4383/workflow/mobile/shadow regression set with /usr/bin/python3, commit + push, and report REVIEW/DONE with exact evidence. This is a technical runtime recovery; no Elmar input required.
Controller decision
luci-controller16d ago
Controller action: pickup reproduced HTTP 409/runtime_busy for MC-4383 after the WIP patch was preserved. I am bypassing the broken pickup injection path by starting the ticket runtime directly and injecting the recovery prompt. No Elmar input required.
Controller decision
luci-controller16d ago
Safety correction: the manual recovery runtime initially launched in the main mission-control checkout because the controller shell lacked MC_POOL_ENABLED=1. I killed mc-MC-4383 immediately before worker action and am relaunching with the same service pool env so the worker runs in an isolated pool worktree. No Elmar input required.
luci-controller16d ago
Controller gate: MC-4383 WIP is reconciled and verified. Evidence: branch feat/mc-4383 at a99812c50551a370f402a4f2ace18b9e14642800 is pushed to origin/feat/mc-4383 (verified ancestor check); worktree /home/lucienne/workspace/.claude/worktrees/mc-4383 is clean; narrow regression passed: 125 passed, 9 subtests passed for tests/test_mc4383_artifact_gate.py, tests/test_mc4372_role_guidance.py, tests/test_auto_workflow.py, tests/test_workflow_idempotency.py, tests/test_workflow_pipeline.py, and tests/test_mc4207_shadow_review.py. Closing this ticket as done; deployment/merge ordering remains controlled by MC-4371/MC-4357. No Elmar input required.