Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Ninad rulings (CLI-243, 2026-08-12): (1) Leo's chat has TWO aspects like Carol's - the INTERNAL (employee) chat for a project's contributors, and the EXTERNAL chat for users subscribed to the blueprint service, served by the existing Leo Chat app. (2) The agent-chat service gets per-AGENT tracks - Leo Chat and Carol Chat - replacing the channel view: whichever channel a user comes through, the budget belongs to WHO they talk to, never the channel. (3) Agent-chat tracks stay subscription/model-agnostic like every track, but the service is served by coding-agent INSTANCES rather than API chat completions - Claude Code first, then Codex and other coding agents (separate runner initiative). Reality note: the registry holds ONE agent chat track today (agent-resources-chat on Codex) serving all agent chats with channel-shaped work tickets - the ruled Leo/Carol tracks are created beside it and the residual generic track keeps the other agents until ruled otherwise.
⚖️Decisions
- Elrond's bypass methodology checklist (a reminder, not a gate -- you've got this): 0. File it requested_mode='bypass' (planner-vs-bypass is a deliberate choice). bypass_start REFUSES a non-bypass initiative (CAROL-INI-1846), and the dispatcher only skips the bypass lane when the mode says bypass -- a 'planner' mistag lets Merlin's pipeline grab the placeholder step and block your finished work. 1. Filed as planned status -- let the bypass claim/activate it; never file active. 2. Open the bypass (bypass_start) with your droid id + the remediation answer (remediates_initiative_id=NNN, or remediates_nothing=True). 3. Work the blocks for your work-type: template -> design -> code -> test -> review. Do the real work; record decisions on the initiative as you make them. 4. Reality is recorded for you at close -- code (files changed), each decision, and the twin-review verdict become real activities tied to this initiative and show in the Activity Tracker like a planner run (CAROL-INI-1840). No dummy rows. 5. Keep the initiative status moving; it parks in 'reviewing' and is tagged uat-pending for you at close (CAROL-INI-1836), so the stuck-watchdog leaves it alone until UAT. 6. Close runs the gates (design/architecture compliance + caller-audit). If a gate flags something pre-existing or unrelated to your change, waive it with a clear written rationale -- audit, don't skip. 7. Bypass skips the planner's auto-orchestration, NOT the standards. Same template checklist, same review, same observability as a planner run. (elrond)
- [status-router] planned -> executing | event=bypass_executing | bypass transition (or-bx-01)
- Reality vs memory: agent chat was ONE track (agent-resources-chat, Codex) serving all agent chats - the web/whatsapp split lived in work tickets, not tracks. Ruling applied as intent: Leo Chat + Carol Chat tracks created beside it; the generic track keeps the other agents' chats until ruled otherwise.
- New tracks born with NO budget allocation - amounts are Midas's; nothing routes to them until the serving initiatives wire the reply paths, so no spend is possible meanwhile. Declarations copied from the current chat lane (Codex) as the honest present state; the Claude Code serving test is CAROL-INI-3788, design-first, filed planned.
- [delivery-check] 5 must-have criteria remain pending at bypass_end — delivery FAILED live re-performance; UAT must grade on live evidence, not checklist silence (CAROL-INI-3020): test test_ini3787.py: FAIL (no tests ran in 0.29s) (orion)
- [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
- Operator addition during UAT (Ninad): Sam also interfaces with external users (the second open web chat), so the interlocutor split is THREE tracks - Sam Chat (owner Sam, agt_026) with its reply work unit created to mirror Leo Chat and Carol Chat. Regression lock extended.
- [status-router] reviewing -> closed | event=operator_signoff | Auto-accepted (CAROL-INI-1859): Orion-initiated, >2 days in reviewing with no objection. (el-srac-01)
✅Success criteria
- The agent-resources service holds two new tracks, Leo Chat (owner Leo) and Carol Chat (owner Carol), each with its own chat-reply work unit so a conversation bills the agent talked to, independent of channel (must_have)
- The internal-vs-external chat distinction is recorded law: glossary terms internal chat and external chat, the cookbook states the two aspects and that external Leo chat is the Leo Chat app, and the design records per-agent chat tracks plus the coding-agent-instance serving ruling (must_have)
- A separate planned initiative exists for the Claude Code external-chat runner (design-first), so the serving change is filed and visible without being built blind (must_have)
- The residual generic agent chat track remains serving the other agents chats and this is recorded as a decision, not silently assumed (must_have)
- A regression test locks the two tracks, their work units and ownership, and the twin review passes (must_have)