Custody is part of ontoref Gov.
Custody
a domain ontoref resolves by bond · specifications, not an implementation

A safeguarded project is held to a contract, one axis at a time.

Custody states it; implementations hold it.

Who may touch a project, who signed it, where its private half lives, and whether its copy restores. Custody writes each of those down as a Nickel contract that ontoref reads through the domain's schemas. It runs nothing itself: isolation, iter and cloudatasave are bonded to it and held to the axis each implements, and a mechanism counts as enforced only when a command observes it holding.

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:

Mechanism = axis + by + side + standing + observed_by
Declaration = { provides: [Mechanism], claims: [Mechanism] }
  • axis is one of four: AgentBoundary, SignedHistory, PrivateOverlay, VerifiedCopy.
  • by names the project or tool that holds the axis.
  • side is 'Imposed when the OS, the forge or a credential refuses, and 'Oriented when configuration guides an actor who may follow it or not.
  • standing is 'Declared until a command observes the mechanism, and 'Enforced after. The contract refuses 'Enforced without observed_by, the command whose exit code witnesses it, and refuses it on an 'Oriented mechanism.

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

  1. Bond

    The project bonds to the custody domain in .domains-ontoref/custody/bonds.ncl. ontoref resolves the domain from the custody spine, which declares domain_provides with its schema path and its four capabilities: there is no authority entry in ontoref.

  2. Declare

    It writes its declaration: the axes it provides and the axes it claims, each with its side and standing. A declaration is valid before its witness exists.

  3. Check

    nu code/check.nu lists 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.

  4. Observe

    With --observe, the check runs the witness of every 'Enforced mechanism 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

ontoref

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

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.