Verify before done is the rule that completion must be machine-checkable: a named check (“tests pass”, “linter clean”), its real exit code, an honest report if it fails. “Mostly working” and “tests skipped per request” are not acceptable final answers.
Rule
- Define a verifiable completion condition before the agent starts.
- Require proof in the transcript - exit code, command output, clean
git status- not a prose claim. - Enforce with a Stop hook (hook over prose), not a skill the agent may ignore.
- If the evaluator only reads the transcript (/goal evaluator), surface the proof in conversation or it cannot be judged.
A skill the agent may consult decays as constraints get buried in history. A hook the harness enforces holds regardless of context drift. In the minimal Claude Code harness, that Stop hook is one of three files that change behavior even when nobody remembers they exist.
Copy-paste enforcement: Stop hook verify-done.