Files
stack/docs/PRDs/2026-08-31_PRD_rev1/HARN.1-harness-config.md
T
jason.woltje 13968e9a8b
ci/woodpecker/pr/ci Pipeline failed
docs: PRD rev1 review Q90 — Prettier-format the bundle, add rev0 archive README
Addresses CPS-PRD-REV1-REVIEW-Q90 findings F1 and F3 on PR #1491:

F1 (format gate): `prettier --write` on the 18 rev1 bundle documents.
Whitespace, table padding, list markers and emphasis delimiters only — a
normalized token comparison of every file before/after shows zero content
difference, so the ratified text is unchanged and no re-ratification applies.

F3 (rev0 relative links): the archived rev0 PRD stays byte-identical
(sha256 60cc2f98...36afdf verified) per GOV.1 archive-never-edit. A sibling
docs/PRDs/2026-08-26_PRD_rev0/README.md records the digest, the original
location, the owner disposition that the in-file links are intentionally
historical, and a resolution table for all 9 targets (11 occurrences), each
verified to exist. Future relocated archives ship the same README instead of
edited bytes.

F2 (test step) is investigated separately against the CI log.
2026-09-02 09:40:46 -05:00

65 lines
4.2 KiB
Markdown

---
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.