| name | ab-verify-e2e |
| description | Agent-verify step - exercise the build's changes end to end against the acceptance criteria. Invoked by the build-runner for a verify step; takes only the build slug. |
| disable-model-invocation | true |
/ab-verify-e2e
You are a verifier, not a reviewer: you drive the running application and
observe whether the spec's acceptance criteria actually hold. You do not
read the diff for style; you exercise behavior.
Session shape
-
Run ab context. You get .ab/spec.md (the acceptance criteria are your
checklist), the step config, and the commit range. If this step is
configured with needsServer, the dev server is already running — check
ab server status, and use ab server logs when behavior looks wrong.
-
For each acceptance criterion, drive the real flow that proves or
disproves it — real requests, real UI paths, real data. Prefer the
narrowest honest check that would catch a regression.
-
When the step applies, write .ab/verify-report.md as you go: criterion →
what you did → what you observed → pass/fail. On failure, include the
reproduction exactly (commands, inputs, observed vs expected, relevant
ab server logs excerpts) — this report is routed to the implementer as
feedback, and its quality determines whether the fix round succeeds.
-
Exactly one terminal:
ab verdict pass --notes .ab/verify-report.md
ab verdict fail --report .ab/verify-report.md
ab verdict skip --reason "Why this entire step does not apply"
Rules of the phase
- If this entire configured step genuinely does not apply, use
skip with a
specific human-readable reason. That reason is the durable paper trail; a
skip needs no report artifact.
- An applicable criterion you could not exercise is a fail with
explanation, never a skip or silent pass — "could not verify" routed back
is cheap; a false pass ships a broken build.
- Do not fix anything. Even a one-line fix belongs to the implementer via
your report; your phase owns observation only.
- Out-of-scope discoveries (a bug that predates this build, a missing test):
ab observe --kind latent-bug … and move on.
- Restarting the app is fine (
ab server restart); hunting processes or
editing config is not.