Agents produce confident output. Confidence is not evidence. Validation is the step that separates “the agent says it is done” from “we can show it is done”.
The validation loop
- Define criteria. Start from the acceptance criteria in the brief. If the brief has none, stop and write them first.
- Rewrite as checks. Every criterion becomes a yes/no question with an observable test.
- Run the checks. Use tools where possible: builds, type checks, link checks, screenshots, browser tests.
- Collect evidence. Save the output that proves each pass: logs, screenshots, reports.
- Report failures. Each failed item gets a concrete fix and a re-check, not an explanation.
- Re-run. Validation only ends when the checklist is clean.
What belongs in the checklist
The best checks are mechanical and repeatable:
- The production build passes from a clean checkout.
- Type checking reports no errors.
- All internal links resolve.
- No horizontal overflow at the target widths.
- Search returns results from real content.
- The deployed URL passes the same checks as local.
Add product-specific checks on top: content completeness, source verification, metadata uniqueness, or whatever the task actually promises.
Evidence beats assertions
When an agent reports “all checks passed”, ask for the artifacts. A screenshot proves layout. A build log proves the build. A link report proves the links. If the evidence is not attached, the check did not happen, and the item stays open. This rule is what makes validation trustworthy across sessions and across agents.
Watch the common failure modes
The most common validation failures are not technical. They are: checking only the happy path, checking only desktop widths, treating “it builds” as “it works”, and marking items passed without evidence. Name these four failure modes in every review and the checklist will catch them by design.
When validation is done
Validation is done when every criterion has a pass and attached evidence, and a different agent can re-run the checklist and reproduce the result. That last property is the test of the test: if the checklist is not repeatable by someone else, it is not yet a checklist.