The contracts
Everything that crosses an Orreth wire is governed by one of sixteen JSON
Schemas in
contracts/v0
(draft 2020-12, $id namespace https://orreth.ai/contracts/v0/…). The
contracts are deliberately depth-agnostic: no schema carries a tier name
in a logic position — scope paths and relative spaces everywhere, so the
same objects work at any tier of any topology.
v0 may still churn; semver discipline begins at v1.
| Schema | Title | Governs |
|---|---|---|
common |
Orreth common definitions | The 13 shared primitives every other contract references: DID, ContentHash, Sig, ScopePath, the two clocks, SemVer, Duration, TimeWindow, Space, Selector, Budget, StandardRef |
memory-record |
MemoryRecord | The atom of the fabric: the append-only, content-addressed, signed record — with visibility facets, retention, and distillation lineage |
retrieval |
Query / RetrievalResult | The read path: space × time, budget-gated; a budget miss is indistinguishable from a permission miss |
capability-token |
CapabilityToken | Attenuation-only permission: every delegation hop narrows, verified at presentation to the pinned root |
identity |
Identity | The immortal thread — memory keyed to the identity, never the process; attachment and governed transfer |
tier-profile |
TierProfile | The dials that make one binary a universe, ecosystem, or floor — retention, budgets, cadences, trust root, horizon |
run-record |
RunRecord | One unit of work, resident-authored — evaluations are never self-asserted |
pruning-policy |
PruningPolicy | The metabolism: what each layer keeps vs. distills vs. tombstones |
skill-standard |
SkillStandard | Procedural memory promoted with an acceptance rubric — promotion is a state transition, never a copy |
resolved-context |
ResolvedContext | The effective rule-set a subject operates under, content-addressed: same chain, same hash |
agent-surface |
AgentSurface | The SDK-neutral handle a workforce agent holds — five verbs: write, retrieve, skill bindings, model call, signal |
escalation |
Escalation | The human-decision work item: staged by machine, decided by humans, on wall-clock time |
factory |
StampOrder | Archetype → incarnation stamping at scale, governed, with birth certificates |
join |
Join | How a child registers with its parent: rules compelled downward, everything else offered |
signed-record |
SignedRecord / SignedBundle | The envelopes: observations push up, standards pull down |
universe-template |
UniverseTemplate | A whole universe as data — a pre-authored trust chain, stamp orders, and profiles |
How the implementations are held to them
Section titled “How the implementations are held to them”The honest shape, worth knowing if you build against the wire:
- The Python reference validates directly — every wire object in the conformance suite is checked against these schemas at test time (371 tests).
- The Rust kernel is held indirectly — the Python reference generates language-neutral input→output fixtures, and the kernel’s own test suite replays them byte-for-byte (canonicalization, signatures, the resolver’s hashes, the three flows). There is no shared runtime validator; the contract’s authority reaches the kernel through the fixtures.
- Canonical bytes are the real contract: sorted keys, compact separators, ASCII escaping — the exact bytes that get hashed and signed, identical across the SDK, the reference, and the kernel, pinned by a cross-language parity suite.