adr-001 made custody one contract per axis, none required of every project. Two of the axes meet where an agent works. AgentBoundary (isolation) says what the agent's account may read, write and run; it gives the agent nowhere to write. Until 2026-10-13 isolation also gave it a clone of its own (`agent-clone`), so a project could be bonded for AgentBoundary alone and the agent's history stayed apart from the owner's.
isolation adr-002 removed the clone: the agent writes only in a jj workspace of the owner's store, which iter opens (`iter workspace`) and isolation bounds (`agent-workspace`). A store holding a second workspace mixes authors in one history; iter's own declaration contract says so (sign_on_push must be false because a shared store always mixes authors), and its accept and publish judge each change by its author's signature. That is the SignedHistory axis, which iter provides.
The catalog says the host side already: the iter component requires vcs-jj, and agent_isolation requires nothing. Nothing said it on the project side. ontoref/code, a jj store about to get the agent's workspace, has no custody bond at all; gov, which ontoref provides, declares no isolation, iter or jj, and adr-013 keeps jj opt-in for any project.
A STORE SHARED BY WORKSPACES RELIES ON SIGNEDHISTORY. A bonded project in whose jj stores any workspace besides the store's own ("default") exists declares SignedHistory, provided or claimed. code/check.nu lists the workspaces of every jj store under each declaring project's root and fails the project that has a second workspace and no SignedHistory.
THE AXES STAY SEPARATE. AgentBoundary bounds what the agent may do; SignedHistory carries whose change each one is. A project may claim either alone: AgentBoundary alone where the agent reads or works outside any shared store, SignedHistory alone where several people share a store with no agent.
JJ IS REQUIRED BY THE SHARING, NOT BY THE DOMAIN. custody requires no project to use jj, and gov does not either; a project that opens a second workspace on its store is already a jj store, and from then on its declaration says on what its history relies.
code/check.nu fails a bonded project whose jj stores hold a workspace besides default while it declares no SignedHistory
agent_isolation requires iter in the catalog
Rejected: The boundary holds without iter, and on Linux iter's store sharing does not work (jj-vcs/jj#8716); it would make every isolated host install a tool some cannot use.
AgentBoundary implies SignedHistory
Rejected: An agent that only reads, or a project with no shared store, would have to claim an axis nothing in it relies on.
Make jj a requirement of the domain
Rejected: adr-001 rejected required axes; requiring a tool is narrower and no better founded. jj follows from the sharing.