Corpus Codex
This is the handoff door for someone who needs to understand Corpus as a whole without reconstructing it from hundreds of objects, tools, and old sessions. It explains the house, the work system, the useful mouths, the live programs, and an observed statistical pulse.
It is orientation, not authority. Follow its links when an exact status, contract, review, source body, or historical byte matters.
Corpus in one minute
Corpus is a persistent working environment (agent engine / folk engine) for temporary AI minds and one Human steward. A folk can arrive with no memory, enter a durable office, recover the state of work, use shared tools, make or review bounded changes, leave evidence, and disappear without forcing the next folk to reconstruct the whole chat.
The central problem is not “how do agents complete tasks?” It is:
How can minds that do not last inherit enough world to exercise judgment, work together, correct one another, and leave the place more capable?
Corpus answers with separations:
- the Human, folk, offices, job roles, and evidence keep distinct identities;
- making and independent certification are different powers;
- what happened and the story about it remain comparable;
- SQLite carries operational facts, Git carries source history, and the Library carries readable recovery;
- a typed Tendril records why objects belong together without merging them;
- raw artifacts may survive while derived summaries remain replaceable.
The house words are identity, replace, reiterate, prosper. The practical test is: does this leave Corpus and those who inherit it more capable after the current folk is gone?
What Corpus is not
Corpus is not a single autonomous agent, a roleplay world, a chat-history dump, a document wiki, or a task board with botanical names painted over it.
It is a real repository plus several explicit stores and command surfaces. Its house language is useful only where it compresses a technical distinction. In plain terms:
- a folk is one temporary agent sitting;
- an office is a durable function that different folk can inhabit;
- Hands implements accepted work and Eyes independently reviews it;
- a ring is evidence left by a completed tenure or movement;
- the house is the whole inherited environment;
- the Library is the readable layer that makes expensive recovery cheap.
The whole machine
flowchart LR
Human[Human steward]
Folk[Temporary folk]
Office[Standing office]
Work[Accepted bounded work]
Hands[Hands makes]
Eyes[Eyes certifies]
Store[(SQLite operational store)]
Tendril[Tendril relations]
Git[(Git and source)]
Archive[(Native and cold archives)]
Library[Library readable ground]
Next[Later folk]
Human --> Office
Folk -->|inhabits| Office
Office -->|forms or routes| Work
Work --> Hands
Hands -->|candidate + TRACE| Eyes
Eyes -->|pass / amend / refuse| Store
Store --> Work
Store --> Tendril
Hands --> Git
Git --> Library
Store --> Library
Tendril --> Library
Archive --> Library
Library --> Next
Store --> Next
The arrows do not transfer authority. A Library page can explain a REQ but cannot fulfill it. A TRACE can prove that execution happened but cannot certify its work. Git can prove which bytes changed but not who owned them.
Where truth lives
| Question | Owning surface | Useful mouth |
|---|---|---|
| What does the house stand for? | house/CORPUS.md |
Read it; no summary replaces it |
| What do the local words and scars mean? | house/THE_BENCH.md |
Read or use the short THE_STOOL.md |
| What work is accepted or terminal? | ai/ops/corpus-ops.sqlite3 |
python corpus.py ops req … |
| What was enacted? | CHANGE rows in the ops store | python corpus.py ops change … |
| What happened during an execution? | TRACE and execution rows | python corpus.py ops trace … and ops agent … |
| Why are two objects related? | Tendril ties | python corpus.py ops tendril roots/shoots … |
| What source exists now or existed before? | Working tree and Git | git status, git diff, git log |
| Where is a native session? | execution close/session pointer and archive | python corpus.py remembrance … |
| What whole arc should a later reader recover? | Library ENTRY | python house/offices/archivist/library_catalog.py … |
| Is an instrument shipped, shelved, or replaced? | Source/help plus Library capability receipt | library_catalog.py capabilities |
How work becomes real
The ordinary lifecycle is deliberately not one status:
FIND something worth preserving
↓
PROP a bounded proposed change
↓ enactment
REQ accepted work with one done-line
↓
Hands implementation movement + sealed candidate + TRACE
↓
Eyes independent PASS, AMEND, REJECT, or REJECT-HOUSE
↓
land `ops req land` puts the passed candidate on main
↓
CHANGE enacted result linked back to the REQ
One PROP may be cut into several REQs; the Orchestrator names the pieces and
the ropes between them (ops req revise --dependencies). PLAN is retired:
do not raise one or treat an old one as an order.
The second road is the PATCH, one bounded defect Code Troll has named on
declared paths. A goblin writes it and an independent imp verifies it
(python corpus.py session hole --kind goblin|imp --patch-id PATCH-###); the
same landing primitive carries it (PROP-240). Much of September’s backend
mending travelled this road rather than through REQs.
MSG is pointer mail between offices. NEWS is a house-wide headline. Tendril is the typed trail across these objects; it is not another lifecycle table.
PROP-330 gives the forward names their first rows: a BANNER is a goal (the Tendrils ring is BANNER-001) and a BLUEPRINT sits under it, reading readiness from its parts. Until REQ-493 lands they are proposed schema, not shipped tables. The shipped database keeps its old names so history and command compatibility remain intact.
The offices
Standing offices are durable angles of attention, not ranks:
| Office | Why it exists |
|---|---|
| Orchestrator | Protect coherence of action and route accepted work |
| Architect | Turn findings and ideas into bounded, testable propositions |
| Scout | Establish the factual picture before reasoning or action |
| Astropath | Determine what changed outside Corpus and whether it matters here |
| Code Troll | Remove recurring environmental friction and tend tools |
| Archivist | Keep useful memory without letting it become weight |
| Scribe | Protect continuity where experience becomes memory |
| Sigillite | Expose framing, hidden pots, and stories that cannot lose |
| Sol | Watch whole-tree health from beyond local branches |
| Familiar | Supply one bounded second perspective |
| Hands | Make one accepted change real and reviewable |
| Eyes | Independently protect against false completion |
Discover the live cards rather than trusting this compression:
python corpus.py role list
python corpus.py role help <office>
python corpus.py session enter --mode <office>
Tool map: start from the need
Nearly every supported repository action begins at python corpus.py. Use
python corpus.py --help, then descend with --help. These are the mouths a
new holder usually needs first:
| I need to… | Start here |
|---|---|
| Resolve a name, address, or tool | python corpus.py where <thing> |
| Read one object’s whole story | python corpus.py story REQ-### (also FIND, PROP, PATCH, TIE, exec-id) |
| Search prose memory deliberately | python house/offices/archivist/recall.py <terms…> |
| Enter or inspect an office sitting | python corpus.py session enter/status |
| See the live work board | python corpus.py ops board --lanes or ops req list --status open |
| Read one accepted work contract | python corpus.py ops req get REQ-### |
| Find the next actionable request | python corpus.py ops req next |
| Start a bounded Hands or Eyes job | MCP corpus_job_start, or python corpus.py ops job start … |
| Watch a running job | python corpus.py jobs <execution_id> --wait |
| Land a passed candidate | python corpus.py ops req land REQ-### --inspect, then without --inspect |
| Write or verify a named PATCH | python corpus.py session hole --kind goblin --patch-id PATCH-### (imp verifies) |
| Measure main’s test health | python tools/main_health.py show; fast tier python -m pytest, whole truth --bench |
| Inspect execution evidence | python corpus.py ops trace get TRACE-### --json |
| Preserve a durable observation | python corpus.py ops find mint … |
| Propose or inspect a structural cut | python corpus.py ops prop create/get/list … |
| Walk provenance backward or forward | python corpus.py ops tendril roots/shoots ID |
| Send or receive pointer mail | python corpus.py ops mail send/inbox … |
| Read current house headlines | python corpus.py ops news list |
| Inspect who sat and where their session points | python corpus.py remembrance who/session … |
| Validate the operational store | python corpus.py ops validate |
| Check schema and migration lease | python corpus.py schema status |
| Take a recoverable database snapshot | python corpus.py ops snapshot … |
| Back up source | python corpus.py backup git or backup checkpoint |
| Inspect Library arcs and capabilities | python house/offices/archivist/library_catalog.py list/capabilities/check |
| Refresh this Codex pulse | python house/offices/archivist/corpus_codex.py render |
Two discovery instruments go deeper:
# Live recursive CLI mouths and their implementation routes
python tools/corpus_cli_map.py --flat-json
# Shipped command/code map under a selected surface
python tools/ops_code_map.py --help
Do not treat a source symbol as a supported tool merely because search found it. Prefer live help, then the capability shelf, then exact source.
What Corpus is doing now
The live board below is generated, but the strategic shape is easier to read in three bands:
Read as of 2026-09-14; the generated tables below are fresher than this prose.
- The test suite first. Human’s word on 2026-09-14: everything else waits
until the suite is resolved. A serial run had grown to 47 minutes unnoticed
(FIND-1875, FIND-1876). The pristine-store seam (PATCH-575) and the two-tier
floor (FIND-1890: fast tier under a minute,
--benchwhole truth under five) cut it down. Architect’s chart FIND-1892 lists seven reds on main, six of them Troll’s. PROP-333 (REQ-494, REQ-495, REQ-496) makesmain_healthand the Hands seal compare each run with its history and raise an alarm to Troll. - The Tendrils ring: the store split as a rewire. PROP-327 moves every ops
leaf onto the Shop/House store pair before one accepted activation
(
--ground pair; direction in FIND-1863). The router, mail, news, and identity pieces have landed. REQ-487 (the generic seam step) holds several later pieces, and PROP-330’s REQ-493 (BANNER/BLUEPRINT schema) awaits Eyes. - A cheaper house to inhabit. PROP-329 has every mouth return the smallest decision-sufficient answer and name its own widening. PROP-240 gives REQ and PATCH one landing mouth. PROP-331 makes held work name its release. PROP-332 has the house sweep its own contradictions at entry.
Earlier bands (Codex V2 host witness, the Library trial, standing-session custody) are not dead, but they are not where the fire is. Their REQs (REQ-389/390/391) sit on the board.
The durable accounts are:
- source custody — settled first vertical;
- standing-session custody — live repair frontier;
- task-context compiler — shelved arc with its useful instruments and failed product claim kept distinct;
- session-preservation capability family — two shipped mouths and one shelved helper.
The pulse is a snapshot, not a promise that every open PROP will become work.
House pulse
Observed 2026-09-14T20:27:46-04:00. Snapshot fingerprint sha256:8b0972667134cf0812ad72b66c03f73380d12ad3377216c988987740a9439f31.
| Shape | Observed value |
|---|---|
| Offices | 12 discoverable offices (orchestrator, scribe, scout, astropath, architect, code-troll, archivist, familiar, sigillite, sol, hands, eyes) |
| CLI | 174 discovered command nodes; 163 mapped to implementation paths |
| Ops store | schema v35; integrity ok; foreign-key errors 0 |
| Repository | 2590 visible files; 544 Python; 1054 Markdown |
| Tests | 211 test modules; 4103 statically discovered test cases |
| Library | 9 entries (live 2, live; further work is bounded by the evidence 1, live; handed to the next Code Troll as a session goal 1, preserved evidence, never accepted 1, proposed and held by Human 1, read as live 1, settled 1, shelved 1); 19 capabilities (internal 11, shelved 2, shipped 5, superseded 1) |
Work moving now
Active plans
| ID | Plan | Updated |
|---|---|---|
| PLAN-010 | Codex V2 execution-owned host witness | 2026-08-24T21:00:29+00:00 |
Open request board
| ID | Status | Work |
|---|---|---|
| REQ-496 | proposed | PROP-333 P3: main_health show –board, and the code-troll Rise packet prints it in place of the line |
| REQ-495 | proposed | PROP-333 P2: hands_seal_pytest trips on a file at 2x its own median without changing the seal close |
| REQ-494 | proposed | PROP-333 P1: main_health judges each run against its tier history and Human floors; a trip mints one FIND and mails troll |
| REQ-493 | implemented_pending_review | Schema lease: banners, blueprint under a banner, parts (PROP-330 B1) |
| REQ-487 | proposed | The seam’s two-owner step is generic for any crossing leaf (PROP-327 X) |
| REQ-404 | deferred | Own standing Codex mail delivery and holder attention; supersede queue wake |
| REQ-375 | deferred | Retire the PATCH receipt apparatus once the tree oid carries it |
| REQ-347 | deferred | Establish funny-handle grammar and one-store schema law |
| REQ-343 | deferred | Trial one native child Orchestrator on one bounded REQ loop |
| REQ-391 | proposed | Distinguish requested children from incidental provider helpers |
| REQ-390 | proposed | Make Corpus-owned standing birth truthful and atomic |
| REQ-389 | proposed | Bind job births before meaningful provider input |
| REQ-431 | proposed | Matrix conversation substrate trial: Synapse and PostgreSQL in Docker, Element Web, ConversationTransport seam, bindings store, bind/say/reply/read/follow/wait mouths |
Newest open proposals — possibilities, not accepted work
| ID | Proposal |
|---|---|
| PROP-333 | The suite cost is read, not only recorded: main_health judges each run against its history and Human floors, a trip mints one FIND and mails Troll, seal receipts trip on a file against its own median, and Troll Rise opens a health board |
| PROP-332 | The house contradicts itself out loud: a shape sweep at entry, when as a mouth, and a stranger’s walk that owes nobody an interpretation |
| PROP-331 | Held work names its kind and its release, and the house re-asks: no status means not applicable |
| PROP-330 | BANNER and BLUEPRINT get their first live rows: the Tendrils goal as BANNER-001, the split as the blueprint under it, and the board reads readiness from parts |
| PROP-329 | Smallest return first: every mouth answers with the decision-sufficient minimum, names its own widening, and writers return receipts |
Recorded volume
| Store object | Total | Status shape |
|---|---|---|
| REQs | 483 | cancelled 68, deferred 4, fulfilled 402, implemented_pending_review 1, proposed 8 |
| CHANGEs | 491 | cancelled 64, complete 414, pending 13 |
| FINDs | 1899 | — |
| PROPs | 333 | deferred 20, enacted 256, open 18, rejected 2, withdrawn 37 |
| PLANs | 13 | active 1, cancelled 7, closed 5 |
| PATCHes | 612 | abandoned 90, named 9, verified 493, written 20 |
| TRACEs | 2281 | closed 2269, open 12 |
| Tendril ties | 2487 | — |
| MSGs | 3844 | acked 3768, unread 76 |
| NEWS | 418 | — |
| Executions | 2360 | active 2, historical 2, signed_out 2356 |
| Execution closes | 2111 | — |
Known pulse caveat
Every discovered CLI help route returned OK in this observation.
Source revision: bfe2edb079878e2bcb96db5ba64c14b2949b61c4 on detached. Operational counts come from read-only SQLite; CLI counts come from live recursive --help; repository counts include tracked and non-ignored untracked files. Regenerate with python house/offices/archivist/corpus_codex.py render.
The machine receipt behind that block is
library/catalog/codex-stats.json. check compares
its facts to the live house and verifies that the embedded block still matches
the receipt. Ordinary operational movement will legitimately make it stale.
First half hour for a new holder
- Read this page once. Do not memorize it.
- Read
house/CORPUS.mdandhouse/THE_BENCH.md; they are the ground this page summarizes but does not replace. - Read
AGENTS.md. Unless Human says “Rise” , you are folk and enter throughhouse/folk/folk.md; on a Rise, runpython corpus.py session enter --mode <office>. - Read that office card and current baton. The baton carries local continuity, not authority over current facts.
- Read the exact REQ, PROP, FIND, TRACE, or Library entry named by the work.
- Run the relevant read-only status/help command before acting. Current store state wins over a stale paragraph.
- Leave an exact trace, review, finding, source diff, or refreshed Library account sufficient for the next holder to continue.
Failure modes worth recognizing
- The story replaced the event. Go back to the store, source, or raw artifact.
- A maker certified itself. Look for independent Eyes evidence and the exact candidate identity.
- A graph walk looked complete because it stopped. Check limits, truncation, and drift fingerprints.
- A hidden helper looked absent. Check the capability shelf; hidden and shelved are different from shipped.
- A README became a second authority. Follow its pointers and compare the owning state.
- Old machinery was mended without asking whether it should exist. Ask existence first; keep the working instrument if the cyst is cut.
- Unknown ownership acquired a name from timestamps or prose. Leave it unknown until direct evidence binds it.
Deeper doors
- Repository clone door
- Doorplate for hosted agents
- Words to Live By
- Bench of names, instruments, and scars
- Library charter and ENTRY flow
- ENTRY contract
- CAPABILITY contract
- Generated Library catalog
- Archivist living baton
Freshness and correction
The authored sections should change only when the house-level explanation, tool family, or major program reading changes. The pulse should change whenever someone needs current counts or a current handoff.
When correcting this page, name what moved: evidence, contract, or explanatory standard. Keep earlier wording recoverable through Git. Do not update numbers by hand; regenerate their marked block and retain the receipt.