Skip to content

2. check mandatory, apply optional

Context

Every procedure in this library is a pair of generator and validator. The usual rule for agentic development — give the agent a check it can run so the loop closes without a human as verifier — normally requires inventing a test. Here it does not: a lipogram either contains the forbidden letter or it does not.

Decision

check is required for registration. apply is optional and meaningful only when kind is constructive or both. A procedure without a working checker is not registered.

Consequences

The acceptance criterion is intrinsic to every registered procedure, so the codebase is unusually well suited to unattended agent work. Restrictive procedures — the whole of Batch 1 — are complete with check alone. The cost is that apply cannot be relied on by callers without consulting meta.kind first, which the CLI does on their behalf.

Amendment

ADR 0025 keeps apply optional and moves it onto a ConstructiveProcedure base class. The sentence above about apply living off BaseProcedure no longer describes the code; the decision it was serving — that a procedure with only a checker is a complete procedure — is unchanged.