mb-verify — Verifier loop (acceptance → evidence → verdict)
- What it does: checks a completed task against acceptance criteria and records the result with evidence.
- Use it when: implementation is done and you want an explicit PASS, FAIL, or partial verdict.
- Input:
TASK_ID, acceptance criteria sources, and the task protocol files.
- Output:
verification.md, evidence artifacts, verification verdict, and recommended next status/follow-up bugs when criteria fail.
Goal
Independent-ish verification so we don’t “trust without verify”.
This is not the adversarial semantic pass.
If a task may satisfy AC/REQ while still being wrong in substance, follow with /red-verify / mb-red-verify.
Status Transition Modes
Status transitions have two modes.
Scheduler mode:
/autopilot and /autonomous own task status transitions.
- Scheduler decides closure/failure/blocking eligibility.
/execute returns scoped implementation handoff; it does not close tasks.
/verify gives functional verdict/evidence; in scheduler mode it does not close/fail/block/promote.
/red-verify gives semantic verdict for T2/T3; in scheduler mode it does not close/fail/block/promote.
/mb-sync records/reconciles state after the scheduler-provided closure/failure/blocking decision. It does not decide closure itself.
- T0/T1 scheduler closure may use compact evidence / functional PASS according to tier policy.
- T2/T3 scheduler closure requires
VERDICT: PASS plus SEMANTIC_VERDICT: semantic-pass before scheduler marks done.
- T3 scheduler closure also requires exact markers
HUMAN_CHECKPOINT: done and ROLLBACK_RECOVERY_NOTE: present.
Manual mode:
- Expected T0/T1 simple flow:
/execute -> /verify.
- Manual closure is allowed only when an explicit closure owner exists.
- T0/T1 may be marked
done after functional VERDICT: PASS and completed evidence.
- T2/T3 must not treat
/verify PASS alone as final done; run /red-verify and require SEMANTIC_VERDICT: semantic-pass before final closure//mb-sync.
- If required T2/T3
/red-verify returns anything other than semantic-pass, leave closure pending or blocked, not done; optional T0/T1 red-verify does not make their normal verify-based closure stricter.
semantic-concern in manual mode means do not trust the existing done state without human review / follow-up.
- Do not mix scheduler mode and manual mode inside one task run.
- No persisted
mode field is used.
Inputs
TASK_ID (e.g. TASK-123)
- Authoritative task record via
.memory-bank/tasks/index.json and .memory-bank/tasks/<TASK_ID>.task.json
- Mandatory
tier: T0|T1|T2|T3 in that task record
- Links to acceptance criteria:
.memory-bank/features/FT-* and/or
.memory-bank/requirements.md (REQ IDs)
- Link to protocol plan:
.protocols/<TASK_ID>/plan.md
If present, also use:
- linked authoritative SDD specs for any tier
verification_targets
normative_inputs
constraints
invariants
- task record references to source artifacts
Authoritative SDD spec links are links in task richer fields or linked feature
spec_design_links that point to .memory-bank/spec-index.md,
.memory-bank/tech-specs/, .memory-bank/architecture/,
.memory-bank/contracts/, .memory-bank/domains/, .memory-bank/states/,
.memory-bank/adrs/, .memory-bank/testing/, or .memory-bank/runbooks/.
Preconditions
- Implementation is done and gates were run (or failures recorded).
.memory-bank/tasks/index.json lists the target task record, and the indexed .task.json validates the requested TASK_ID.
- Authoritative verification routing is only
task.tier; the old risk / risk.level model is invalid.
Required outputs
T0 / T1: verification may be recorded in compact .protocols/<TASK_ID>/run.md.
T2 / T3: update (or create) .protocols/<TASK_ID>/verification.md using:
./references/shared-protocols-verification-template.md
- Store evidence in
.tasks/<TASK_ID>/:
- logs, screenshots, videos, reproduction steps
- Add completed evidence entries to the task record
verify field; evidence_required and verification_targets remain requirements/targets, not proof by themselves.
- Before any command sets
status: done, the task record verify field must contain completed verification/evidence entries.
Status ownership
mb-verify owns verification evidence and VERDICT: PASS|FAIL|NEEDS-CLARIFICATION.
- When invoked by
/autopilot or /autonomous, it must not close the task, set status: done, set status: failed, block dependents, or promote dependents. It reports a recommended next status to the scheduler.
- In standalone/manual mode, it may mark a
T0 / T1 task done after functional VERDICT: PASS only with explicit closure ownership.
- For
T2 / T3, mb-verify records functional evidence and closure recommendation, but final closure requires mb-red-verify semantic-pass first.
Process
1) Prime only what you need
Read:
.memory-bank/tasks/index.json
- indexed
.memory-bank/tasks/<TASK_ID>.task.json
.protocols/<TASK_ID>/context.md
.protocols/<TASK_ID>/plan.md
.protocols/<TASK_ID>/progress.md
- acceptance criteria source docs
.memory-bank/spec-index.md and all linked authoritative SDD specs when the
task record or linked feature contains SDD spec links, for any tier
Before verifying, validate the authoritative task record:
- the task is present in
.memory-bank/tasks/index.json
- the indexed record
id matches TASK_ID
- required fields for verification are present (
status, feature, reqs, depends_on, gates, verify)
tier is present; if missing, stop
- for
T2 / T3, linked SDD specs are present in task richer fields, feature spec_design_links, or spec-index.md; if absent, stop and route back to /spec-improve or /spec-auto
Do not block T0 / T1 only because SDD spec links are absent.
If the authoritative task record is missing or invalid, stop and report the issue instead of verifying from protocol docs alone.
Priority:
- linked authoritative SDD specs for any tier, when present
- explicit
Verification Targets
- explicit
Normative Inputs
- classic feature acceptance criteria and RTM
- evidence in
.tasks/<TASK_ID>/
Missing richer fields or absent SDD spec links must not block verification of a
classic T0 / T1 task.
2) Verify acceptance criteria
For each AC / REQ:
- run the smallest meaningful check
- prefer deterministic checks (tests/CLI) over “looks OK”
- record what you did and link the evidence
If the task changes UI or browser behavior:
- prefer Playwright / agent-browser / CDP-driven verification
- capture screenshots/videos/traces when useful
- store artifacts in
.tasks/<TASK_ID>/
- do not use “I clicked around manually” as the main evidence when browser automation is available
3) Verdict
If anything fails:
- set
VERDICT: FAIL
- create a bug doc in
.memory-bank/bugs/BUG-<short>.md
- add a follow-up
.task.json and update .memory-bank/tasks/index.json (if needed)
- recommend current task
status: failed
- in scheduler mode, do not block downstream dependents directly; return that recommendation to the scheduler
If all pass:
VERDICT: PASS
- add completed verification/evidence entries in
verify
- apply status by tier:
- scheduler mode: recommend the scheduler decision; do not close/fail/block/promote
- manual mode: may set
T0 / T1 status: done after functional VERDICT: PASS with explicit closure ownership; for T2 / T3, leave closure pending /red-verify SEMANTIC_VERDICT: semantic-pass
- in scheduler mode, final
T2 / T3 closure is eligible only after /red-verify / mb-red-verify returns semantic-pass
4) Sync recommendations
- Record RTM/feature lifecycle recommendations for
/mb-sync
- Do not independently perform scheduler closure or dependent block/promotion
Definition of done
- Verification output exists and is evidence-backed: compact
run.md for eligible T0 / T1, full verification.md for T2 / T3.
- PASS verification has updated RTM/task evidence;
T2 / T3 tasks are not closed until /red-verify / mb-red-verify produces semantic-pass.
- FAIL tasks have a bug doc and next steps.
1---2name: mb-verify3description: Verify one TASK-* against acceptance criteria and record reproducible evidence.4---56# mb-verify — Verifier loop (acceptance → evidence → verdict)78- **What it does:** checks a completed task against acceptance criteria and records the result with evidence.9- **Use it when:** implementation is done and you want an explicit PASS, FAIL, or partial verdict.10- **Input:** `TASK_ID`, acceptance criteria sources, and the task protocol files.11- **Output:** `verification.md`, evidence artifacts, verification verdict, and recommended next status/follow-up bugs when criteria fail.1213## Goal14Independent-ish verification so we don’t “trust without verify”.1516This is **not** the adversarial semantic pass.17If a task may satisfy AC/REQ while still being wrong in substance, follow with `/red-verify` / `mb-red-verify`.1819## Status Transition Modes2021Status transitions have two modes.2223Scheduler mode:24- `/autopilot` and `/autonomous` own task status transitions.25- Scheduler decides closure/failure/blocking eligibility.26- `/execute` returns scoped implementation handoff; it does not close tasks.27- `/verify` gives functional verdict/evidence; in scheduler mode it does not close/fail/block/promote.28- `/red-verify` gives semantic verdict for T2/T3; in scheduler mode it does not close/fail/block/promote.29- `/mb-sync` records/reconciles state after the scheduler-provided closure/failure/blocking decision. It does not decide closure itself.30- T0/T1 scheduler closure may use compact evidence / functional PASS according to tier policy.31- T2/T3 scheduler closure requires `VERDICT: PASS` plus `SEMANTIC_VERDICT: semantic-pass` before scheduler marks `done`.32- T3 scheduler closure also requires exact markers `HUMAN_CHECKPOINT: done` and `ROLLBACK_RECOVERY_NOTE: present`.3334Manual mode:35- Expected T0/T1 simple flow: `/execute -> /verify`.36- Manual closure is allowed only when an explicit closure owner exists.37- T0/T1 may be marked `done` after functional `VERDICT: PASS` and completed evidence.38- T2/T3 must not treat `/verify PASS` alone as final `done`; run `/red-verify` and require `SEMANTIC_VERDICT: semantic-pass` before final closure/`/mb-sync`.39- If required T2/T3 `/red-verify` returns anything other than `semantic-pass`, leave closure pending or blocked, not done; optional T0/T1 red-verify does not make their normal verify-based closure stricter.40- `semantic-concern` in manual mode means do not trust the existing `done` state without human review / follow-up.41- Do not mix scheduler mode and manual mode inside one task run.42- No persisted `mode` field is used.4344## Inputs45- `TASK_ID` (e.g. `TASK-123`)46- Authoritative task record via `.memory-bank/tasks/index.json` and `.memory-bank/tasks/<TASK_ID>.task.json`47- Mandatory `tier: T0|T1|T2|T3` in that task record48- Links to acceptance criteria:49 - `.memory-bank/features/FT-*` and/or50 - `.memory-bank/requirements.md` (REQ IDs)51- Link to protocol plan: `.protocols/<TASK_ID>/plan.md`5253If present, also use:54- linked authoritative SDD specs for any tier55- `verification_targets`56- `normative_inputs`57- `constraints`58- `invariants`59- task record references to source artifacts6061Authoritative SDD spec links are links in task richer fields or linked feature62`spec_design_links` that point to `.memory-bank/spec-index.md`,63`.memory-bank/tech-specs/`, `.memory-bank/architecture/`,64`.memory-bank/contracts/`, `.memory-bank/domains/`, `.memory-bank/states/`,65`.memory-bank/adrs/`, `.memory-bank/testing/`, or `.memory-bank/runbooks/`.6667## Preconditions68- Implementation is done and gates were run (or failures recorded).69- `.memory-bank/tasks/index.json` lists the target task record, and the indexed `.task.json` validates the requested `TASK_ID`.70- Authoritative verification routing is only `task.tier`; the old `risk` / `risk.level` model is invalid.7172## Required outputs73- `T0` / `T1`: verification may be recorded in compact `.protocols/<TASK_ID>/run.md`.74- `T2` / `T3`: update (or create) `.protocols/<TASK_ID>/verification.md` using:75 - `./references/shared-protocols-verification-template.md`76- Store evidence in `.tasks/<TASK_ID>/`:77 - logs, screenshots, videos, reproduction steps78- Add completed evidence entries to the task record `verify` field; `evidence_required` and `verification_targets` remain requirements/targets, not proof by themselves.79- Before any command sets `status: done`, the task record `verify` field must contain completed verification/evidence entries.8081## Status ownership8283- `mb-verify` owns verification evidence and `VERDICT: PASS|FAIL|NEEDS-CLARIFICATION`.84- When invoked by `/autopilot` or `/autonomous`, it must not close the task, set `status: done`, set `status: failed`, block dependents, or promote dependents. It reports a recommended next status to the scheduler.85- In standalone/manual mode, it may mark a `T0` / `T1` task `done` after functional `VERDICT: PASS` only with explicit closure ownership.86- For `T2` / `T3`, `mb-verify` records functional evidence and closure recommendation, but final closure requires `mb-red-verify` semantic-pass first.8788## Process8990### 1) Prime only what you need91Read:92- `.memory-bank/tasks/index.json`93- indexed `.memory-bank/tasks/<TASK_ID>.task.json`94- `.protocols/<TASK_ID>/context.md`95- `.protocols/<TASK_ID>/plan.md`96- `.protocols/<TASK_ID>/progress.md`97- acceptance criteria source docs98- `.memory-bank/spec-index.md` and all linked authoritative SDD specs when the99 task record or linked feature contains SDD spec links, for any tier100101Before verifying, validate the authoritative task record:102- the task is present in `.memory-bank/tasks/index.json`103- the indexed record `id` matches `TASK_ID`104- required fields for verification are present (`status`, `feature`, `reqs`, `depends_on`, `gates`, `verify`)105- `tier` is present; if missing, stop106- for `T2` / `T3`, linked SDD specs are present in task richer fields, feature `spec_design_links`, or `spec-index.md`; if absent, stop and route back to `/spec-improve` or `/spec-auto`107108Do not block `T0` / `T1` only because SDD spec links are absent.109If the authoritative task record is missing or invalid, stop and report the issue instead of verifying from protocol docs alone.110111Priority:1121. linked authoritative SDD specs for any tier, when present1132. explicit `Verification Targets`1143. explicit `Normative Inputs`1154. classic feature acceptance criteria and RTM1165. evidence in `.tasks/<TASK_ID>/`117118Missing richer fields or absent SDD spec links must not block verification of a119classic `T0` / `T1` task.120121### 2) Verify acceptance criteria122For each AC / REQ:123- run the smallest meaningful check124- prefer deterministic checks (tests/CLI) over “looks OK”125- record what you did and link the evidence126127If the task changes UI or browser behavior:128- prefer Playwright / agent-browser / CDP-driven verification129- capture screenshots/videos/traces when useful130- store artifacts in `.tasks/<TASK_ID>/`131- do not use “I clicked around manually” as the main evidence when browser automation is available132133### 3) Verdict134If anything fails:135- set `VERDICT: FAIL`136- create a bug doc in `.memory-bank/bugs/BUG-<short>.md`137- add a follow-up `.task.json` and update `.memory-bank/tasks/index.json` (if needed)138- recommend current task `status: failed`139- in scheduler mode, do not block downstream dependents directly; return that recommendation to the scheduler140141If all pass:142- `VERDICT: PASS`143- add completed verification/evidence entries in `verify`144- apply status by tier:145 - scheduler mode: recommend the scheduler decision; do not close/fail/block/promote146 - manual mode: may set `T0` / `T1` `status: done` after functional `VERDICT: PASS` with explicit closure ownership; for `T2` / `T3`, leave closure pending `/red-verify` `SEMANTIC_VERDICT: semantic-pass`147- in scheduler mode, final `T2` / `T3` closure is eligible only after `/red-verify` / `mb-red-verify` returns `semantic-pass`148149### 4) Sync recommendations150- Record RTM/feature lifecycle recommendations for `/mb-sync`151- Do not independently perform scheduler closure or dependent block/promotion152153## Definition of done154- Verification output exists and is evidence-backed: compact `run.md` for eligible `T0` / `T1`, full `verification.md` for `T2` / `T3`.155- PASS verification has updated RTM/task evidence; `T2` / `T3` tasks are not closed until `/red-verify` / `mb-red-verify` produces `semantic-pass`.156- FAIL tasks have a bug doc and next steps.