--- id: HARN.1 status: ratified ratified: 2026-09-01 (Jason Woltje; PRD rev1 ratification PR) --- # HARN.1 — Harness configuration A harness is an installed agent runtime (claude, pi, codex, opencode, …). Shared contracts speak capability language; harness commands, model IDs, hooks, and settings live in runtime adapters (register OD-38). ## Harness configuration surface (WebUI page + CLI) | Control | Notes | |---|---| | install harness | single button push; installer runs server-side through official tooling | | enable / disable | disabled harnesses are not selectable on any seat page | | available models | an **allowlist** a seat may select from — not a selection. Whether `enabledModels` is role policy or harness/seat preference is open: [[GOV.5-open-questions]] Q-H1 | | reasoning level defaults | | | provider | which provider(s) back this harness ([[PROV.1-providers]]) | | linked auth accounts | which accounts may drive this harness ([[AUTHN.1-auth-accounts]]) | Enable/disable and install are runtime state (Postgres-owned) projected into whatever flat state the launcher needs ([[DATA.1-record-authority]]). ## Runtime adapter contract (pulled 2026-08-31 from adapter-contract draft) Every harness adapter binds a required capability set or **fails closed**: repository ops via wrapper capability, scoped file/command execution, structured reasoning, shared-memory capture/search/recall, inter-seat messaging/wake, checkpoint persistence + mechanical telemetry, a `mosaic coord` client that cannot mutate Kanban state or deploy seats directly, and credential resolution through the seat's own slot. Rules: - An unavailable capability is a **named blocker**, never silent degradation. **"Prompt adherence is not an enforcement mechanism"** — a harness that cannot persist checkpoints, emit telemetry, or honor fencing does not run workflows that need them. - Each adapter publishes a capability→binding table (capability, binding surface, config source, verification check) and proves its bindings at session start; verification failure is a named blocker. - Adapters bind capabilities but **never redefine role authority, delivery policy, gate outcomes, or review independence** — a harness whose native workflow conflicts with shared policy keeps the shared policy and records the conflict as an adapter limitation. ## E2 inputs (triage 2026-08-31; see [[GOV.2-docs-inventory]]) **Canonical ground truth**: the `fleet/` book — `concepts/desired-vs-observed-state.md` (roster-v2 sole writable authority), `concepts/generated-env-launch-chain.md` + `reference/generated-env-boundary.md`, `reference/roster-v2-fields.md`, `operations/reconcile-and-recover.md` (lock/generation semantics), `NORTH_STAR.md`/`FLEET-DOCTRINE.md` (delivery-fleet north star, subordinate to this PRD per rev0 §10). **Pending pulls**: brain `docs/guides/proposed/runtime/adapter-contract.md` (the register-OD-38 runtime-adapter capability contract this section cites). ## enabledModels ruling (Q-D4, Jason 2026-09-01) The Role Revision defines the allowed model set — a policy ceiling. The seat records model preferences within that set. Effective models = the intersection, consistent with the L2-D39 authority-intersection chain. A seat preference outside the role ceiling is refused, not silently clamped.