---
description: Verify a task against its requirements and Acceptance Criteria — traceability check producing a PASS/PARTIAL/FAIL verdict with evidence
role: reviewer
argument-hint: "<wbs> [--agent <inline|auto|name>] [--fix <none|blockers-first|all>] [--focus <lens>] [--bdd] [--auto] [--force] [--next] [--skip-shippable]"
allowed-tools: ["Bash", "Read", "Skill"]
---

# Dev Verify

Wraps the **sp:code-verification** skill.

## Argument Flags

| Flag | Description | Default |
| --- | --- | --- |
| `<wbs>` | Task WBS to verify. | required |
| `--agent` `<inline\|auto\|name>` | Who runs the model-bearing verification. | omit |
| `--fix` `<none\|blockers-first\|all>` | Auto-fix policy on findings. | none |
| `--focus` `<lens>` | Verification lens. | omitted |
| `--bdd` | Run BDD scenarios. | off |
| `--auto` | Skip objective HITL gates. | off |
| `--force` | Re-run even if already verified. | off |
| `--next` | Hand off to the next-router on success. | off |
| `--skip-shippable` | Compatibility alias for --skip-shipable; skip the shippable gate. | off |

For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).

## Usage

```
/sp:dev-verify <wbs> [--agent <inline|auto|name>] [--fix <none|blockers-first|all>] [--focus <lens>] [--bdd] [--auto] [--force] [--next] [--skip-shippable]
```

**Shippable readiness** (feature-level): when `--fix all` and the task has a `feature_id`, the
skill runs `spur feature check <id>` after the per-task verdict and emits `Shippable: PASS|FAIL|N/A`.
Default **on** with `--fix all`. Opt out only with **`--skip-shippable`** (alias `--skip-shipable`).
See `sp:code-verification` § Shippable readiness gate.

## Implementation

- Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
- `Skill(skill="sp:code-verification", args="verify $ARGUMENTS")`
- **Residual sweep (F96 R1, post-record since 0987):** after `task verdict` derives
  `.spur/run/<wbs>-verdict.json` and `spur task record` has flipped the verdict-proven R/AC boxes,
  run `residual-scan scan` + `fold` (observe-only; folds the verdict's `residual-sweep` check,
  PASS → PARTIAL when a blocking residual exists) — under every `--fix` mode — then, only on a
  downgrade, re-run `spur task record <wbs> --verdict-file .spur/run/<wbs>-verdict.json` so Testing
  carries the final verdict. Same order as the pipeline `record` state (0983): scanning before
  record reads unticked-but-proven boxes and folds a clean PASS to PARTIAL. Resolve the script via `superskill script path sp
  residual-scan.mjs`; never reference `plugins/sp/scripts/` in shipped surfaces
  (script-contract-check rule 4). When the task reaches `done` through `--next`, run
  `residual-scan settle` (best-effort). On a folded PARTIAL: the bounded remediation loop has
  already run — a residual-failed task is routed to router C6 (HITL STOP), never another
  automatic fix loop.

**Flags:**

`--next`: chain-to-completion with
propagation — on a PASS verdict, hand the task back to `sp:next-router` to advance and re-invoke
until done or a gate stops it. The `testing → done` transition is the chain's first hop. A PARTIAL
or FAIL verdict halts the chain (task stays `testing` as review-pending). **was: `--next` chain-ish (undefined formally).**
