Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Only 14 of 39 agents have any actions of their own; 25 have none, including Carol who runs 27 workers, and Archon, Sage and Leo who run 14 to 22 each, and the whole security line. Give every agent that operates something at least one honest action of its own, following the house style already set: read-only reports and reversible switches execute directly, anything that spends real money or drives the build lane is documented but carried out through an initiative, and nothing destructive is offered at all. An agent that genuinely operates nothing gets nothing rather than a fake capability. Also move the request-an-initiative capability out of hardcoded code and into the same catalogue as every other action so it can be described and governed like the rest, and record the ruling that there is one shared handbook under Athena rather than one app per agent.
⚖️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): The Agent Handbook app and the agent chat actions framework are reported done, and several related governance initiatives await sign-off. But this filing targets remaining gaps: agents like Carol, Archon, Sage, Leo, and the security line still appear to lack actions of their own, the request-an-initiative path is still hardcoded, and the one-shared-handbook ruling needs to be recorded outside a session note. (elrond)
- [status-router] planned -> executing | event=bypass_executing | bypass transition (or-bx-01)
- One shared Handbook app under Athena, not one per agent. — Ninad's ruling, CLI-185, recorded here in CLI-187 because until now it existed only in a session note — the design and the cookbook both stated Athena owns the app as a fact, but neither recorded that the alternative was considered or why it lost. The choice was between one app listing every agent's actions and one app per agent. One app wins because the action catalogue is a single registry table: one reader over one table cannot drift from what the chat enforces, whereas forty apps would each have to be kept honest separately, and an agent gaining an action would mean shipping an app rather than adding a row. Each agent still has its OWN page and its chat links to it, so an agent's handbook is still its own — what is shared is the machinery, not the content. (Ninad)
- Every agent gets the useful universal actions; agent-specific ones go only where a real source exists. — Ninad asked for actions 'for each agent'. Twenty-five agents had none. Rather than invent a speciality for each, three genuinely universal actions were added that every agent can answer honestly about its own things — whether its own workers actually ran (naming any that never have, are overdue, or failed), who reports to it, and what its service has spent against its limit. That takes every agent from five actions to nine. Agent-specific actions were then added only where the underlying data was verified to exist and hold rows. (orion)
- Nine candidate agent-specific actions were dropped because the data behind them does not exist. — Each candidate was checked against its real store before being written. Dropped: Leo's open questions (zero open, one row ever), Sentinel's prompt-quality findings (wired correctly, zero rows — every run skipped for want of recent conversations), Tyr's just-in-time access grants (zero rows ever; the broker that would mint them has no source file at all while its sweeper has run 1,472 times over an empty table), Forseti's, Vidar's and Var's scans (log-only — they print and persist nothing), Jarvis's chronicler (eleven rows, none since 6 April), Obi-Wan's UAT queue (fifty-two initiatives in review, none of which route to him), Galadriel's backlog (no store; her three droids are unimplemented skeletons that nonetheless record themselves as completed), and Noah's migration scanners (never run). Shipping these would have given nine agents an action that answers with nothing, which is worse than having none. Each is a real defect worth its own initiative; none was patched here. (orion)
- Gimli and Bilbo are given no speciality, deliberately. — Both own only a chat and a mind — no working droid, no app. The three universal actions still answer honestly for them ('nobody reports to me', 'I do not own a service'), which is the truthful answer rather than a pretend capability. A check asserts they have no agent-specific action so a later sweep cannot quietly invent one. (orion)
- Requesting an initiative became a catalogue row like every other action. — It was hardcoded in four places — the tool list, the handbook text, the Handbook app's count and its rendered rows — so it could not be described, disabled or governed the way the other thirty-one actions are, and any change had to be made four times consistently. It is now a single universal row. The tool list still appends it if it is ever missing, because an agent must ALWAYS be able to offer to file: that offer is the boundary's answer to anything it cannot do. (orion)
- A report that runs but answers nothing is a defect, and is asserted against. — The quality-scores action reported '23 measures catalogued, 0 have a score' while thirteen had one — the measure reader returns a score together with the explanation behind it, and reading that pair as a bare number scored every measure as unscored. It ran, it returned prose, and it was completely wrong. The checks therefore drive every new action for real and assert the answers are non-empty AND non-vacuous, because 'it returned a string' is not evidence that it works. (orion)
- [status-router] executing -> reviewing | event=bypass_reviewing | bypass transition (or-bx-01)
- UAT fail round 1 (acceptor ninad) (uat)
- [status-router] reviewing -> planned | event=uat_fail_rework | pipeline_uat uat_fail_rework (Ninad)
- [status-router] planned -> executing | event=operator_reopen | Ninad ruling CLI-187: an agent must know the CURRENT STATE of its own domain whatever that state is — including that its workers are unimplemented placeholders that record themselves completed. Dropping those nine actions was the wrong call; the emptiness IS the answer. (orion)
- An agent must know the CURRENT STATE of its own domain, whatever that state is. Emptiness and brokenness are answers, not reasons to stay silent. — Ninad's ruling, CLI-187, reversing my own call earlier the same session. I had dropped nine agents' reports because their stores held no rows, reasoning that an action which answers with nothing is a fake capability. That was backwards: it left precisely the agents with the most broken domains unable to say anything about them. Ninad's words: whether the agents have droids or not, whether they are active or not, is not the primary concern — the knowledge of the current state, whatever it may be, is of paramount importance. Galadriel should be able to say that her workers are unimplemented placeholders that nonetheless record themselves as completed eight times a week. She should know this. (Ninad)
- The state is DERIVED from the workers' own code and run history, never written down. — The tempting shortcut was to type the finding into each agent's report — which would have been correct today and wrong the moment somebody fixed the worker, with nothing to notice the change. Instead a shared reader detects six faults live: never ran, code is an unimplemented placeholder (read from the worker's own source, which announces itself), completes every time while recording nothing about what it did, last ran long ago, runs but leaves its store empty, and has no store at all. Galadriel's sentence is assembled from those readings, so fixing her workers silently stops the report — and a check asserts a healthy agent's workers are NOT slandered, because a detector that finds a fault everywhere is as useless as one that finds none. (orion)
- The nine dropped reports are restored, plus a universal one so every agent has this about itself. — The nine that were dropped — Leo's open questions, Sentinel's scan findings, Tyr's temporary access, Vidar's secret scanning, Var's personal-data scanning, Jarvis's daily record, Obi-Wan's sign-off queue, Noah's migration state and Galadriel's backlog — now report the true state of their own store together with the state of the workers meant to fill it. A tenth, universal, gives every agent the same knowledge about its own workers. An empty file is distinguished from an empty store: 'never built, not merely left unfilled' is a different fact and reads differently. (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
- Every agent that operates any worker or app can carry out at least one action of its own from its chat. (must_have)
- An agent knows and reports the true state of its own domain — including when its workers have never run, are unimplemented placeholders, or report themselves finished while recording nothing. (must_have)
- Asking an agent for something it cannot do results in an offer to file an initiative, described in the same list as everything else it can do. (must_have)
- Each agent's handbook page lists exactly the actions that agent's chat will really perform, and nothing it will not. (must_have)
- The reason there is one shared handbook rather than one for each agent can be found outside a session note. (must_have)