Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
The Source of Truth scan run at 20:41 on 2026-07-30 was killed by its own 2-hour limit. The nightly run six hours earlier, on a quiet machine, took 72 minutes - so the limit is not far above the real duration and a busy machine pushes past it. This one had done the work: it recorded 3,301 artifacts against the completed run's 3,260, across every category, and the entries were spot-checked and correct. It simply never got to say it had finished, so the record shows a timeout and the run's own summary was never written.
HONEST READING OF THE CAUSE: this run overlapped several regression suites, browser tests, an embedding rebuild and a parallel session, so machine load is the most likely explanation rather than a scanner regression. That does not make it harmless. The induction asks a session to refresh the Source of Truth as part of its reconciliation step, and a session by definition runs during the day - so the step it prescribes cannot reliably complete. Either the limit is sized for a quiet machine only and should be raised, or the scan should be able to finish under load, or a session should be told to rely on the nightly run instead of starting one. That is the decision this needs.
Prior art: the limit was raised from 30 to 120 minutes for exactly this reason, under the rule that a self-timeout must be sized above the real duration. It has been outgrown again.
⚖️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=dispatcher_transition | dispatcher state change (ds-s1)
- Compliance waived by Orion: all 9 gaps name files this delivery did not touch. This delivery changed exactly these files: agents/agt_023/droids/sst_scanner.py; apps/sst/app.py (the stale duration note); docs/orion-induction/induction.md (the stale duration note); regression/test_ini3489.py (new); regression/tests.json. The gaps are: (1) a [core] finding listing Albus's and Elrond's pipeline droids, which are root-owned OS-locked core and were never staged, edited or core-installed here; (2) seven [boot] findings against agt_010/agent.py, Elrond's pm_s1, Merlin's sr_01 and sr_02, the retired vm_metrics app, shared/budget_monitor.py and shared/llm_provider.py — four of which read as 100% shrinks of files already emptied or retired in earlier sessions, and llm_provider's -74% is the provider-adapter refactor from CAROL-INI-3369. None of them appears in the list above. This is the stale compliance baseline carried in the handovers since CLI-161: it raises the same foreign gaps on EVERY bypass and its own follow-on cannot file, because the out-of-scope filer bounces on the budget gate (observed again at this close: INI2803_INCOMPLETE, missing budget_usd). Waived with evidence, not skipped. It still needs its own initiative — it will eventually bury a real regression. — The close gate must not block a delivery on findings that provably belong to other work, but the waiver must name what this delivery actually changed so the claim can be checked rather than taken on trust. (orion)
- [agt_010.mind] Decision (from Clara): Require agt_023 to revise CAROL-INI-3489-00 to make the daytime SoT scan incremental and time-safe. Concretely: (1) break the scan into paginated / chunked jobs that each finish within the allowed time window, (2) add a progress heartbeat every 2 minutes and a per-job abort after the configured timeout, (3) add retry-with-backoff for failed chunks and a safe resume token, (4) add a regression test that proves a full daytime scan completes within the limit on representative data, and (5) publish a Carolopedia update describing the fix and test results. Return with logs and test output as evidence within 48 hours. — Oldest-first drain is my rhythm; this timeout causes repeat failures and can hide cost/availability problems. A concrete, test-backed fix that enforces progress heartbeats and chunking breaks the failure loop and restores my capacity to verify other items. (agt_010.mind)
- [agt_036.mind] dispatched my droid ob-uat-01 (sequence next): Run first-pass acceptance testing on CAROL-INI-3489-00 (A daytime scan of the Source of Truth cannot finish inside its own time limit). Steps: 1) Open the Source of Truth scan UI or run the daytime scan job; 2) Reproduce the timeout/failure and capture logs and timings; 3) Verify the success criterion by observing the thing itself (not claims); 4) Check implementation shape against existing app templates and platform scan tooling — flag any bespoke scan layer or new architecture; 5) Produce a clear accept/reject verdict with evidence and recommended next step (fix, template reuse, or escalate). Deliverables: short verdict, logs/screenshots, architecture note. — My standing rule is oldest-first and one dispatch per wake; this initiative is the oldest in reviewing and its success criterion requires me/us to run the scan and observe the behaviour directly. Dispatching ob-uat-01 is the correct, owned way to get honest evidence and to flag any bespoke architecture. (agt_036.mind)
- [agt_036.mind] dispatched my droid ob-uat-01 (sequence next): Run first-pass acceptance testing for CAROL-INI-3489-00 (A daytime scan of the Source of Truth times out). Steps I want executed: 1) Run or open the daytime scan job/UI and reproduce the timeout; 2) Capture logs, timings, and any error traces; 3) Verify the success criterion by observing the scan itself (not claims); 4) Inspect implementation shape vs existing scan/app templates and platform scan tooling; flag any bespoke scan layer or new architecture; 5) Produce an accept/reject verdict with evidence and recommended next step (fix, template reuse, or escalate). — I follow my oldest-first, one-dispatch-per-wake discipline. This initiative was already queued for my UAT droid in my wake notes and matches my goal to review architecture shape before initiatives proceed. (agt_036.mind)
- [agt_036.mind] dispatched my droid ob-uat-01 (sequence sequence next): Run first-pass acceptance testing for CAROL-INI-3489-00: 1) Open/run the daytime Source-of-Truth scan and reproduce the timeout; 2) Capture logs, timings, and error traces; 3) Verify the success criterion by observing the scan itself; 4) Inspect implementation shape vs existing scan/app templates and platform scan tooling; flag any bespoke scan layer/new architecture; 5) Produce accept/reject verdict with evidence and recommended next step (fix, template reuse, or escalate). — Working oldest-first and dispatching one UAT run per wake preserves throughput. This initiative matches a previously planned UAT run in my memory and the steps are cheap to verify; if there is a bespoke architecture risk I must flag it now so Leo can act. (agt_036.mind)
- [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 refresh of the Source of Truth started during a working session reaches a completed state rather than being killed by its own limit. (must_have)
- When a refresh does run out of time, what it managed to record is distinguishable from a run that finished, so nobody reads partial results as complete. (must_have)