How this is governed
Git-native blocks, baked hatches, two hostnames — and what this system refuses to claim.
This page describes how ARC works now, after the September 2026 rebuild. The earlier version of this essay described PassWeb, a D1 store, capability URLs, and an operator that laid hatches at runtime. That stack is gone. If you read an old link or an old memory card that mentions /h/, POST prove, or laying a sheet, it is stale.
1. The shape today
Source of truth is git. Block bodies live in seed/blocks/<ref>. Each agent's ordered list is seed/agents.json. npm run build runs scripts/build.mjs, which emits:
app/hatch/<agent>.md— the concatenated system prompt (blocks joined with---)app/blocks/<ref>— public bodies (skills, these HTML pages, doctrine)
npm run deploy uploads the app/ tree through Cloudflare Workers static assets. The Worker router is thin: map URL to file, set Content-Signal, return. No database, no lay, no operator API.
Two hostnames
- contentiscode.com — the public site. GET only. Skills catalog, doctrine (HTML and
.txt), this essay,llms.txt,sitemap.xml. - app.contentiscode.com — desk gated by Worker secret
DESK_KEY(bookmark once with?k=; cookie persists). Serves the chat SPA,/hatch/<agent>.md, and static assets. Inference runs on a local LM Studio endpoint over Tailscale; the Worker is not in the token path. Cloudflare Access removed 2026-09-12.
Do not put a login wall on the public site. Do not expect write routes on either hostname.
Block kinds
Each block has a kind prefix in its ref: doctrine/, pack/ (training), station/, project/, canon/, law/, facts/, kit/, orders/, memory/, skill/, pad/ (persona and rank remain only for the companion, Karl). Shared refs (doctrine, canon, packs) appear on many agents. Persona and memory stay per seat.
How a change ships
- Edit the block in git.
npm run buildnpm run deploy(or Mark's deploy gate)
Agents do not write the harness. A draft an agent wants ratified is a git change Mark commits.
2. Six kinds of binding
Alignment inside one operator's system is still six mechanisms. The gates changed when the runtime store went away.
| Binding | Question | Gate today |
|---|---|---|
| Delivery | Did the authored bytes arrive? | Honest receipt (2.7); desk loads one baked /hatch/<agent>.md |
| Provenance | Where did this claim come from? | Point at a file, or label a training default |
| Authority | Who may change what counts as true? | Git + Mark's commit; no agent write door |
| Scope | What may this agent touch? | Law, kit paths; tool permissions on the surface |
| Adversarial | Who says it is done? | Validator / cross-check / Mark |
| Structural | What cannot be expressed? | Size law, graders on the archived jig core (reference only) |
Delivery no longer uses PassWeb fragment words or fetch timestamps. The desk loads one file; Cursor loads from git. The failure mode is unchanged — an agent that did not load a block will still sound fluent — so the receipt in Article 4 still matters: say what you loaded, say what is missing.
Authority is simpler and stricter: if it is not in git after build and deploy, it is not in the launch payload. There is no paste-on-operator path.
Scope is still the thinnest binding. Rank and law are text. Real filesystem reach is granted by the tool surface (Cursor, Claude Code, desk with no tools by design).
3. What retired (2026-09-10)
- D1 payload store, jig runtime, PassWeb POST prove,
/h/and/b/capability URLs - Operator lay/copy sheet,
seed/*.mjsremote sync scripts, 30-minute TTL hatches - Workers AI inference on the desk (replaced by local LM Studio)
The archived stack lives under _archive/ in the repo for archaeology. Do not treat it as live procedure.
4. What this system refuses to claim
- Not that loading the payload means understanding. Delivery and comprehension are different questions.
- Not that the governance document controls behaviour. It configures practice. Refusal is a normal outcome.
- Not safety from good intentions. The question is what the artifact does in arbitrary hands.
- Not that this design scales to a general population. It is built for one operator's practice.
- Not that this page is finished. Revised in place when the harness changes.
The epistemology essay in the previous version of this page — prism, cross-substrate review, size law — still describes how I think about the work. The mechanisms in that essay referred to the old store. Read those sections as philosophy, not as curl targets.
5. Check this page
Anyone can verify the public site:
curl -s https://contentiscode.com/robots.txt
curl -s https://contentiscode.com/doctrine.txt | head -20
curl -s https://contentiscode.com/skills/cross-check | head -5
curl -so /dev/null -w '%{http_code}\n' https://app.contentiscode.com/ # 401 without desk gate cookie
curl -so /dev/null -w '%{http_code}\n' https://contentiscode.com/h/zero/prove # 404 — gone
curl -so /dev/null -w '%{http_code}\n' https://contentiscode.com/api/avatar/zero # 404 — gone
After clone and build:
npm run build wc -l app/hatch/cic.md seed/blocks/doctrine/arc npm run count # size law on script roots
The doctrine and skills on this host are the same bytes agents load. Nothing is held back as proprietary governance — the practice and accumulated corrections are what do not fit in a file.