mb-red-verify — Adversarial semantic verification
- What it does: pressure-tests one completed
TASK-* for semantic correctness, hidden failure modes, and systemic harm.
- Use it when: a task may be locally correct yet still wrong in product/domain/architectural/operational reality.
- Input:
TASK_ID, task intent, actual change surface, tests/evidence, and only then relevant spec reconciliation.
- Output:
red-verification.md, a concise semantic-risk report, and follow-up bugs/tasks when concerns are serious.
Goal
Catch changes that are "disciplined but wrong":
- pass acceptance criteria but solve the wrong problem
- work locally but damage system integrity
- overfit to the task record and ignore neighboring constraints
- introduce architectural drift, state inconsistency, or hidden maintenance cost
- create false confidence because the evidence surface is too narrow
This is intentionally different from existing commands
mb-verify checks acceptance criteria and evidence-backed task completion.
mb-review reviews Memory Bank quality, planning, and discipline in fresh context.
mb-red-verify asks: "Is this solution actually right in substance?"
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.
- Scheduler must write the closure/failure/blocking decision, final task status, and evidence links to the authoritative indexed
.memory-bank/tasks/TASK-*.task.json record before /mb-sync.
/mb-sync records/reconciles already-written task state. It does not decide closure/failure/blocking/promotion and must not sync a decision that exists only in scheduler context.
- 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 for one TASK.
- Manual closure is allowed only when an explicit closure owner exists.
explicit standalone owner means either the user directly asked the current top-level agent to close the task, or the top-level agent/orchestrator explicitly runs a manual workflow for one TASK and records that it owns closure. Subagents/worker prompts do not silently become closure owners.
/verify PASS may mark T0 / T1 status: done only when explicit closure ownership is present and completed evidence has been written to the task record verify field and the compact/full protocol required by tier.
- If explicit closure owner is absent,
/verify records VERDICT: PASS, evidence, and a closure recommendation, leaves status unchanged, and tells the scheduler/owner to close.
T2 / T3 manual closure requires /verify PASS plus /red-verify / mb-red-verify SEMANTIC_VERDICT: semantic-pass before status: done or /mb-sync; if semantic-pass is absent, leave closure pending or blocked, not done.
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.
Preconditions
- Implementation exists.
- Quality gates were already run (or failures were recorded).
- For non-trivial tasks,
mb-verify should usually run first.
- The indexed task record contains
tier. Authoritative red-verification routing is only task.tier; the old risk / risk.level model is invalid.
- 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.
- In scheduler mode,
T2 / T3 require this pass before scheduler marks done.
- In manual mode, this pass is required for
T2 / T3 after mb-verify PASS and before final closure//mb-sync; T0 / T1 usually skip it unless their real scope grew beyond the recorded tier.
T0 / T1 usually skip it unless scope has grown and the tier is updated first.
Required outputs
Create or update:
.protocols/<TASK_ID>/red-verification.md
Store a concise report in:
.tasks/<TASK_ID>/<TASK_ID>-S-RED-VERIFY-final-report-docs-01.md
If concerns are material:
.memory-bank/bugs/BUG-<short>.md
- follow-up
.task.json records indexed in .memory-bank/tasks/index.json
- recommended task/dependent status for the active scheduler or explicit standalone owner
Use:
./references/shared-protocols-red-verification-template.md
./agents/red-verifier.md
Input priority
Do not start by over-trusting the same full spec context the implementer used.
Prime in this order:
- task intent and expected real-world outcome
- actual code changes / diff / touched runtime behavior
- tests, logs, screenshots, traces, and other evidence
- linked SDD specs and neighboring constraints (
contracts/*, states/*, domains/*, runbooks/*, invariants)
- broader spec reconciliation
This keeps the verifier from merely confirming the workflow surface.
When to use it
Use mb-red-verify when:
task.tier is T2 or T3
- contracts, states, migrations, or data behavior changed
- the task crosses boundaries between modules/features
- runtime or API behavior changed
- business rules or domain semantics matter heavily
- acceptance criteria can be satisfied in a narrow but misleading way
- the change is risky, architectural, or likely to create hidden future cost
When not to use it
Usually skip it for:
- typo-only edits
- formatting-only changes
- isolated mechanical refactors with no behavioral impact
Process
1) Start from task intent and reality, not paperwork
Read only what you need:
.protocols/<TASK_ID>/plan.md
.protocols/<TASK_ID>/progress.md
.protocols/<TASK_ID>/verification.md if it exists
- linked task record, feature, and requirement docs for intent
- the real diff / changed files / tests / runtime artifacts
2) Build a hostile hypothesis list
Challenge the solution from multiple angles:
- wrong problem solved
- local optimization with systemic harm
- hidden assumptions
- cross-boundary regression risk
- architectural drift
- state/data inconsistency
- operational weakness
- future maintenance burden
3) Reconcile with specs only after forming independent concerns
Then inspect the smallest sufficient spec subset:
.memory-bank/spec-index.md and linked SDD specs for T2 / T3
- relevant
contracts/*
domains/*
states/*
runbooks/*
requirements.md
invariants.md
- related feature/epic docs
If code and specs disagree, record the drift explicitly rather than silently choosing one side.
4) Produce a hard-to-game report
The output must be concise and high-signal. Include:
- semantic verdict
- top substance risks
- hidden assumptions
- cross-boundary impact
- architectural concerns
- state/data consistency concerns
- operational concerns
- future maintenance cost
- how the change could still be wrong
- counterproposal or escalation path
For T3, also cover critical/security/runtime/recovery concerns and confirm exact marker lines HUMAN_CHECKPOINT: done and ROLLBACK_RECOVERY_NOTE: present are present before closure.
5) Take action from the verdict
semantic-pass: no substantive concerns found; scheduler closure-eligible when mb-verify also has PASS; manual T2 / T3 closure is eligible when mb-verify also has PASS
semantic-concern: not proven wrong, but blocked or human-review-required; in manual mode, do not trust existing done without human review / follow-up
semantic-fail: substantively wrong, systemically harmful, or too risky to accept; recommend or apply task status: failed according to active workflow ownership and explicit closure ownership
When invoked by /autopilot or /autonomous, mb-red-verify must not independently close the task, write done, write failed, block dependents, or promote dependents. It writes the semantic verdict and returns the recommended status/dependent action to the scheduler.
For semantic-concern, recommend blocking task/dependents, reopening from done, or leaving the task pending human review. If human review accepts the concern, record owner/reason and repeat mb-red-verify; scheduler normal done requires semantic-pass.
For semantic-fail, file or recommend a bug, recommend follow-up tasks, recommend or apply status: failed according to active workflow ownership and explicit closure ownership, and stop downstream progression through the scheduler/explicit standalone owner.
Definition of done
red-verification.md exists and is substance-focused.
- The report is concise, skeptical, and not just a rephrased
/verify.
- Serious concerns result in explicit bugs/tasks/escalation.
1---2name: mb-red-verify3description: Adversarial semantic verification for one TASK-* so teams can catch solutions that pass process checks but are still wrong in substance.4---56# mb-red-verify — Adversarial semantic verification78- **What it does:** pressure-tests one completed `TASK-*` for semantic correctness, hidden failure modes, and systemic harm.9- **Use it when:** a task may be locally correct yet still wrong in product/domain/architectural/operational reality.10- **Input:** `TASK_ID`, task intent, actual change surface, tests/evidence, and only then relevant spec reconciliation.11- **Output:** `red-verification.md`, a concise semantic-risk report, and follow-up bugs/tasks when concerns are serious.1213## Goal14Catch changes that are "disciplined but wrong":15- pass acceptance criteria but solve the wrong problem16- work locally but damage system integrity17- overfit to the task record and ignore neighboring constraints18- introduce architectural drift, state inconsistency, or hidden maintenance cost19- create false confidence because the evidence surface is too narrow2021## This is intentionally different from existing commands22- `mb-verify` checks acceptance criteria and evidence-backed task completion.23- `mb-review` reviews Memory Bank quality, planning, and discipline in fresh context.24- `mb-red-verify` asks: "Is this solution actually right in substance?"2526## Status Transition Modes2728Status transitions have two modes.2930Scheduler mode:31- `/autopilot` and `/autonomous` own task status transitions.32- Scheduler decides closure/failure/blocking eligibility.33- `/execute` returns scoped implementation handoff; it does not close tasks.34- `/verify` gives functional verdict/evidence; in scheduler mode it does not close/fail/block/promote.35- `/red-verify` gives semantic verdict for T2/T3; in scheduler mode it does not close/fail/block/promote.36- Scheduler must write the closure/failure/blocking decision, final task status, and evidence links to the authoritative indexed `.memory-bank/tasks/TASK-*.task.json` record before `/mb-sync`.37- `/mb-sync` records/reconciles already-written task state. It does not decide closure/failure/blocking/promotion and must not sync a decision that exists only in scheduler context.38- T0/T1 scheduler closure may use compact evidence / functional PASS according to tier policy.39- T2/T3 scheduler closure requires `VERDICT: PASS` plus `SEMANTIC_VERDICT: semantic-pass` before scheduler marks `done`.40- T3 scheduler closure also requires exact markers `HUMAN_CHECKPOINT: done` and `ROLLBACK_RECOVERY_NOTE: present`.4142Manual mode:43- Expected T0/T1 simple flow: `/execute -> /verify` for one TASK.44- Manual closure is allowed only when an explicit closure owner exists.45- `explicit standalone owner` means either the user directly asked the current top-level agent to close the task, or the top-level agent/orchestrator explicitly runs a manual workflow for one TASK and records that it owns closure. Subagents/worker prompts do not silently become closure owners.46- `/verify PASS` may mark `T0` / `T1` `status: done` only when explicit closure ownership is present and completed evidence has been written to the task record `verify` field and the compact/full protocol required by tier.47- If explicit closure owner is absent, `/verify` records `VERDICT: PASS`, evidence, and a closure recommendation, leaves `status` unchanged, and tells the scheduler/owner to close.48- `T2` / `T3` manual closure requires `/verify PASS` plus `/red-verify` / `mb-red-verify` `SEMANTIC_VERDICT: semantic-pass` before `status: done` or `/mb-sync`; if semantic-pass is absent, leave closure pending or blocked, not done.49- `semantic-concern` in manual mode means do not trust the existing `done` state without human review / follow-up.50- Do not mix scheduler mode and manual mode inside one task run.51- No persisted `mode` field is used.5253## Preconditions54- Implementation exists.55- Quality gates were already run (or failures were recorded).56- For non-trivial tasks, `mb-verify` should usually run first.57- The indexed task record contains `tier`. Authoritative red-verification routing is only `task.tier`; the old `risk` / `risk.level` model is invalid.58- 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`.59- In scheduler mode, `T2` / `T3` require this pass before scheduler marks `done`.60- In manual mode, this pass is required for `T2` / `T3` after `mb-verify PASS` and before final closure/`/mb-sync`; `T0` / `T1` usually skip it unless their real scope grew beyond the recorded tier.61- `T0` / `T1` usually skip it unless scope has grown and the tier is updated first.6263## Required outputs64Create or update:65- `.protocols/<TASK_ID>/red-verification.md`6667Store a concise report in:68- `.tasks/<TASK_ID>/<TASK_ID>-S-RED-VERIFY-final-report-docs-01.md`6970If concerns are material:71- `.memory-bank/bugs/BUG-<short>.md`72- follow-up `.task.json` records indexed in `.memory-bank/tasks/index.json`73- recommended task/dependent status for the active scheduler or explicit standalone owner7475Use:76- `./references/shared-protocols-red-verification-template.md`77- `./agents/red-verifier.md`7879## Input priority80Do **not** start by over-trusting the same full spec context the implementer used.8182Prime in this order:831. task intent and expected real-world outcome842. actual code changes / diff / touched runtime behavior853. tests, logs, screenshots, traces, and other evidence864. linked SDD specs and neighboring constraints (`contracts/*`, `states/*`, `domains/*`, `runbooks/*`, invariants)875. broader spec reconciliation8889This keeps the verifier from merely confirming the workflow surface.9091## When to use it92Use `mb-red-verify` when:93- `task.tier` is `T2` or `T3`94- contracts, states, migrations, or data behavior changed95- the task crosses boundaries between modules/features96- runtime or API behavior changed97- business rules or domain semantics matter heavily98- acceptance criteria can be satisfied in a narrow but misleading way99- the change is risky, architectural, or likely to create hidden future cost100101## When not to use it102Usually skip it for:103- typo-only edits104- formatting-only changes105- isolated mechanical refactors with no behavioral impact106107## Process108109### 1) Start from task intent and reality, not paperwork110Read only what you need:111- `.protocols/<TASK_ID>/plan.md`112- `.protocols/<TASK_ID>/progress.md`113- `.protocols/<TASK_ID>/verification.md` if it exists114- linked task record, feature, and requirement docs for intent115- the real diff / changed files / tests / runtime artifacts116117### 2) Build a hostile hypothesis list118Challenge the solution from multiple angles:119- wrong problem solved120- local optimization with systemic harm121- hidden assumptions122- cross-boundary regression risk123- architectural drift124- state/data inconsistency125- operational weakness126- future maintenance burden127128### 3) Reconcile with specs only after forming independent concerns129Then inspect the smallest sufficient spec subset:130- `.memory-bank/spec-index.md` and linked SDD specs for `T2` / `T3`131- relevant `contracts/*`132- `domains/*`133- `states/*`134- `runbooks/*`135- `requirements.md`136- `invariants.md`137- related feature/epic docs138139If code and specs disagree, record the drift explicitly rather than silently choosing one side.140141### 4) Produce a hard-to-game report142The output must be concise and high-signal. Include:143- semantic verdict144- top substance risks145- hidden assumptions146- cross-boundary impact147- architectural concerns148- state/data consistency concerns149- operational concerns150- future maintenance cost151- how the change could still be wrong152- counterproposal or escalation path153154For `T3`, also cover critical/security/runtime/recovery concerns and confirm exact marker lines `HUMAN_CHECKPOINT: done` and `ROLLBACK_RECOVERY_NOTE: present` are present before closure.155156### 5) Take action from the verdict157- `semantic-pass`: no substantive concerns found; scheduler closure-eligible when `mb-verify` also has `PASS`; manual `T2` / `T3` closure is eligible when `mb-verify` also has `PASS`158- `semantic-concern`: not proven wrong, but blocked or human-review-required; in manual mode, do not trust existing `done` without human review / follow-up159- `semantic-fail`: substantively wrong, systemically harmful, or too risky to accept; recommend or apply task `status: failed` according to active workflow ownership and explicit closure ownership160161When invoked by `/autopilot` or `/autonomous`, `mb-red-verify` must not independently close the task, write `done`, write `failed`, block dependents, or promote dependents. It writes the semantic verdict and returns the recommended status/dependent action to the scheduler.162163For `semantic-concern`, recommend blocking task/dependents, reopening from `done`, or leaving the task pending human review. If human review accepts the concern, record owner/reason and repeat `mb-red-verify`; scheduler normal `done` requires `semantic-pass`.164For `semantic-fail`, file or recommend a bug, recommend follow-up tasks, recommend or apply `status: failed` according to active workflow ownership and explicit closure ownership, and stop downstream progression through the scheduler/explicit standalone owner.165166## Definition of done167- `red-verification.md` exists and is substance-focused.168- The report is concise, skeptical, and not just a rephrased `/verify`.169- Serious concerns result in explicit bugs/tasks/escalation.