Verification Before Completion

← Back to Enforcement Layer vf-verification-before-completion.md

Verification Before Completion

No completion claims without fresh verification evidence.

The Rule

NO CLAIM WITHOUT EVIDENCE. NO EVIDENCE WITHOUT EXECUTION.

Before stating that anything works, is complete, is fixed, or is ready — you must have run a verification command in this session and read its output. Memory, intuition, and code reading are not verification.


Gate Function

Every time you are about to claim a status (works, done, fixed, ready, deployed, passing), execute this gate:

BEFORE claiming status:
  1. IDENTIFY — What specific command proves this claim?
     (build command, test run, API call, curl, git status, etc.)
  2. RUN — Execute the command. Full command, no shortcuts.
  3. READ — Read the complete output. Not a summary. The output.
  4. VERIFY — Does the output confirm the claim? Specifically?
  5. CLAIM — Now you may state the status, citing the evidence.

If you skip any step, you are making an unverified claim.
Unverified claims are lies with good intentions. Don't make them.

Red Flag Phrases

If you catch yourself about to write any of these, STOP and run the gate function:

Phrase What It Really Means
"Should work now" I haven't verified it works
"That looks correct" I read code instead of running it
"This should fix it" I haven't confirmed the fix
"The build should pass" I haven't run the build
"I believe this is complete" I haven't checked completion criteria
"Everything is in place" I haven't verified each piece
"This matches the spec" I haven't run the validation gates
"No issues expected" I haven't tested for issues

Applies To

This verification rule applies to ALL claims, including:

Build Claims

  • "Portal builds successfully" → Run cd apps/portal && npx pnpm build, show output
  • "Website builds cleanly" → Run cd apps/website && npx pnpm build, show output
  • "No TypeScript errors" → Run the build, show zero-error output

HubSpot Claims

  • "Record created" → Show the API response with the record ID
  • "Property exists" → Show the sample record or property check result
  • "Association created" → Show the association response

Git Claims

  • "Changes committed" → Run git status and git log -1, show output
  • "Branch is clean" → Run git status, show "nothing to commit"
  • "Pushed to remote" → Show the push output with remote confirmation

File Claims

  • "File updated" → Read the file, show the relevant section
  • "Config is correct" → Read and display the actual config

Fix Claims

  • "Bug is fixed" → Run the scenario that reproduced the bug, show it passing
  • "Error resolved" → Run the command that errored, show clean output

The Discipline

This is not bureaucracy. This is the difference between "I think it works" and "I verified it works." The cost of running a verification command is seconds. The cost of an unverified claim is broken production, wasted debugging time, and eroded trust.

Verify, then claim. Every time.