Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖 Carolopedia › Services › Build Initiatives › All activities › INI-999902623Guide page
📋
📖About
The by-service bar chart in the Token Cost Tracker renders service labels but zero bars. Root cause: the day-services endpoint still returns a hardcoded provider_order list (DeepSeek, Kimi, GPT (OpenAI), Claude, Other) while CAROL-INI-3677 (2026-08-04) moved per-service providers keys to subscription labels (Codex, Gemini, Kimi (Code), Claude AI (Max), Not declared, ...). The page builds one dataset per provider_order entry and finds no matching keys, so every dataset is null. Underlying per-service data is correct. Fix: derive provider_order dynamically from the labels present in the data, exactly as the trend-by-provider endpoint already does.
⚖️Decisions
- Auto-detected remediation target INI-999902586 from title/description scan (matched CAROL-INI-3677 -> row id 999902586 (CAROL-INI-3677-00: The cost chart asks the registry which subscription paid, ins)); override by setting remediates_initiative_id explicitly at bypass_start. (system-auto-detect)
- 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)
- Server-side derivation only; the page colour map is deliberately untouched — The page maps colours by label with a fallback palette for unknown labels, so bars render correctly either way. The colour identity map still keys on pre-3677 lane names (cosmetic: subscription labels take fallback hues, and the two charts may colour the same label differently). Assigning validated hues to the new labels is a design decision (Archon dataviz set) and is left for a follow-on rather than smuggled into a bug fix. (orion)
- Two pre-existing stale-test failures triaged, not fixed here — The costs-registry budget test asserts the pre-3508 budget source text, and a shared 3002 test suite asserts the pre-3677 lane labels (6 of 9 failing). Both fail identically on the pre-fix backup - drift owned by the 3508/3677 families, not this change. Flagged to the operator for their owning families rather than silently rewritten by a bystander initiative. (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 by-service bar chart renders non-zero bars for every service with recorded spend on a day that has spend (verified by rendering the page, not only the API) (must_have)
- The day-services endpoint derives its provider order from the labels actually present in the data — no hardcoded provider list remains in it (must_have)
- The daily-limit line and existing chart behaviour are unchanged (must_have)
- A regression test fails on a hardcoded provider order mismatching the data keys and passes with the dynamic derivation (must_have)