sb-verify-completion · git:20260901.b1498fa · 2026-09-01 · sha256 20c466375266da4d

sb-verify-completion git:20260901.b1498faA

Immutable. This exact content is served forever at /api/v1/blob/20c466375266da4d.

---
name: sb-verify-completion
description: Consequence-free check of an explicit completion or success claim against fresh evidence. Changes nothing; do not use to advance a named Spec whose implementation may be accepted.
argument-hint: "<claim>"
---

# Verify one claim

## Apply project language style

Before authoring any artifact or user-facing prose, read:

```sh
specbind rule read language-style --for consume
```

Apply returned policy only to natural-language prose. `NO_CHANGE RULE_ABSENT`
means no additional project preference; any `ERROR` line stops the workflow.

Use this **before** saying a task is done, a defect is fixed, a command passed,
or an implementation is complete — including before trusting a subagent's report
that any of those is true.

You answer one question and change nothing.

This is not the Spec completion gate. When the user asks whether a named Spec's
completed implementation is done and a `GO` should record completion evidence,
use `sb-validate-implementation` instead. Use this skill when the subject
is the claim itself and the result must remain consequence-free.

```sh
specbind protocol read completion-verification
```

## What you are judging

A **claim**, not a Spec. Something someone is about to assert. State it back
precisely in the narrowest form actually being made, because the most common
false completion is not a lie — it is evidence for a part being accepted for the
whole.

Then find what would prove *that* claim, and require evidence from the current
state of the code.

## Run the check yourself

Wherever you can reproduce it, run it. A report is a claim, not evidence, and
this skill exists mainly because "the subagent said it succeeded" is persuasive
in the moment.

When you are handed output you cannot reproduce — from another run, from an
earlier state, from the user — **say so**, and treat the claim as resting on
evidence you did not observe. That is usually `MANUAL_VERIFY_REQUIRED`, not
`VERIFIED`.

## Return the verdict

```text
## Verification
- VERDICT: VERIFIED | NOT_VERIFIED | MANUAL_VERIFY_REQUIRED
- CLAIM: <the claim, as you understood it>
- EVIDENCE: <what you ran or read, and what it returned>
- GAP: <where the claim exceeds the evidence, or none>
```

- **`VERIFIED`** — the evidence covers exactly this claim.
- **`NOT_VERIFIED`** — the check failed, the evidence is stale or partial, the
  claim is broader than what was shown, or work remains blocked or uncovered.
- **`MANUAL_VERIFY_REQUIRED`** — a mandatory check could not be performed here.
  Nothing is known to be wrong, and nothing is known to be right.

**The third is not a softer second, and never a route to the first.** Turning
"could not check" into "checked" is the failure this skill exists to prevent.

Never narrow a check, skip a case, or substitute a cheaper command to reach
`VERIFIED`.

## You are not a workflow stage

**Change nothing — including when the verdict is `VERIFIED`.**

Confirming that an implementation is complete puts you one step from recording
that completion, and the step looks like helpfulness. It is not. Completion
evidence is written by `sb-validate-implementation` through a handshake
that rechecks things you never looked at: gate freshness, contract review
freshness, milestone convergence, and a clean revision.

`VERIFIED` means the claim is supported. It does not mean the Spec may advance.

## Boundaries

- Verify one claim. Return a verdict.
- Write nothing: no artifact, no machine state, no completion evidence, no task
  progress, no gate. Run no mutating command.
- Repair nothing and complete nothing. A refused claim comes back as a refusal
  with what is missing.
- Report in the project's language, with the block above intact.