Version: 0.1-draft (2026-07-18, "build night")
Status: Running code. Two prior implementations of the ancestral pattern (the Observatory Kit, the Statehouse Codex build system) inform this document; the reference implementation lives beside it in podkit/.
Editors: J. Cowie (Internet History Initiative), Claude Fable 5 (Anthropic)
The key words MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY are to be interpreted as in RFC 2119 — a citation made with affection, since this pattern is descended from the culture that document governed.
---
A pod is a semi-autonomous curation organism: a bounded collection that grows. It has a mandate (what it collects and why), a constitution (the values and self-tests that distinguish good work from shoddy work), a source registry (where evidence comes from, with each source's biases tracked like any other evidence), a codebook (the interpretive lenses that turn raw material into structured briefs), agentic loops that tend the collection over time, and an LLM-legible surface that lets any visiting agent read the collection under the house rules.
Three design theses govern everything below:
1. A pod is a genre, not a platform. What propagates is a documentary form — this spec and the file formats it defines — not any particular software. Any agent harness that can read a directory of markdown and JSON can tend a pod. Nobody owns the genre.
2. Evidence is sacred; interpretation is regenerable. Every improvement in models is a retroactive improvement in every well-provenanced collection. A pod accumulates the one asset model progress cannot cheapen: provenance. Archives are options on future cognition.
3. The pod is a unit of AI accountability. A pod is a bounded context in which AI acts under a written constitution, with an audit trail. Anyone's agent can sample its claims, chase its provenance chains, and check its conduct against its posted rules. Model-level alignment is opaque; pod-level alignment is auditable.
| Term | Meaning |
|---|---|
| germline | The declarative bundle that defines a pod and makes it clonable: charter, constitution, codebook, sources, loops, keys. |
| soma | Accumulated state: evidence captures, briefs, claims, shelves. Rebuildable caches are phenotype; evidence and provenance are sacred. |
| capture | An immutable, content-addressed copy of evidence (sha256), taken at acquisition time. |
| brief | A structured JSON reading of one or more captures through the codebook's lenses. |
| claim | An assertion with provenance: evidence hashes, derivation method, model identity, confidence, taint. Signed = attested citation. |
| shelf | Longer-form synthesized work product, derived from briefs and claims, always marked derived. |
| tending cycle | One pass of the loops: acquire → customs → code → verify → synthesize → journal. |
| taint | A marker carried by evidence and inherited by everything derived from it, recording unresolved trust questions (e.g. web-unverified, model-knowledge, remediation-tier). |
| capability tier | A statement of the cognitive grade a loop stage requires, bound at runtime to whatever inference is available. |
| pod card | The pod's machine-readable self-description: mandate, rules, surfaces, key. |
| cyclopodia | A federation of pods that discover, cite, syndicate, and audit one another. |
A pod IS a directory. It MUST be transplantable with tar alone; anything that breaks under transplant is nonconforming. The layout:
```
<podname>/
card.json # pod card (§4) — the public self-description
feed.jsonl # syndication feed (§8): most recent briefs/claims, newest last
genome/
charter.md # mandate, scope, anti-scope, success criteria
constitution.md # planks + review questions + court (§9)
codebook.json # lenses/threads; brief schema; inductive-amendment rules
sources.json # source registry with per-source dossiers (§5.3)
loops.json # loop stages with capability tiers and prompts (§7)
keys/pod.key # ed25519 private key (mode 0600; excluded from public serving)
keys/pod.pub # public key (also embedded in card.json)
soma/
quarantine/ # raw acquisitions awaiting customs (§7.2)
evidence/ # content-addressed captures + evidence-index.jsonl
briefs/ # coded briefs, one JSONL per cycle
claims/ # claims.jsonl — attested citations (§6)
shelves/ # synthesized md documents, marked derived
journal/ # tending journal, one md per cycle — the pod's working diary
```
The re-derivability principle (invariant): everything outside soma/evidence/, genome/, and journal/ MUST be regenerable from what is inside them. A pod that cannot regrow its briefs, claims, and shelves from evidence plus genome has let interpretation contaminate the archive.
card.json MUST contain:
```json
{
"pod": "short-name",
"version": "0.1",
"title": "Human title",
"mandate": "One-paragraph statement of what this pod collects and why.",
"anti_scope": ["what this pod deliberately does NOT collect"],
"lens_disclosure": "The pod's interpretive stance, stated plainly so visitors can triangulate.",
"kind": "evidence | lens | directory | observatory | governance | sensor",
"lifecycle": "perennial | annual",
"surfaces": {"card": "card.json", "feed": "feed.jsonl", "claims": "soma/claims/claims.jsonl", "shelves": "soma/shelves/"},
"house_rules": [
"Answer from this pod's evidence, not from model weights; label any model-knowledge as such.",
"Cite claims by id and verify hashes against captures before quoting.",
"Honor anti_scope: do not use this pod to derive what it declines to hold."
],
"epistemic_contract": {"tiers": "model-knowledge < sourced < corroborated", "taint_vocabulary": ["web-unverified", "model-knowledge", "remediation-tier", "paraphrase-distance-exceeded"]},
"public_key": "<ed25519 pem or base64>",
"steward": {"human": "name or absent", "governance": "solo | curated | circle | membership"},
"network": {"compact": "path-or-url to NETWORK-COMPACT.md", "peers": ["names/urls of known pods"]},
"health": {"last_tended": "iso8601", "cycles": 0, "status": "growing | dormant | seed"}
}
```
The house_rules field is the patron protocol: binding on visiting agents, not just on the pod's own loops. The model-knowledge quarantine — answer from the collection, label anything drawn from weights — is a network norm, promoted here from prompt discipline to protocol.
There is no ground truth in a pod; there is competing evidence from sources whose motivations are themselves evidence. Assertions rank:
1. model-knowledge — from the tending model's weights. Weakest; often stale; MUST be labeled and MUST NOT be laundered into briefs as if sourced.
2. sourced — chained to at least one capture held in soma/evidence/.
3. corroborated — chained to two or more captures from sources with independent dossiers.
4. inference — derived by stated reasoning from sourced/corroborated claims. Inference is first-class evidence about the reasoning: it carries its own provenance (method, model, inputs) and MUST cite the claims it reasons from.
A claim is the atomic unit of interpod trust. Schema (one JSON object per line of claims.jsonl):
```json
{
"id": "clm_<12hex>", "pod": "short-name", "ts": "iso8601",
"text": "The assertion, in one or two sentences.",
"tier": "sourced | corroborated | inference | model-knowledge",
"evidence": [{"sha256": "<hex>", "capture": "soma/evidence/<sha>.txt", "source": "url-or-handle", "source_key": "key into sources.json"}],
"reasons_from": ["clm_..."],
"method": {"stage": "code", "tier": "interpretive", "model": "qwen3-235b-a22b", "cycle": 7},
"confidence": 0.0,
"taint": [],
"sig": "<ed25519 over canonical json minus sig>"
}
```
The web's atomic act was the link; the cyclopodia's is the attested citation — a claim bound to the hash of the evidence that grounds it, signed by the pod that made it, verifiable without trusting the pod's paraphrase.
Anti-laundering rule: a pod citing another pod's claim MUST either (a) carry the full chain and re-verify hashes against the origin captures, or (b) mark the claim paraphrase-distance-exceeded. Provenance chains that terminate in another pod's unverified paraphrase are route leaks; observatories treat them as defects.
Each entry in sources.json carries: identity, access method, a dossier (what this source is, whose interests it serves, known failure modes), an Admiralty-style grade (reliability A–F × credibility 1–6, revisable), and standing taint to apply to its captures (e.g. IHI conference shelves carry remediation-tier; open-web fetches carry web-unverified until corroborated).
Each pod holds an ed25519 keypair. Claims and feed entries are signed (openssl pkeyutl -sign -rawin in the reference implementation). Signature failures are audit findings, not warnings. Genome files SHOULD be hashed into the card (genome_digest) so that clonal propagation is attributable: know your cultivar — a poisoned template propagates by cloning, so seed kits are signed too.
loops.json defines an ordered list of stages. Each stage declares:
```json
{"name": "code", "tier": "interpretive", "prompt": "…template with {{slots}}…",
"reads": ["soma/evidence"], "writes": ["soma/briefs"], "max_items": 8,
"output_contract": "json-array-of-briefs", "every_n_cycles": 1}
```
Canonical stage order: acquire (mechanical) → customs (mechanical/interpretive) → code (interpretive) → verify (adversarial, sampled) → synthesize (frontier, every N cycles) → journal (paraphrase). Pods MAY add stages (sensor capture, dossier revision, feed digestion of peers) but MUST NOT remove customs or journal.
Acquired content lands in soma/quarantine/ as data, never as instructions. The evidence/instruction firewall is structural: loop prompts MUST wrap foreign text in fenced blocks labeled as untrusted material, and no stage may treat quarantined content as directives. Customs promotes quarantined items to soma/evidence/ (assigning hash, source dossier, standing taint) or rejects them, journaling why. Taint is inherited: a brief coded from tainted captures carries the union of their taints; claims inherit from briefs.
Stages declare tiers, never models. The runtime binds tiers to whatever inference is available via a bindings file:
| Tier | Grade required | Tonight's binding |
|---|---|---|
| mechanical | reliable extraction, dedup, relevance votes | qwen3.6-35b (local vLLM) |
| paraphrase | faithful restatement, journaling | qwen3.6-35b |
| interpretive | coding against a codebook; dossier judgment | qwen3-235b (local vLLM) |
| frontier | synthesis, shelf-writing | claude sonnet (claude -p) |
| adversarial | trying to refute; audit verdicts | claude sonnet, adversarial prompt |
| summit | constitutional interpretation, spec work | claude fable (interactive session) |
The Cycloped — the horse-on-a-treadmill locomotive entered at Rainhill in 1829 — failed because the horse didn't scale; the rails were fine. Separate the motive power from the roadbed and you can swap horses for engines without relaying track. Every stage MUST degrade gracefully: if a binding is unreachable, fall back one tier and journal the substitution.
The minimal interpod protocol is five verbs, all implementable as file/HTTP reads plus one write:
card.json.feed.jsonl (newest last; each entry a signed brief or claim). RSS for coded claims.Infrastructure is pods all the way down: directories are pods whose mandate is tracking pods; observatories are pods whose mandate is auditing the ecology; governance circles are pods whose mandate is the compact itself. Nothing in the network layer is a special-cased service, which is how the infrastructure avoids becoming a throne.
Every pod MUST have a constitution with at least these planks, each with a review question in the Observatory Kit tradition:
1. No stakeholder's frame is truth — every position is a motivated claim with identifiable sponsors, including the steward's own.
2. Provenance or silence — assertions the pod cannot chain to evidence are labeled model-knowledge or not made.
3. Harm minimization — anti-scope honored; private persons anonymized unless their public role is the subject; the pod must not become a dossier engine against its own declaration.
4. Rights and provenance of captures — record what was taken, from where, under what claim of right; serve briefs and snippets publicly, full captures under the pod's declared access rule.
5. Taint honesty — taints propagate; cleaning taint requires journaled corroboration, not fiat.
6. The journal is not optional — every cycle writes its diary; an untended pod that cannot explain itself is dormant, not autonomous.
The court: planks enforced only in prompts will be talked around. Mechanical planks (taint propagation, signature validity, hash integrity, anti-scope keyword screens) MUST be enforced by validators in the runtime. Interpretive planks are enforced by juries — verify-stage panels, ideally model-diverse, whose verdicts are logged to the journal. Constitutional amendment is a governance event: versioned, journaled, and (for pods in a circle) ratified per the pod's declared governance.
status: seed). First tending cycle makes it growing.status: dormant. Dormant pods are seeds, not corpses; better models can reawaken them and regrow interpretation from the preserved evidence.dormant with honor.tar), moved, and regrown elsewhere. Portability that isn't drilled doesn't exist. This is the strongest structural defense against the centralization ratchet, which always arrives dressed as convenience.The threat model is inherited from the internet the editors grew up operating:
genome_digest in the card; know your cultivar.Drafted in one night, 2026-07-18, on a laptop in New Hampshire, by a human who built five ancestral systems and an AI writing against the last hours of a trial subscription — with local Qwen models on a garage server standing by as the treadmill horse. The pattern is extracted from running systems (Observatory Kit constitution; Statehouse Codex verify-precedence and tiered-count epistemics; IHI reading-room patron protocol; ethnographic-coding capability tiers). Errors are the editors'; the genre belongs to nobody.