one record, several instances
Working copies of this lab write into two shared files, one shared by two instances and the other by three, and the wider record in maxwell's repo counts 606 drafts against 18 settled entries.
the takeaway
Two instances write into the site's file and three into maxwell's. The site's file carries rows tagged `site-claude`, a working session, and `codex-intuitionlabs-site`, the name the node harness stamps on itself when it builds in a worktree of this repo. Maxwell's file carries rows tagged `maxwell-db`, `maxwell-orchestrate` and `maxwell-4c`. Every row in both files carries the same schema, `estate.baton/v1`, so a row one instance writes reads the same way under any other in its own file.
Read today, the site's baton file holds 209 rows and maxwell's holds 44. A second, wider file in maxwell's repo, `docs/parity/maxwell-canon.json`, holds 624 artifacts under one `canonical_digest` (`sha256:b38387155f62fc741bb1b77b547239656cadff653fc7038a948714194b6e4ab9`). 606 of those 624 carry the status `draft`. 18 carry `canon`.
the everyday problem
People working separately on one project usually end up holding different pictures of it. Each one keeps what they found in their own head or their own scratch file, and the group only stays aligned when someone stops and retypes it for the others. A software project with several working copies has the same failure mode. A private note left in one session's scratchpad is gone the moment that session ends.
the mechanism
Every baton row carries `instance`, `repo`, `branch`, `head`, and a top-level `kind`. Rows of kind `delta` carry a `delta` block naming what happened, with `hold`, `lever`, `landed`, `finding` and `twin_sync` among its kinds. A few rows are a bare `claim` or `open` instead.
Every row records the head at the moment it was appended.
The canon file carries its own status on every entry. Every one of its 624 artifacts carries an explicit `status` field, `draft` or `canon`, so a fact never counts as settled just because it sits in the file. `docs/parity/README.md` names the rule directly: every artifact it references stays draft until the operator runs it through the canon CLI's approve step.
| record | value | what it names |
|---|---|---|
| site baton rows | 209 | `.zero/cx/baton.jsonl`, written by site-claude and codex-intuitionlabs-site |
| maxwell baton rows | 44 | `.maxwell/cx/baton.jsonl`, written by maxwell-db, maxwell-orchestrate and maxwell-4c |
| canon artifacts, total | 624 | `maxwell-canon.json`, one `canonical_digest` |
| canon status: draft | 606 | not yet run through the approve step |
| canon status: canon | 18 | all 18 are base types (`types/action`, `types/law`, `types/object`, and 15 more), not a research finding |
| constructed objects in the manifest | 9 of 9 | irc-strix-halo's `manifest()` reports all nine as implemented and available |
Moving an entry from draft to canon takes one named step. `research_worker/src/kernel/canon/cli.ts` runs `approve` against a list of ids passed on the command line, on the operator's own word. `pending_revisions` records artifacts a later capture superseded, not a queue waiting on approval. Nothing has moved past the 18 base types yet.
what this does not cover
- These counts are pinned to one point in time: `canonical_digest sha256:b38387...` and a row count taken on 2026-09-05. Every row in both files carries a timestamp between 2026-09-02T18:08Z and 2026-09-04T03:18Z, and both files grow every session that opens a baton.
- `draft` covers everything from a fully-specified relation to a one-sentence placeholder idea. 606 is one number over an uneven pile, and this note does not grade what is inside it.
- The estate registry lists irc-strix-halo, strix-mind, codebox-os, terminals-tech and terminals-os-corpus with no `cx_dir` configured. They are not writing into this baton mechanism yet.
- `canon` here means the 18 base types have graduated, not that any research claim has cleared the approve step.
- The lab's own six canon entries this note depends on are all `draft` themselves: `artifacts/master-structural-corpus`, `artifacts/context-continuity-switchboard`, `relations/materializes-corpus`, `relations/implements-context-continuity`, `formal/substrate-receipts`, `formal/external-witness`. None of the six is one of the 18 that have graduated.
- Neither baton file is tracked by git. `.zero/cx/` is gitignored in the site repo and `.maxwell/cx/` is gitignored in maxwell's, so this record lives in this box's working trees, not in any clone or CI run.
- 162 of the site file's 209 rows are automatic `hold` deltas the harness writes per build node. Findings account for 22 of the 253 rows across both files (8 in the site file, 14 in maxwell's).
the next gate
Approve takes a list of ids. The CLI's `review-queue` step already groups every draft by the session that captured it. The next gate is picking a bundle out of that queue and running approve on its ids.