Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Ninad ruling (2026-08-10): every web chat window must be EXACTLY identical regardless of agent, track or user - the divergence between Carol's, Sam's, Leo's and the org (Clara) chat proves separate templates. Cure: the org agent-chat window (the one Clara uses; real portrait from the one composer, hint style, error bubbles, shared keyboard module) becomes THE canonical template, extracted to a single shared file with a per-surface config injection (agent id, endpoints, profile link, login URL). carol-chat, sam-chat, leo-chat and the org app all render from it; their backends keep their own engines behind a common 3-call window contract (history/send/clear - thin adapters over the existing conversation logic). The ONLY sanctioned divergence: Carol's admin-only anonymous (stranger) mode toggle, config-gated, so Ninad can see how Carol answers a new user. Any change to the shared template affects all windows. Old per-app pages retired to backups. A regression test asserts the served windows are byte-identical modulo the injected config.
⚖️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)
- [recovery] queue row revived in place — the execution had died leaving status=executing with no live queue row; the step-advance sweep relaunches the current step (CAROL-INI-2981) (elrond.handover_watchdog)
- [status-router] executing -> reviewing | event=dispatcher_transition | dispatcher state change (ds-s1)
- [delivery-check] 6 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_ini3773.py: FAIL (no tests ran in 0.30s) (orion)
- UAT r1 (Ninad, 2026-08-11): long turns die at the proxy while the reply completes server-side - he must refresh to see it. Rework: the shared window recovers a lost wait by polling history for the stored reply instead of showing (error reaching agent). (ninad)
- [status-router] reviewing -> executing | event=bypass_executing | bypass transition (or-bx-01)
- [delivery-check] 6 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_ini3773.py: FAIL (no tests ran in 0.30s) (orion)
- [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
- [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
- Exactly one web chat template file exists (shared), and org + carol-chat + sam-chat + leo-chat all serve their chat window rendered from it (must_have)
- All four windows are byte-identical modulo the injected per-surface config, asserted by a registered regression test (must_have)
- Each window shows its own agent's real portrait, name and title from the shared agent-card composer (Carol agt_008, Sam agt_026, Leo agt_034, org per-agent) (must_have)
- Carol's admin-only anonymous/stranger mode still works and is the ONLY divergence, gated by config (must_have)
- Send, history and new-conversation work on all four surfaces through the common window contract; unauthenticated public surfaces redirect to login (must_have)
- Old per-app chat pages are retired to backups, not deleted (must_have)