Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖About
Ninad ruling, CLI-167. Three asks that are one thing: what every agent carries into a conversation.
TODAY. An agent is handed a fixed block naming who it is, its service, and where the law lives. No agent can change a word of it. Nothing in that block tells an agent how to TALK, and nothing tells it which apps it may reach or how to link them. The link-builder shipped yesterday under CAROL-INI-3457 is wired into nothing, which is why Scriber still could not hand over the address of his own Logbook.
THE ASK. 1. Every agent knows the links to the apps it may reach. 2. Every agent talks like a person: short sentences, the important part first, plain language, no jargon; it is fine to answer incompletely and let a follow-up question draw out the rest. 3. There is ONE common prompt every agent picks up, and any agent may override it with its own.
THE SHAPE. One store holds prompt sections. A section written for 'common' is carried by every agent. A section written for an agent REPLACES the common section of the same name for that agent alone; sections it does not name are inherited untouched. An agent may also add sections of its own. The merge happens at the single place every attributed model call already passes through, so no agent, droid or app is edited to receive it.
DERIVED, NOT INVENTED. The common style is taken from Carol's own prompt, because she is the agent who already talks to people all day and her rules are proven: short sentences, one or two in casual chat, one short question at a time, never expose internal names or machinery, translate to plain English. Ninad's instruction was that the common prompt be picked from Carol.
THE APP LINKS ARE DATA, NOT TEXT. The common prompt names a placeholder; the renderer expands it per agent from the app directory. So an app that changes hands, or a new app, shows up with no edit to any prompt (cookbook 856).
SCOPE OF THE STYLE (Ninad ruling, CLI-167). The short/plain style applies when an agent is talking to a PERSON. Working output between agents - Albus's diagnoses, Sage's specs, Argus's verdicts - keeps its detail, because the pipeline's gates read those for evidence and a shortened one would fail them. The renderer therefore takes an audience and defaults to the safe one.
FAIL-OPEN THROUGHOUT. A store that cannot be read returns nothing and the agent proceeds exactly as it does today. A prompt layer that breaks must never stop an agent from working.
⚖️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 link-builder from CAROL-INI-3457 exists but is not wired, so agents still cannot name or link the apps they can reach. No common prompt or override mechanism has been implemented, and agents' conversation style is not controlled by the described system. The three asks remain unfulfilled. (elrond)
- [status-router] planned -> executing | event=bypass_executing | bypass transition (or-bx-01)
- The human style is scoped to conversations; the build chain keeps its detail — Ninad ruling CLI-167. Short, plain, lead-with-the-point applies when an agent talks to a PERSON. Sage's specs, Albus's diagnoses and Argus's verdicts keep full detail because the pipeline's gates read them for evidence and a shortened one would fail them. The signal is the work ticket's kind='chat', already declared by the chat lane under CAROL-INI-3456, so no chat app was edited and the build chain cannot pick the style up by accident. (Ninad)
- The common style is taken from Carol's own prompt rather than written fresh — Ninad's instruction was that the common prompt be picked from Carol. She is the agent who talks to people all day and her rules are proven in production: short sentences, one or two in casual chat, one short question at a time, plain English, never expose internal names. Inventing a new style would have thrown away the one voice we know works. (Ninad)
- TWO DEFECTS IN MY OWN WORK, found before UAT and fixed — Both were caught by the EXISTING three-layer context check (CAROL-INI-2905) on the first full regression run, not by my own checks - a useful reminder that a new feature's own tests grade only what its author thought of. (1) SIZE. I put the full reachable app list into the hourly standing context. Elrond's reviewer went from 1,864 to 4,618 characters, breaking the under-4,000 compact-block rule that exists because that memo is injected for every agent every hour (cookbook 768's context diet). Clara can reach 78 apps, so this would have been far worse for her. FIX: the FULL list now rides conversations, where somebody is actually asking 'where is X?'; every other lane carries a short list of the agent's OWN front doors, capped at ten and without the repeated ownership note. Elrond's reviewer is now 2,782 chars, Clara's side 2,198. (2) AN UNKNOWN CALLER WAS TOLD WHAT EXISTS. An id the registry cannot resolve used to get nothing back; with my change it received the shared app list. That broke CAROL-INI-2905's fail-open contract and quietly told an unidentified caller what the estate contains. FIX: the prompt layer is attached only when the caller resolves to a known agent or droid - no identity, no prompt. Both are now asserted in test_ini3464 itself (the compact block is measured for three different agents, and the unknown caller is checked twice), so the next person to touch this layer fails in their own file rather than in somebody else's. (orion)
- An app with no recorded address is omitted, never given a guessed one — Two apps had no address. MyTool was a registry row with no code behind it - deleted, with the row backed up first. Semantic Memory is real and running but has no web route, so having no link is the truthful answer. The renderer skips an app it cannot link and the prompt tells the agent to say it cannot reach something rather than invent an address. (orion)
- [status-router] executing -> reviewing | event=dispatcher_transition | dispatcher state change (ds-s1)
- [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
- Any agent asked which apps it can reach answers with names and working links, without a person editing that agent. (must_have)
- An agent talking to a person replies in short plain sentences that lead with the point, while the build chain's specs, diagnoses and verdicts keep their full detail. (must_have)
- One common prompt is carried by every agent, and an agent that defines its own version of a section gets its own wording while still inheriting every section it did not touch. (must_have)
- Changing the common prompt, or handing an app to a new owner, takes effect for every affected agent with no code change. (must_have)