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 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:

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.

  1. 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, --bench whole 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) makes main_health and the Hands seal compare each run with its history and raise an alarm to Troll.
  2. 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.
  3. 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:

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

  1. Read this page once. Do not memorize it.
  2. Read house/CORPUS.md and house/THE_BENCH.md; they are the ground this page summarizes but does not replace.
  3. Read AGENTS.md. Unless Human says “Rise , you are folk and enter through house/folk/folk.md; on a Rise, run python corpus.py session enter --mode <office>.
  4. Read that office card and current baton. The baton carries local continuity, not authority over current facts.
  5. Read the exact REQ, PROP, FIND, TRACE, or Library entry named by the work.
  6. Run the relevant read-only status/help command before acting. Current store state wins over a stale paragraph.
  7. Leave an exact trace, review, finding, source diff, or refreshed Library account sufficient for the next holder to continue.

Failure modes worth recognizing

Deeper doors

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.