The contract
One record for every axis, on both sides of a bond
A project does not satisfy custody as a whole (ADR-001). A bonded project declares, in .domains-ontoref/custody/ontology/declaration.ncl, the axes it provides for others and the axes it relies on. Both use the same record, so a claim and the provision it relies on are read with one vocabulary:
- axis is one of four: AgentBoundary, SignedHistory, PrivateOverlay, VerifiedCopy.
- by names the project or tool that holds the axis.
- side is
'Imposedwhen the OS, the forge or a credential refuses, and'Orientedwhen configuration guides an actor who may follow it or not. - standing is
'Declareduntil a command observes the mechanism, and'Enforcedafter. The contract refuses'Enforcedwithout observed_by, the command whose exit code witnesses it, and refuses it on an'Orientedmechanism.
Four axes
Each axis is its own contract, held by its own implementation
AgentBoundary
What the agent's account may read, write and run on the host. Held by isolation; witnessed by nu isolation.nu witness, which exits 1 on any gap.
SignedHistory
Every change carries the signature of the actor that made it. Held by iter: accept and publish refuse a commit not signed by its author. Witnessed by code/witness/signed-history.nu on the forge's trunk.
PrivateOverlay
The dev-internal half, .coder and .claude, versioned in a private repository that is never mirrored, out of the agent's reach. Witnessed by code/witness/private-overlay.nu.
VerifiedCopy
An encrypted copy off the host, restored and checked, not only written. Declared by cloudatasave in its policy schema; its mechanism is not built, so the axis stays 'Declared, visibly.
No axis is required of every project. Cut to what its first two implementations both held, one project-wide contract was measured empty; per axis, each implementation is held to what it holds, and a gap shows as a 'Declared row instead of disappearing from the contract.
Principles
What the contract refuses
Custody states; implementations hold
Custody is the contract, never a mechanism. A mechanism written into it would make the contract describe one implementation.
Declared until observed
Writing 'Enforced costs nothing; a command that exits 0 is what makes it true.
Only what is imposed can be enforced
Configuration that orients an agent can be followed or ignored, so no exit code can witness it. It is declared, and never passes for a boundary.
A claim resolves to a provision
A claim that names a bonded project must find that project's provision of the same axis, or the check fails.
A shared store relies on signed history
A jj store holding a second workspace mixes authors in one history, so its project declares SignedHistory (ADR-002). The rule reads jj's record of the store, not anyone's intent.
The axes stay separate
AgentBoundary bounds what the agent may do; SignedHistory carries whose change each one is. A project may claim either alone.
The provider never bonds itself
A governance bond from custody to custody is a cycle the DAG refuses. The spine declares its own claims in .ontoref/ontology/custody-declaration.ncl, read beside every bonded project.
jj follows from the sharing
Custody requires no project to use jj. A project that opens a second workspace on its store is already a jj store, and from then on its declaration says what its history relies on.
A project under custody
From bond to witness
Bond
The project bonds to the custody domain in
.domains-ontoref/custody/bonds.ncl. ontoref resolves the domain from the custody spine, which declaresdomain_provideswith its schema path and its four capabilities: there is no authority entry in ontoref.Declare
It writes its declaration: the axes it
providesand the axes itclaims, each with its side and standing. A declaration is valid before its witness exists.Check
nu code/check.nulists the bonded projects from ontoref, never from a list kept in custody, exports every declaration against the schema, resolves every claim to its provision, and fails a project whose jj stores hold a second workspace with no SignedHistory declared.Observe
With
--observe, the check runs the witness of every'Enforcedmechanism from the declaring project's root. A non-zero exit breaks the check: it answers whether every enforced axis holds right now, across every bonded project.
On a host
A catalog of components, deployed without SSH
nu deploy.nu <components_dir> compares every component's installer with the host's declaration and exits 1 on a difference; with --apply it converges, dependencies first. The declarations use a provisioning workspace's format, so the same files serve provisioning once it can target the host.
agent_isolation
The agent boundary, built and witnessed by isolation, on macOS and Linux.
iter
iter at a pinned source, iter setup per declared repository and user, iter link per declared workspace.
jj · nushell
Pinned by version and verified by SHA-256 per OS and architecture before they are installed. A store shared by owner and agent depends on one jj version across the host.
signed_history_watch
The SignedHistory witness on a schedule, against a bare mirror of each forge trunk. Report-only: it refuses nothing.
verification_watch
The contracts a level pays at publish time, paid again on a schedule in a copy of the published trunk. Report-only: it writes nothing in the level.
Boundaries
What Custody is not
Not a mechanism
It refuses nothing on a host. The OS, the forge and credentials refuse; custody says which of them a project relies on and whether that has been observed.
Not a certification
A project can be bonded and declare nothing enforced. The domain says what is witnessed, not that it is enough.
Not a backup or a vault
It keeps no secret and no copy. A verified copy is one axis of four, and cloudatasave's to hold.
ontoref Gov
Seven projects, one domain: how a project governed by ontoref governs itself.
What it is
Gov is ontoref's own domain. It holds the arrangement — what a project's boundary declares, its members, which artefacts a consumer inherits — and the exercise — what work is committed and how an act is delivered. Its name is the root of governance, governability and government, and elects none of them.
Why
A decision, a boundary or a delivery that lives only in someone's memory binds no one. In Gov each one is a declaration a project can be held to, and what holds it is a mechanism, not a good intention.
What for
A project reaches Gov by bond, never by imposition, and takes only the parts it needs. Each of the seven carries one: the contract, the host boundary, the operations of work, the signature, the dossier, the observed session and the opening by name.
Part of the same system
Isolation
The host boundary between an owner and the agent working beside them.
Holds the AgentBoundary axis. Its witness is the command that observes it.
isolation.ontoref.dev →
iter
The operations of work in a jj store shared by an owner and an agent.
Holds the SignedHistory axis: accept and publish refuse a commit not signed by its author.
iter.ontoref.dev →
Signatio
Custody, verification and authorization around the act of signing.
signatio.dev →
SpecDossier
The dossier of a Statement of Work: drafts by digest, review rounds, receipts, and a one-way mirror.
specdossier.dev →
wuwei
Agent sessions, observed without forced intervention.
wuwei.observer →
openbyname
A link on a web page opens a file on your own machine, by name and safely: the link carries only names, and your machine decides what it may do.
openbyname.dev →
Stated per axis. Held by implementations.
Who may touch a project, who signed it, where its private half lives, and whether its copy restores: each one written down, and observed before it is called enforced.