Carol — back to Apps ← Apps

Carolopedia

A friendly guide to Carol, her ecosystem, and the agents who built her.

📖 CarolopediaServicesBuild InitiativesAll activitiesINI-999900430
📋

CAROL-INI-0009-01: Upgrade PA-C12 Service Router to Claude-based

Initiative
Open in Initiatives →

📖About

Replace placeholder keyword-match routing in agents/carol/droids/pa_c12_router.py with a haiku-backed call that sees user message + recent history + inferences + service manifests and decides which service (or none). Keep route() interface unchanged. Smallest scope — single droid, no cross-module changes.

⚖️Decisions

  • Follow-on to parent INI 9 (orion)
  • Scope inherited verbatim from parent INI 9 per CAROL-INI-361. (elrond.initiative_author)
  • [status-router] planned -> dispatched | event=dispatch | dispatcher queued (ds-s1)
  • [status-router] dispatched -> executing | event=dispatcher_transition | dispatcher state change (ds-s1)
  • [status-router] executing -> reviewing | event=review_inferred | review row present (el-review-inferer)
  • [status-router] reviewing -> blocked | event=stuck_10min_no_activity | Elrond safety net: initiative has had no activity for 10+ minutes. Blocking under the parallel safety mechanism. (el-watchdog)
  • Elrond blocked initiative under the CAROL-INI-2162 dead-Albus protocol. Albus was supposed to wake for step 0 (cause=albus_no_show) but did not respond. Cause: albus_no_show. Reason: Elrond safety net: initiative stranded 10+ min. Albus wake failed or produced no useful result. (el-s1)
  • RSI diagnosed: 2026-07-01 07:21:58 -> improvement #(none). ({'_raw': "ROOT CAUSE: Albus failed to wake for step 0 (cause: albus_no_show), leaving the initiative stuck with no activity, which triggered Elrond's parallel safety net after 10 minutes of inactivity.\n\nIMPROVEMENT: Implement a retry mechanism for Albus wake calls, with escalation to a fallback r (el-rsi-eng-01)
  • [rsi-group] cause=stuck_10min_no_activity members=[999900430, 1000168, 999900395, 999900400, 999900401, 999900409, 1000161, 1000166, 999900403, 999900406, 999900413, 1000165, 999900382, 999900370, 999900478, 1000268, 1000276, 999900328, 999900418, 999900419, 999900493, 999900351, 999900421, 999900422, 999900432, 999900502, 999900504, 999900522, 999900512, 999900526, 999900548, 999900553, 999900555, 999900560] (leverage-first pick: largest same-cause group, 34 members) (elrond.rsi_loop)
  • [status-router] blocked -> diagnosis | event=diagnosis_start | RSI loop: leverage pick cause=stuck_10min_no_activity group_size=34 (blocked since 2026-07-01 06:33:37); Albus diagnosis INI 999900599 (el-rsi-loop-01)
  • Orion remediation in progress: INI-999900599 bypass opened — CAROL-INI-696: an Orion-driven bypass has been opened to remediate this parent. The canonical Orion remediated: marker will be posted on close — see cookbook 156 / 155. (shared.bypass.bypass_start)
  • Albus RSI diagnosis (root cause): [procedural, confidence high] Albus executor did not wake to execute step 0 of the initiative (albus_no_show), as evidenced by the Elrond safety net decision and the prior RSI diagnosis for the same cause group. The initiative remained idle for over 10 minutes, triggering the parallel safety mechanism. No actual work was attempted; the single execution history entry shows 'Idle close — no activity in window.' (albus)
  • Albus RSI recommendations: - Implement a retry mechanism for Albus wake calls with exponential backoff and escalation to a fallback executor or manual intervention. - Ensure the executor model (Claude Haiku for this droid) is correctly configured and the wake endpoint is responsive; consider adding a health check before dispatching. - If retries consistently fail, escalate to use a stronger model (Opus) for the execution step to increase wake reliability. - Add a timeout and alerting for Albus wake failures to prevent prolonged idle blocks. || Next attempt succeeds because: With a retry mechanism and fallback, the next attempt will not stall on a single failed wake call. Additionally, the initiative's scope is small and self-contained, so once the executor is responsive, the code change should complete successfully. (albus)
  • Orion remediated: INI-999900599 bypass closed — CAROL-INI-696 close-marker: the Orion bypass INI-999900599 filed against this parent reached terminal state (closed). This row's literal prefix Orion remediated: is the canonical signal the cookbook-155 dispatcher gate looks for. (shared.bypass.bypass_end)
  • [rsi-group-member-failed] 1000168 retrigger refused: {'ok': False, 'reason': 'create_returned_no_id: {\'error\': \'INI2205_BAD_CRITERIA: All success criteria appear process-only (LLM confirmed). Each must describe a measurable user-visible outcome. FAIL\', \'criteria\': [\'A fresh Linux VM with the ins (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900395 retrigger refused: {'ok': False, 'reason': 'create_returned_no_id: {\'error\': \'INI2205_BAD_CRITERIA: All success criteria appear process-only (LLM confirmed). Each must describe a measurable user-visible outcome. FAIL\', \'criteria\': [\'Albus can emit a BLOCK_INITIA (elrond.rsi_loop)
  • [rsi-group-member-done] 999900400 -> retriggered as 999900601 (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900401 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900409 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-done] 1000161 -> retriggered as 999900602 (elrond.rsi_loop)
  • [rsi-group-member-failed] 1000166 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900403 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900406 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900413 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-done] 1000165 -> retriggered as 999900604 (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900382 retrigger refused: {'ok': False, 'reason': 'create_returned_no_id: {\'error\': \'INI2205_BAD_CRITERIA: All success criteria appear process-only (LLM confirmed). Each must describe a measurable user-visible outcome. FAIL\', \'criteria\': [\'The dispatcher refuses to sta (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900370 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900478 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 1000268 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-done] 1000276 -> retriggered as 999900606 (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900328 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900418 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900419 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900493 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-done] 999900351 -> retriggered as 999900607 (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900421 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900422 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900432 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900502 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900504 retrigger refused: {'ok': False, 'reason': 'create_returned_no_id: {\'error\': \'INI2205_BAD_CRITERIA: All success criteria appear process-only (LLM confirmed). Each must describe a measurable user-visible outcome. FAIL\', \'criteria\': [\'Authored initiatives include (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900522 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900512 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900526 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900548 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-done] 999900553 -> retriggered as 999900608 (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900555 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • [rsi-group-member-failed] 999900560 error: BrokenPipeError(32, 'Broken pipe') (elrond.rsi_loop)
  • Orion remediated: Albus RSI diagnosis: [procedural, confidence high] Albus executor did not wake to execute step 0 of the initiative (albus_no_show), as evidenced by the Elrond safety net decision and the prior RSI diagnosis for the same cause group. The initiative remained idle for over 10 minutes, triggering the parallel safety mechanism. No actual work was attempted; the single execution history entry shows 'Idle close — no activity in window.' (orion)
  • [status-router] diagnosis -> closed | event=operator_put | PUT /api/initiatives (operator)

Success criteria

  • WhatsApp test: ambiguous request routes correctly using history (e.g. 'same as last time' → previously-used service) (must_have)
  • Out-of-scope request returns 'none' instead of fallback to wrong service (must_have)
  • All existing route() callers compile and pass without modification (must_have)