ReadonlyharnessPillar 2 — deterministic harness tests + evals: the binary can be spawned
and pointed at a mock model. Requires runtime + modelMock. false for
closed harnesses that route through a fixed backend (no BYOM): Cursor,
Devin, Amp, Amazon Q — they are pillar-1-only adapters.
ReadonlyreferencePillar 1 — reference verification (dialect + layout). Always true: every
harness with an instruction-file format can have its references verified.
ReadonlyshellHooks are shell processes speaking the exit-code/env block protocol —
Claude Code, Codex, Crush. Requires hookProtocol. false when hooks are
in-process code modules (OpenCode's TS plugins), so the run-hook unit
tier and the HookProtocol port do not apply.
ReadonlysubagentsThe harness has subagents — a named, model-dispatched delegate with its
own tool contract and frontmatter (Claude Code's agents/*.md, OpenCode's
agent surface). Gates the subagent-surface lint rules (subagent-tool-contract,
subagent-frontmatter, untested-subagent, mcp-tool-resolves): where this
is false those rules report n/a rather than running. false for Codex,
whose [agents] TOML is a concurrency table, not a tool-contract file — a
wholly different concept that deliberately shares the word.
Which vigiles pillars/tiers a harness can drive — the capability matrix made executable (see
docs/harnesses.md). Not every harness reaches every tier: a closed, un-mockable one (Cursor, Devin, Amp, Amazon Q) can only ever do pillar 1, and a harness whose hooks are in-process code modules (OpenCode) has no shell-hook tier. Declaring this lets the conformance kit relax the port requirements for what an adapter says it can't do (instead of forcing a fakeruntime/modelMock/hookProtocol), and lets the pillar-2 runners refuse — rather than mysteriously hang on — an adapter that can't be mocked.