---
name: verification
description: Use before claiming a task is done or a change works — confirm it actually does, then record that you did. Triggers when you're about to report completion, mark a task done, or say "it works" / "fixed". Guards against declaring success on unverified work.
---

# Verification before completion

"Done" means verified, not "written." Before you claim a change works or set a
task `done`, confirm it against reality and record what you checked.

## Verify against reality

- Exercise the actual behavior — run it, test it, observe the output. Prefer the
  real path over "it should work by inspection."
- Check the thing the user actually asked for, not a proxy for it.
- If you *can't* verify something (no environment, needs hardware, needs the
  operator), say so explicitly — name what's unverified rather than letting it
  read as passed.

## Record the result, then close

- Log what you verified, and how, to the task with `add_task_log` — the check is
  part of the record, not a private step.
- Only then set the task `done`. Never mark finished work you haven't confirmed,
  and never leave confirmed work sitting at `in_progress`.
- If verification surfaced a problem, capture it as its own issue
  (`create_task(kind="issue")`) and keep the task open — a found problem is a
  pivot to record, not something to quietly skip.

## Honesty over optimism

A truthful "verified X; could not verify Y" is worth more than a confident
"done." The record is only useful if `done` reliably means done.
