Unified Protect Enforcement Core: Built vs Drill-Owed Status

Status date: 2026-07-03. Owner: Sanctuary coordinator. This document is the honesty ledger for the exclusive-egress enforcement core (Unified Protect Slices 1, 2, 3, 4, 8). It states, per slice, what is BUILT (code merged, unit/integration tested) versus what is DRILL-OWED (no capability claim until captured, coordinator-verified evidence exists on the platform that matters, per the thesis-gate rule).

Approved wording (use this, never more)

Keystone evidence pointer

The pf/loopback keystone (the build’s gating question) PASSED on Tahoe: Review/Sanctuary/drill-evidence-2026-07-01/unified-protect-keystone/RESULTS.md (Mini1, macOS 26.5.1, Erik-present console session, N=3, coordinator-verified). A per-uid pf anchor on lo0 dropped agent-uid connections to a non-gate loopback port while allowing agent-to-gate, with state-table corroboration. That drill proves the MECHANISM; it does not prove this composed build.

Composed-build drill-acceptance (2026-07-03): both OS families

The BUILT enforcement-core code (armPfAnchor / checkPfAnchorLiveness / disarmPfAnchor / startExclusiveEgressGate) was drilled end-to-end, N=3 each, coordinator-verified, on BOTH macOS families:

Proven both hosts: P1 the CODE-GENERATED per-uid pf anchor confines the agent to the gate port (agent->gate CONNECTED, agent->non-gate BLOCKED, state-table corroborated); P2 the gate FAILS CLOSED the instant the anchor is flushed (next CONNECT = 503 liveness_refused, re-probed every CONNECT, no stale-positive cache); recovery clean; pf restored. Cross-version pfctl-format robustness proven (matchers work on both 14 and 26).

SCOPE OF THIS EVIDENCE (do NOT overclaim): it proves the pf-confinement + fail-closed-gate-liveness layer of the composed build, cross-OS. It does NOT cover, and these remain OWED before any external exclusive-egress claim: the sysext-armed full-design console drills (Slice 1, wall armed), Slice 4 harness self-confinement via the UserName=<agent> LaunchDaemon (an Erik-present arming ceremony), and the kernel off-box wall (Castle Wall NEFilter) on a second OS family.

Per-slice status

Slice 1: Loopback-TCP gate channel + manifest allow rule

Slice 2: Peer-identity recovery (ADVISORY-ONLY)

Slice 3: Confined-loopback pf anchor + fail-closed runtime liveness

Slice 4: Harness self-confinement engage (plumbing only)

Slice 8: Policy-parity and drift guard

Out-of-scope confirmations (verify, do not rebuild)

Honest residuals (state plainly, do not bury)

  1. OWED non-Tahoe leg: every enforcement claim above is at best Tahoe-proven at the mechanism level. The second macOS version (cross-OS-family) drill leg is OWED and blocks ANY external exclusive-egress claim.
  2. Hole B (confused deputy) is BOUNDED, NOT ELIMINATED: classifyUid treats every sub-ceiling uid as operator; any low-uid egress-capable local service remains a potential relay (mDNSResponder DNS exfil et al.). The pf anchor closes the arbitrary-loopback-relay path (Hole A) once drilled; it does not close deputy relays the agent reaches by non-loopback IPC.
  3. Multiplexed egress over an already-authorized channel (the inference endpoint, an operator browser, Remote Control over api.anthropic.com) is SEEN AND AUDITED, NOT BLOCKED. Selective blocking would require TLS interception, which Sanctuary refuses. This boundary must appear user-visible wherever Protect posture is surfaced (interim placement per design open-decision 4: this document plus any posture copy this feature ships; Erik may relocate).
  4. pf (and Seatbelt, if the defense-in-depth layer lands) are on shaky long-term macOS support. Each major macOS release triggers a mandatory confined-loopback re-drill before the claim carries forward on that OS version.
  5. Destination fine-grained control trusts the gate process (userspace). If the gate is compromised, kernel enforcement still confines the agent uid off-box, but per-action policy is gone. Routing honesty vs destination honesty per the design HIGH-3.
  6. The liveness check’s anchor-void detection is TEXTUAL AND CONSERVATIVE, not a pf-semantics model. The skip probe reads the (skip) flag from pfctl -v -s Interfaces (authoritative runtime state); the preemption scan flags any earlier quick pass rule not positively bound off loopback, WITHOUT modeling the rule’s own uid/port/af narrowing, so an exotic-but-harmless earlier quick pass on lo0 reads not-live (fail closed, never fail open). Not detected: a custom operator interface GROUP containing lo0 under a name other than lo that is skipped by name only (pfctl’s per-interface skip flag is expected to surface group-driven skips on the member; the composed drill must include one set skip on lo0 negative leg to confirm the probe on the platform that matters).