TaskState plus
the workspace. For edit/test_only the external signal is the task’s frozen
verification plan (ADR-0007) — commands the harness resolved (config override →
deterministic detection → cited LLM proposal) and froze onto TaskState before
editing began. The verifier is a pure executor over that plan: zero language
knowledge, it runs each frozen command itself via ws.run and reads the real exit
code. The gate is harness-owned, so the model can never self-certify (§5). The
three pass criteria (§12): no required check fails; no required check is skipped
for a disallowed reason; at least one positive signal.
When no plan was frozen (a direct library call), the config override tier alone
is used as the plan — never a detected or invented default.
Classes
Verifier
Disposes of a completion proposal via external evidence, never a model (§12).
Args:
config: The harness config; its test_command/lint_command override tier
doubles as the plan when no frozen plan exists. None leaves both empty.
Verifier.verify(self, state: TaskState, ws: Workspace) -> VerifierResult
Run the verification contract for the task’s task_kind (§12).
Args:
state: The task state.
ws: The run-scoped workspace.
Returns:
The disposition over the contract’s checks.
Raises:
NotImplementedError: For an unrecognized task_kind.