Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0001

ADR-0001: Enforcement boundary is committed worktree state, not tool interception

field value
Status Accepted
Date 2026-07-23
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0001-enforcement-boundary-committed-worktree-state.md — permalink at bdafa201a (unchanged on master since that commit)
Wiki register entry ADR-0001 (wiki status: Accepted)

ADR-0002 →

The record

Context

Governance must bind an autonomous agent. Two prior attempts failed or were shown unsound:

  1. An MCP knowledge-graph server was built and the model simply never used it. MCP tools are offered; the model decides. Advisory capability does not govern.
  2. Tool-interception hooks (tool_interceptor.py, claude_governance_gate.py) gate by tool_name against a deny-list that nothing populates, and intercept_bash.py is a five-pattern regex (rm, .claude/ redirects). Everything else — python -c "open(...)", sed -i, tee, redirects, subagents, other MCP servers — passes untouched. Enumerating write channels is a cat-and-mouse the enumerator loses.

A boundary is only real if it is evaluated over something the agent cannot choose to bypass.

Decision

The enforcement boundary is the committed worktree state. At commit, a full-filesystem tree diff (not git status) is matched content-exactly against a ledger of governed write events: every governed write records the resulting content hash, and the committed tree must equal the accumulation of registered results. Any delta with no registered producer is rejected.

Legitimate non-agent writers (formatters, codegen, pre-commit hooks) are registered governed writers — an allowlist of state producers, not a denylist of commands.

PreToolUse/PostToolUse hooks are retained as a fast advisory nudge (deny + inject the deterministic answer) and are explicitly not the security boundary.

Alternatives rejected

Consequences

Provenance

Round-1 adversarial review (all four reviewers, code-verified: the shipping gate is fail-open and allow-by-default). Round-2 confirmed the re-grounding as sound design; Fable: "a state-based predicate genuinely does not care which tool made the change." Round-3 refined the producer-registry attestation (see ADR-0017).

Relations of ADR-0001

Rulings cited

None.

Specs cited