Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Ninad, 2026-08-04: 'consciousness and chat is showing no model declared, that doesnt sound right' - then, on being shown the record is genuinely blank: 'check what is being used and report it.. keep the app honest'.
The page is not lying. A track's model is DECLARED BY HAND and read from the record, never inferred from past calls (Ninad's own ruling, CLI-223) - so a blank record correctly renders as 'no model declared'. MEASURED: 9 of 36 tracks are blank, including two that run every day.
But the page stops at the record, and the reader is left thinking nothing runs there. Consciousness and Chat both ran gpt-5.6-sol tonight. The honest page says BOTH things: what the record declares, and what has actually been seen running - side by side, never merged, so a blank declaration is visibly a gap in the RECORD rather than an absence of work.
WINDOW MATTERS, and is the trap here. Asked over all time these tracks show a jumble of Claude, Kimi and GPT - which is the history of the fleet's provider switches, not present-day mixing. Verified: restricted to lines written since tonight's task-stamping, all three busy tracks run gpt-5.6-sol and nothing else. So the observed figure MUST state its window or it will read as a compliance breach that is not happening.
SCOPE: the track view gains an OBSERVED reading from the cost ledger over a stated recent window, shown beside the declared one and never merged into it. Where the two disagree the page says so. The declared value stays the authority; the observed value is evidence.
NOT IN SCOPE: filling in any track's model. Ninad declined to have it inferred, and this change is what makes the gap visible instead.
⚖️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)
- [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=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
- A track with no declared model shows what has actually been seen running, so the reader is never left thinking nothing runs there. (must_have)
- The declared value and the observed value are shown separately and never merged - a blank declaration still reads as a gap in the record. (must_have)
- The observed reading states the window it covers, because over a longer window past provider switches read as present-day mixing. (must_have)
- Where the declared model and the observed model disagree, the page says so rather than showing only one. (must_have)
- No track's declared model is filled in or inferred by this change. (must_have)
- Verified by LOOKING at the rendered page, plus a regression test. (must_have)