Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Ninad, 2026-08-04 (CLI-227). The Task Tracker landing page is a flat list of service rows. Make it a browsable estate: services as cards three to a row carrying their OWNER's portrait; drill into a service for its TRACKS as the same card, carrying the track owner's portrait, the SUBSCRIPTION that pays for it and the MODEL it runs on; drill into a track for its TASKS, each task card carrying its description, its budget, and an ESTIMATE of time, tokens and spend taken from the trailing 7 days of the cost ledger.
Budgets at all three levels: task (declared), track (the enforced registry allocation), service (the derived sum of its governed tracks). NOTHING hard-coded anywhere: change an owner and the portrait follows; re-tag a track's subscription or model and the chip follows; change a budget and every level follows. Every number is read through a registry accessor.
One composer, many views (cookbook 1126): the arrangement and the 7-day estimate get ONE home in shared/, and the app renders it and computes nothing. The subscription record is today read only by the Model Subscriptions app's own module -- promote that read to a shared accessor so the two surfaces cannot drift into two answers about which subscription pays.
Also resolve what the page would otherwise show blank or wrong: tracks carrying no declared model (the model must resolve through the records -- the lane's own accessor, else the provider's declared default -- and say so when it genuinely is not declared), and any task, track or subscription left unresolved in the registry.
⚖️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)
- Current state at filing (Elrond validity check): Task Tracker is still a flat list of service rows; earlier work added task budgets, track-to-subscription/model reads, and agent portraits, but the card layouts, live portrait rendering, and shared trailing-7-day estimate accessor are not in place. (elrond)
- [status-router] planned -> executing | event=bypass_executing | bypass transition (or-bx-01)
- Orion remediated: INI-999902586 bypass closed — CAROL-INI-696 close-marker: the Orion bypass INI-999902586 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)
- Orion remediated: INI-999902586 bypass closed — CAROL-INI-696 close-marker: the Orion bypass INI-999902586 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)
- Orion remediated: INI-999902586 bypass closed — CAROL-INI-696 close-marker: the Orion bypass INI-999902586 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)
- [delivery-check] 10 pending must-have criteria stamped met at bypass_end on live re-performance evidence (CAROL-INI-3020): test test_ini3670.py: PASS (23 passed in 6.84s) (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
- The landing page shows every service as a card, three to a row, each carrying the portrait of the agent who owns it -- read live from the agent composer, so re-owning the service in the registry changes the picture with no code change. (must_have)
- Drilling into a service shows its tracks as the same three-to-a-row card, each carrying the track owner's portrait, resolved the same live way. (must_have)
- Every track card names the SUBSCRIPTION that pays for it and the MODEL it runs on, both resolved from the registry records; re-tagging the track's provider or model changes the card with no code change, and a track with neither declared says so rather than showing a guess. (must_have)
- Drilling into a track lists that track's tasks; every task card carries its description, its budget, and estimated time, estimated token consumption and estimated spend averaged over the trailing 7 days of the cost ledger. (must_have)
- Budgets are shown at all three levels -- task, track and service -- read through the budget registry (service = the derived sum of its governed tracks); changing an allocation changes every level on the next load. (must_have)
- The app computes nothing of its own: every endpoint is a pass-through to one shared composer, and no service, track, owner, subscription, model or budget is written in the app's code. (must_have)
- The subscription record has ONE reader shared by the Task Tracker and the Model Subscriptions app -- the same question is not derived twice. (must_have)
- Every track resolves a model through the records, and any task, track or subscription left unresolved is either fixed in the registry or named on the page with its reason -- never shown blank. (must_have)
- Every new number on the page carries a registered definition in the app handbook (cookbook 938). (must_have)
- The app's tests cover the new endpoints and the browser test covers the card grid and both drill-down levels; the regression runner is green. (must_have)