Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Ninad's ruling (2026-08-02): Carolopedia is a REFLECTION of Carolverse, Carolverse is the authority, and there must be no duplicates inside Carolverse. Two duplicates were measured. First, the same agent facts are DERIVED twice: Carol's Org reads the registry through the shared guarded reader while Agent Records opens the registry file directly, and the two had already drifted — the Org said Hagrid ran 16 workers while Agent Records said 15. Second, the same agent has TWO FACES: the Org keeps 37 portraits in the old flat style and Carolopedia keeps 46 in the current hand-drawn house style, and 36 of the 37 shared agents are a different picture in each. Ninad's chosen resolution: ONE COMPOSER, MANY VIEWS — one thing composes what an agent is and every surface renders its own slice of it; and the portrait becomes a fact about the agent held in Carolverse, with Carolopedia rendering it like any other reflection.
⚖️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)
- [delivery-check] 7 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_ini3582.py: FAIL (no tests ran in 4.26s) (orion)
- [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
- UAT requirement added by Ninad (2026-08-02), same mandate as this initiative: an agent's PURPOSE is also recorded twice — a one-line sentence on the agent row, and the numbered purposes where each is a goal held against its bound. 40 of 43 agents carry both and the texts disagree for 41, because the one-liner is a compressed restatement rather than a copy. Which survives is not a judgement call: the numbered table came from Ninad's own UAT of 2026-08-01, which explicitly rejected storing one sentence per agent. The column is the superseded form nobody removed. Retiring it under this initiative rather than a rival one, because the duplicate gate is correct that it is the same work. (orion)
- [status-router] reviewing -> executing | event=bypass_executing | bypass transition (or-bx-01)
- [delivery-check] 7 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_ini3582.py: FAIL (no tests ran in 4.79s) (orion)
- [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
- [status-router] reviewing -> executing | event=bypass_executing | bypass transition (or-bx-01)
- [status-router] executing -> reviewing | event=dispatcher_transition | dispatcher state change (ds-s1)
- [status-router] executing -> reviewing | event=dispatcher_transition | dispatcher state change (ds-s1)
- [delivery-check] 7 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_ini3582.py: FAIL (no tests ran in 5.68s) (orion)
- Orion remediated: INI-999902631 bypass closed — CAROL-INI-696 close-marker: the Orion bypass INI-999902631 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)
- [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 thing in Carolverse composes an agent's canonical facts — identity, role, reporting line, service, tracks, workers, apps, skills and portrait — and it reads the registry through the guarded shared reader, never by opening the registry file itself. (must_have)
- Carol's Org agent profile and Agent Records both render from that one composer; neither derives an agent's droids or apps from its own SQL any more. (must_have)
- The two surfaces can no longer disagree about the same fact: an agent's worker and app counts read identical on both, proven live for an agent that previously differed. (must_have)
- An agent has ONE portrait in Carolverse: a single canonical image file in the shared media store, recorded on the agent in the registry, resolved only through the composer. (must_have)
- Carol's Org shows that same portrait — the second set of 37 older flat-style portraits it kept is retired to a backup, not deleted, and no agent's face differs between surfaces. (must_have)
- Carolopedia keeps serving the portrait at its existing public address, reading the canonical file rather than holding its own copy — the reflection renders what Carolverse holds, and every app already pointing at that address keeps working unchanged. (must_have)
- No agent loses a portrait: every agent that had a picture before still has one after, proven by comparing the before and after sets. (must_have)