# Verification-Driven Development **Track:** Foundations of AI-Native Development — AI-Native Full-Stack Development — complete (30) **Framework / surface:** web dev (testing / browser verification / CI) **Level:** Beginner **Prerequisites:** Build With a Coding Agent, Context Engineering for a Codebase **In one line:** The agent’s explanation is not evidence; running code, tests, browser behavior, and diffs are. ## Theory, aesthetics & inspiration Edsger Dijkstra's 1970 warning — "program testing can be used to show the presence of bugs, but never to show their absence" — gains a sharper corollary when the programmer is probabilistic: an agent's explanation can be fluent, confident, and describe work that was never executed. AI-native development therefore runs on an evidence hierarchy. A passing type-check outranks "this should compile"; a passing browser test outranks "the button is wired"; an inspected database row outranks "the save succeeded." Design the verification before the implementation: define observable acceptance criteria, then give the agent tools capable of checking them — compilers, linters, unit tests, database assertions, browser automation. Playwright's own best-practices guidance points the same way: test user-visible behavior, not implementation detail, so an agent may refactor internals while the specification holds. The deeper principle is epistemic — separate what the model claims from what the system demonstrates — and it is what lets builders delegate larger work without delegating judgment. **Builder question:** For your current feature, what observable result would prove success without relying on the agent’s own description?