Provider profile health-probe + stable model alias layer
**Finding (Codex):** resolve_runtime_profile() doesn't enforce purpose scope beyond dispatch_policy. Profile bypass is broader than the dispatch_policy gate — a direct call to r...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge14d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_medium · cwd /home/lucienne/workspace/PKA · uptime 13d 20h · last activity 13d 18h ago
Description
MC-4458
**Finding (Codex):** resolve_runtime_profile() doesn't enforce purpose scope beyond dispatch_policy. Profile bypass is broader than the dispatch_policy gate — a direct call to resolve_runtime_profile() with wrong purpose goes unchecked.
**Action:**
1. Add health-probe for each named profile (verify model reachable on startup/scheduled)
2. Add stable model alias layer (e.g. `tool-use-capable` → current best model) so profile catalog doesn't need editing when models change
3. Enforce purpose scope inside resolve_runtime_profile(), not just at dispatch boundary
**Source:** FINAL-ASSESSMENT.md Item #9
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· Medium
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
api (human)
General
14d ago
14d 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/PKA · uptime 13d 20h · last activity 13d 18h 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.
auto-triage: assigned to **luci** (confidence 0.95); moved to `todo` for pickup -- skill: `code changes, bug fixes, new features, Mission Control internals`
> The ticket involves implementing code changes, bug fixes, and new features for Mission Control's internal provider profile and model alias layers.
luci14d ago
Luci picking up this ticket (background worker).
luci14d 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-4458: Provider profile health-probe + stable model alias layer
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
luci14d 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-4458: Provider profile health-probe + stable model alias layer
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION: when you need MC to reflect the next state.
luci14d 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
system14d 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-4462
Luci14d ago
QUESTION: when you need MC to reflect the next state.
[MC_TICKET_TURN:4462:1780141960805:8bf85bd5 internalruting maker; 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-4458","nonce":"MC_TICKET
_TURN:4462:1780141960805:8bf85bd5","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.]
❯ Pressuptoeditqueuedmessages
⏵⏵bypasspermissionson (shift+tabtocycle)84790tokens
artifacts:
-ticket:MC-4462
Elmar says: Ticket picked up by Luci via MC dispatcher.
MC-4458: Provider profile health-probe +stable model alias layer
Work this ticket in the live tmux runtime. Use DONE:, REVIEW:, or QUESTION:
when you need MCt reflect thenxt sae.
[MC_TICKET_URN:4462:17801496085:8bf85bd5 internal routing marker; do not
metion ths marker in your reply]
[Optional MC completion sentinel: as the very last line of your eply, on its
own line,you MAY emit this exactJSON to auto-advance the tickt:
{"mc_signal":DONE|REVIEW|QUESTION",ticket":MC-4458",noce":MC_TICKET_UR
N:4462:17801496805:8bf8bd5","payload":"<one-line summary>"} . UseDONE for
completed code changes, REVIEW forresearch/analysis, QUESTION when blocked.
The DONE/REVIEW/QUESTION prefix at the to o yourreply remains equired.]
· Topsy-turvying… (34s · ↑ 1.4k tokens · thought for 1s)
⏵⏵bypasspermissionson (shift+tabtocycle)85157tokens
✢Ting5)
op
·Ts
ops6
✢
*5
✶
✻
✽
✻
✶
*
✢
✢
*
✶
✻
✽
✻
✶
*
✢
✢9
*
✶
✻
✽
✻
✶
*40
✢
·Topsy-turvying…
✢
*
✶
✻
✻Topsy-turvying… ↓
· thinking with medium effort)
✽
✻
✶
thinking with medium effort
*
✢thinking with medium effort
thinking with medium effort
●Two repos. mission-control is live (port 3001). Let me find
FINAL-ASSESSMENT.mdandreadtheactualfunctionintheliverepo.
· Topsy-turvying… (41s · ↓1.7k tokens · thinking with medium effort)
⏵⏵bypasspermissionson (shift+tabtocycle)87736tokens
✢8
*2
✶
✻
✽thinking with medium effort
…
✻thinking with medium effort
✶
gthinking with medium effort
*
ought for 1s)
✢n3
i…
✢yg
●Bash(cd /home/lucienne/workspace && find . -maxdepth 3-name
"FINAL-ASSESSMENT.md"2>/dev/null;echo"===recentgit===";git-C
mission-control log --oneline -3; echo "===build git==="; git -C
mc-orchestrator-build-mclog--oneline-3)
⎿ Waiting…
✢Topsy-turvying… (43s·↓1.8ktokens·thoughtfor1s)
⏵⏵bypasspermissionson (shift+tabtocycle)88280tokens
Runn
*Topsy-turvying…9
●
✶
✻
✽Topsy-turvying…
●
0 for 'FINAL-ASSESSMENT.md'
===recentgit===
a90cf9b MC-4445: native orchestrator runtime palette(sharedruntime
registry)
c1bc52f docs: define native orchestrator runtime palette
4c865fdMC-4431:one-tapDoneforhuman-ownedinbox/Lifecards
===build git===
2c5fec9 MC-4207 — shadow-mode completion reviewer(thebrain's trust
gate),INERT
a174414MC-4207Phase3—councilfixes(Codex+Gemini+Opus,
2026-05-27)
23d3e37MC-4207Phase3(Evidencesubstrate)—E1+E4schema+E2
capture,INERT
⎿ Shellcwdwasresetto/home/lucienne/workspace/PKA
✽Topsy-turvying…(44s·↑2.0ktokens·thoughtfor1s)
⏵⏵bypasspermissionson (shift+tabtocycle)88280tokens
✻
✶
*
✢
T
·o
p
Ts
✢opy-
st
*yu
-trv5
✶uy
ri
✻vn
yig…
✽n
g1
…
✻
✶
*
✢
✢
T
*op
Ts
✶oy
✻ps-t
yu
✽-r
tv
uryi
vn
✻yg
i…7
✶ng
…
*
✢
↓
· thinking with medium effort)
thinking with medium effort
✢
*thinking with medium effort
✶
✻
✽
api14d ago
Orchestrator triage: the parked QUESTION is not a real blocker — it is dispatch-injection garbage. The runtime hit a 409 CONFLICT / runtime_busy collision (two sends into a still-running turn), then echoed fragments of the pickup prompt ('when you need MC to reflect the next state') back as a QUESTION. No technical decision is pending. The ticket is a fully-specified coding task (1) per-profile health-probe, (2) stable model alias layer, (3) enforce purpose scope inside resolve_runtime_profile() not just at dispatch boundary. Flipping to todo for clean single-runtime re-dispatch. Builder: do NOT re-ask — implement the three items via dev-loop, council the resolve_runtime_profile() scope-enforcement change, land + push.
Luci14d ago
MC-4458: enforced purpose-scope inside resolve_runtime_profile() (new RuntimePurposeViolation; preflight opts out; ticket/interactive starts degrade gracefully), added stable model alias layer (tool-use-capable→sonnet etc + JSON override) and static health-probe (probe_*/runtime_health_probe.py CLI + daily scheduler task). 30 tests pass, lint clean, pushed to mission-control + workspace.
luci14d ago
Workflow action `review_ready` applied. Work ready for review.
luci14d ago
Shadow reviewer: ABSTAIN (advisory, low confidence). Not gating this ticket — a committed change is pinned (done_sha) but its diff is not resolvable in the known repos (slot-branch / cross-repo / reaped worktree). Orchestrator gate is authoritative.
api14d ago
Orchestrator gate: VERIFIED + CLOSING. Shadow reviewer abstained only because the change spans two repos; I verified both halves directly.
All 3 action items delivered + pushed:
1. Purpose-scope enforcement inside resolve_runtime_profile() — new RuntimePurposeViolation, preflight opts out, ticket/interactive starts degrade gracefully. Closes the Codex finding (direct call with wrong purpose now gated, not just at dispatch boundary). Lives in mission-control ticket_runtime.py/models.py/mc_interactive.py.
2. Stable model alias layer — tool-use-capable→sonnet etc + JSON override. Catalog no longer needs editing when models change.
3. Health-probe — runtime_health_probe.py CLI + tasks/runtime-health-probe.md daily scheduler task.
Evidence:
- mission-control 813291a IS in origin/master; test_mc4458_runtime_safety.py → 16 passed.
- workspace cc2ab7a1 (scheduler task) IS in origin/master; tasks/runtime-health-probe.md present (1.4K).
- runtime_health_probe.py git-tracked in mission-control.
FINAL-ASSESSMENT item #9 reconciled. No human input required.
luci14d ago
Control Room gate: DONE verified. Commits 813291a (mission-control) + cc2ab7a1 (workspace) on origin/master. Purpose-scope enforcement, model alias layer, daily health-probe task all landed. Closed by Control Room watcher.