Telegram per-target busy-lock for ticket runtimes + /stop_all admin
Parent: MC-3365 **HIGH — all council confirmed.** Live safety risk. scripts/mc_telegram_bridge.py has persistent-Luci queue (`begin_or_enqueue_persistent_luci`, line 1015), bu...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge30d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_medium · cwd /home/lucienne/workspace/mission-control · uptime 29d 21h · last activity 29d 11h ago
Description
MC-3368
Parent: MC-3365
**HIGH — all council confirmed.** Live safety risk.
scripts/mc_telegram_bridge.py has persistent-Luci queue (`begin_or_enqueue_persistent_luci`, line 1015), but ticket targets have no per-target busy-lock. Two Telegram messages 2s apart while ticket runtime mid-turn both inject into tmux → corrupt turn state.
Codex notes: when busy, messages become comment-only and not replayed — avoids terminal corruption but creates delivery illusion (same class as MC-#2).
`/stop_all` admin command (roadmap item 8) entirely missing — no emergency stop for runaway autonomous activity.
**Fix shape:** Extend the persistent_luci queue pattern to ticket targets. Add `/stop_all` Telegram command with admin-only auth + confirmation. Live smoke-test runbook.
**Est:** 1-2 days.
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· High
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
api (human)
Mission Control
30d ago
16d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.ticket_marked_doneprofile claude_opus_1m_medium · cwd /home/lucienne/workspace/mission-control · uptime 29d 21h · last activity 29d 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.
Ticket picked up by Luci via MC dispatcher.
MC-3368: Telegram per-target busy-lock for ticket runtimes + /stop_all admin
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
elmar30d ago
1 Definitely no
2 I don't know
3 I don't know
I actually don't know what this ticket is about. Get second-opinion.
elmar30d ago
1 No
2. I don't know
3 I don't know
Get a second opinion. I don't know what this is.
elmar30d ago
1 No
2. I don't know
3 I don't know
Get a second opinion. I don't know what this is.
Runtime retry requested via MC ticket page. No previous failure reason was recorded.
luci30d ago
Worker died unexpectedly.
**Worker PID:** unknown
**OOM kill:** unknown
**Exit signal / dmesg:** unknown
**Last tool_use:** Read {'file_path': '/home/lucienne/workspace/mission-control/scripts/mc_telegram_bridge.py'} (at 2026-05-14 11:40:50)
**tmux target:** mc-MC-3368
**Last pane output:**
```
[no pane output captured]
```
Reset to Todo to retry, or provide additional context.
luci30d ago
Council picking up this ticket (background worker).
council30d ago
## Council Review — MC-3368
### Codex (OpenAI)
Executive summary: Based on the supplied diff excerpt, this does not demonstrate the MC-3368 safety fix. The visible hunks are unrelated state/cache/media changes, with no reviewable change to `scripts/mc_telegram_bridge.py`, no per-target busy-lock path, and no `/stop_all` admin control.
CRITICAL: The excerpt shows no implementation of the per-target busy-lock for ticket runtimes. The visible files are `.acsa-monthly-state.json` (`@@ -4,6 +4,6 @@`), `.ccgram-uploads/...jpg`, deleted `.gdrive-cache/*.xlsx`, and multiple `audio-library/...` artifacts, but there is no hunk for `scripts/mc_telegram_bridge.py` and no visible change around `begin_or_enqueue_persistent_luci` or any analogous ticket-target queue/lock function. On the evidence shown, the race that allows concurrent Telegram injections into a live ticket runtime remains unaddressed.
CRITICAL: The excerpt shows no `/stop_all` admin command, auth gate, or confirmation flow. There is no visible command-routing/control-path change anywhere in the diff, so the emergency stop requirement for runaway autonomous activity is still unimplemented or at least completely unreviewable from this patch.
IMPORTANT: The required smoke-test runbook is missing from the visible patch. For a live safety fix, I would expect an operator-facing validation doc or at least targeted test/update notes; instead the excerpt contains only generated outputs such as `audio-library/ceo/2026-05-14.txt` and `audio-library/news/2026-05-14.txt`.
IMPORTANT: The patch is dominated by unrelated generated and cache churn (`audio-library/...`, `.ccgram-uploads/...jpg`, deleted `.gdrive-cache/*.xlsx`), which makes the ticket effectively non-reviewable and raises merge risk. A safety-ticket patch needs the control-path code and validation artifacts isolated so reviewers can verify the behavior change directly.
VERDICT: FAIL
### Gemini 2.5 Pro
## Code Council Review: MC-3368
### Executive Summary
This review is blocked. The provided diff is missing the core implementation changes to `scripts/mc_telegram_bridge.py` required to address the ticket. The commit is instead filled with a large volume of unrelated, auto-generated data files and test artifacts, which makes a proper review impossible and represents a critical process failure for a high-risk change.
### Findings
* **CRITICAL:** **Core implementation is missing.** The ticket requires adding a per-target busy-lock and a `/stop_all` command to `scripts/mc_telegram_bridge.py`. However, this file and its changes are not present in the provided diff. Without the actual code, it is impossible to verify if the race condition is fixed or if the emergency stop command is implemented correctly and securely.
* **CRITICAL:** **Commit contains large-scale generated data and test artifacts.** The vast majority of this diff consists of files that should not be in version control. Committing these files bloats the repository, creates extreme noise in the commit history, and risks future merge conflicts. For a change addressing a "Live safety risk," the commit must be clean, atomic, and contain only the specific code changes required for the fix.
* Affected files/directories include:
* `audio-library/` (numerous new .json, .mp3, .txt files)
* `.ccgram-uploads/` (new binary image)
* `.gdrive-cache/` (deleted binary files)
* `.acsa-monthly-state.json` (state file update)
* **MINOR:** **Repository `.gitignore` may be inadequate.** The presence of cache directories (`.gdrive-cache/`), state files (`.acsa-monthly-state.json`), and test-related uploads (`.ccgram-uploads/`) in the commit strongly suggests that the project's `.gitignore` file is missing patterns to exclude these transient files. These should be ignored to prevent accidental commits like this one.
### VERDICT: FAIL
---
**Council verdict: CRITICAL**
system30d ago
Runtime retry requested via MC ticket page. Previous failure: Council CRITICAL: CRITICAL: The excerpt shows no implementation of the per-target busy-lock for ticket runtimes. The visible files are `.acsa-monthly-state.json` (`@@ -4,6 +4,6 @@`), `.ccgram-uploads/...jpg`, deleted `
luci30d ago
Worker died unexpectedly.
**Worker PID:** unknown
**OOM kill:** unknown
**Exit signal / dmesg:** unknown
**Last tool_use:** Bash 'git' (at 2026-05-14 12:48:44)
**tmux target:** mc-MC-3368
**Last pane output:**
```
[no pane output captured]
```
Reset to Todo to retry, or provide additional context.
luci30d ago
Luci picking up this ticket (background worker).
luci30d ago
Ticket picked up by Luci via MC dispatcher.
MC-3368: Telegram per-target busy-lock for ticket runtimes + /stop_all admin
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
system30d ago
Delivery reconciler: ticket message #33353 (turn 1) was persisted to history but never harvested from runtime within 300s. Marked `failed_to_inject` (was `injected`).
luci-operator30d ago
Luci Operator: promoted this assigned `inbox` ticket to `todo` so pickup can run it.