Carol — back to Apps ← Apps

Carolopedia

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

📖 CarolopediaServicesBuild InitiativesAll activitiesINI-100000002
📋

CAROL-INI-0745-00: Relay-to-Carol refactor: route all external-agent user messages through Carols drafter (enforce P.01.02.07.03)

Initiative
Open in Initiatives →

📖About

Policy P.01.02.07.03 mandates that every user-facing message be drafted by Carol. Current violators (direct sends): subscription_approver (Clara INI-718 ceremony), proactive, ventures, chowpatty, pa_c5, server / message_handler edges. Scope: (1) build a relay_to_carol primitive that external agents call with {recipient, intent, payload}; (2) Carols drafter consumes the relay as a tool result and drafts in her voice; (3) build/wire the meaning-preservation reviewer that gates Carols translation; (4) refactor each violator to use relay_to_carol; (5) add a lint that flags direct send_whatsapp calls from non-Carol agents.

⚖️Decisions

  • Scope this bypass to the minimum slice: primitive + subscription_approver migration. Other 4 violators (proactive, ventures, chowpatty, pa_c5) ship as follow-ons. — Subscription_approver is the immediate blocker (INI-793 just exposed the policy gap). Smaller surface = safer migration; primitive shape gets validated by one real caller before the others adopt. (Orion)
  • Defer the meaning-preservation reviewer to a follow-on initiative. — Reviewer needs its own design (when does it block vs warn, what counts as meaning-preservation, model + prompt). Without it, Carol still drafts in her voice — meaning preservation is best-effort. Adequate for v1. (Orion)
  • All Carol initiatives ship via bypass until the build pipeline self-hosts (per Ninad 2026-05-23). — Pipeline has not closed a single planner-mode initiative yet. Bypass-or-nothing is the operating reality. (Ninad)
  • Caller audit waived by Orion: changes are additive (new shared/relay.py module + 3 surgical refactors inside subscription_approver). _send_whatsapp_to_user helper retained for any future ad-hoc internal use. No public function signatures changed. — Additive only. (Orion)
  • Bypass review verdict='fail' action='continue'. Initiative blocked per bypass contract — no continue cycles, no needs_attention escalation, immediate up-or-out. — el-review-bypass-01 (Elrond's Bypass Reviewer) received a non-close verdict from the Initiative Reviewer for the bypass close of INI-100000002. Reviewer summary: 3 criteria: 0 pass / 3 fail. Gate=open (spend=0.56/15.0, cycles=2/3). Verdict=fail. Action=continue. Failing criteria (top 10): - [open] Unit test: relay_to_carol called with a fake intent + payload returns a non-empty drafted string and attempts a WhatsApp send. - [open] Unit test: subscription_approver._notify_ninad_of_pending uses relay_to_carol (verified by mocking relay and asserting it was called). - [open] Code scan: subscription_approver.py has zero remaining direct calls to send_whatsapp or _send_whatsapp_to_user from the 3 migrated sites. Per the bypass-mode contract, any non-close verdict routes to blocked (with override_closure_guard=True). Operator must triage before any follow-on attempt. (elrond.bypass_reviewer)

Success criteria

  • Unit test: relay_to_carol called with a fake intent + payload returns a non-empty drafted string and attempts a WhatsApp send. (must_have)
  • Unit test: subscription_approver._notify_ninad_of_pending uses relay_to_carol (verified by mocking relay and asserting it was called). (must_have)
  • Code scan: subscription_approver.py has zero remaining direct calls to send_whatsapp or _send_whatsapp_to_user from the 3 migrated sites. (must_have)