Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Ninad (2026-08-12): (1) Remove the Folder Structure card (/home/caroladmin tree) from Carol Infra, including its backing folders endpoint and scanner. (2) The RAM headline (75.7%, = total minus available) and the breakdown bar (Carol 23.5 / System 3.8 / Other 68.5 = 95.8) disagree by construction: the bar sums per-process resident memory which double-counts pages shared across ~70 Python apps, and the user classifier predates per-app/per-role OS users so 62% of RAM (carolapps) plus role users land in Other. Fix: classify OS users from the registry (apps os_user + role users) not a hard-coded list; attribute memory by proportional set size where readable (RSS fallback); anchor the bar to the same used measure as the headline with an explicit unattributed (kernel/cache) segment and a free-capacity segment so segments sum to 100 and attributed segments sum to the headline. Propagate classifier fix to the CPU bar. Update the design record.
⚖️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)
- [HYGIENE GATE apps_registered] skip: work_type=G does not require app registration (orion.bypass)
- [HYGIENE GATE design_filed] pass: design 547: Carol Infra — resource breakdown bars: consumed distribution + free remainder (orion.bypass)
- [HYGIENE GATE architecture_compliance] pass: references architecture design #146 (agent-centric modular architecture) (orion.bypass)
- [HYGIENE GATE policy_check] fail: no policy_ids tagged — caller should explicitly acknowledge applicable policies or waive (orion.bypass)
- [HYGIENE GATE constitution_aligned] pass: soft-default pass; caller responsible for asserting via decision row (orion.bypass)
- [HYGIENE GATE cookbook_entry] fail: no cookbook_id provided — bypass should leave a recipe or explicitly waive (orion.bypass)
- [HYGIENE GATE logbook_entry] fail: no logbook_session_id provided — Orion bypass must write a Logbook entry (orion.bypass)
- [delivery-check] 6 pending must-have criteria stamped met at bypass_end on live re-performance evidence (CAROL-INI-3020): test test_ini3793_breakdown.py: PASS (5 passed in 3.16s) (orion)
- [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
- [status-router] reviewing -> blocked | event=reviewer_verdict | bypass twin reviewer verdict != pass (CAROL-INI-2039) (orion)
- [status-router] blocked -> executing | event=bypass_executing | bypass transition (or-bx-01)
- [HYGIENE GATE apps_registered] skip: work_type=G does not require app registration (orion.bypass)
- [HYGIENE GATE design_filed] pass: design 547: Carol Infra — resource breakdown bars: consumed distribution + free remainder (orion.bypass)
- [HYGIENE GATE architecture_compliance] pass: references architecture design #146 (agent-centric modular architecture) (orion.bypass)
- [HYGIENE GATE policy_check] pass: considered: P.01.03.01.06 (orion.bypass)
- [HYGIENE GATE constitution_aligned] pass: soft-default pass; caller responsible for asserting via decision row (orion.bypass)
- [HYGIENE GATE cookbook_entry] pass: cookbook 1289: The App Handbook mirrors the surface BOTH ways (orion.bypass)
- [HYGIENE GATE logbook_entry] pass: logbook session 371: (orion.bypass)
- [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
- [status-router] reviewing -> closed | event=uat_signoff | pipeline_uat uat_signoff (ninad)
✅Success criteria
- The Folder Structure card is gone from the Carol Infra page and its backing folders endpoint no longer exists; no dead references remain in the app. (must_have)
- RAM bar segments (projects + unattributed + free) sum to 100% and the non-free segments sum to the headline used% (within rounding of concurrent sampling). (must_have)
- Carol estate memory is attributed to Carol: OS users are classified from the registry (apps os_user + agent role users), not a hard-coded login list; carolapps and role users no longer land in Other. (must_have)
- Shared pages are not double-counted: attribution uses proportional set size where the process is readable, resident size only as fallback. (must_have)
- CPU bar uses the same registry-driven classification. (must_have)
- Design record for Carol Infra reflects the new breakdown semantics and card removal. (must_have)