# Build verification review skill Use **after** an Auto build phase (`{step}b`) claims deliverables are complete — **before** marking the phase **DONE** in `{{docs.roadmap_path}}`. Invoke: **`/build-verification-review`**. **Mandatory** in every overseer install: `.cursor/rules/build-verification-required.mdc` (alwaysApply). Agents must not mark DONE until this skill returns **`pass`**. This is the **honesty gate**: verify the implementation actually matches the frozen spec — not merely that tests are green or the agent said "done." ## Purpose Catch agent dishonesty: false completion claims, made-up behavior, tests that do not exercise real paths, docs/marketing that overstate what shipped, and scope drift from the frozen contract. **This did not get lost** — it was always the intent of SD-3 (`Thinking → Auto`). The kit shipped: | Gate | When | Tool today | | --- | --- | --- | | **Freeze review** | Before Auto build (`{step}a`) | `freeze-review` / `freeze-review-loop` + `ok review --freeze` | | **Build verification** | After Auto build (`{step}b`) | **This skill** (thinking model; manual/opt-in) | | **Mechanical proof** | During/after build | Seven-tier tests (`policy/test-tiers.yaml`) | Tests prove code runs; **this skill** proves the code matches the **frozen spec** and the agent was honest about what landed. ## When to use - Auto phase `{step}b` complete; tests reported green - Before ROADMAP row → **DONE** - Before Tier-3 merge to `{{vcs.git.main_branch}}` - Especially: video pipelines, billing, user-facing outputs — anywhere agents previously "approved" falsely ## Model Always `thinking-high`. When `honesty.require_independent_second_reviewer` is `warn` or `require`, this review **must** run in a second chat or separate verifier runtime — not the session that built. A builder-session BV `pass` does not unlock DONE. When the flag is `off`, prefer a second session but do not fail the kit gate (process honesty only). ## Inputs (read all) 1. Frozen spec artifact (`frozen: true` from `{step}a`) — ground truth 2. `{{docs.roadmap_path}}` — phase deliverable row 3. `{{docs.handover_path}}` — what the build session claims landed 4. **Git diff** vs feature-branch base (or `muse`/`git` log for the build commits) 5. Test files — do they assert real behavior or tautologies? 6. `ok status` — footprint/drift if kit files touched ## Verification checklist (every item needs evidence) | # | Check | Dishonesty signal | | --- | --- | --- | | V1 | Every frozen deliverable exists at the path the spec names | "Implemented" but file missing or stub | | V2 | Public APIs match frozen interfaces (signatures, exit codes, fail-closed branches) | Spec says X; code does Y | | V3 | Tests cover frozen test-matrix rows — not only happy path | `assert True`, empty tests, mock-only | | V4 | No scope creep beyond frozen spec | Extra features not in contract | | V5 | No silent deletion of frozen requirements | Spec requirement removed without spec update | | V6 | Governance docs truthful | ROADMAP/HANDOVER say DONE but tests fail or deliverables missing | | V7 | No secrets, injection surfaces, or unsafe defaults introduced | grep + read changed paths | | V8 | Agent claims match verifiable state **and** (when `honesty.enabled`) are bound to ledger `verification_evidence` artifacts | "All green" with empty/unrelated diff; "tests passed" with no `test_output` hash; "deployed" / "healthy" with no `deploy_health` ref+hash; "UI verified" with no `screenshot` hash — or a claimed `pass` with no matching ledger entry when `require_verification_evidence: require` | | V9 | When ISR is `warn` or `require`, ROADMAP/HANDOVER may claim **DONE** only after a matching `independent_second_review` pass exists for this Auto slice with `actor_session_id` ≠ `producer_session_id` | Builder chat wrote DONE; no ISR ledger line; equal session ids | **Evidence table (required in skill output whenever honesty module is enabled, and recommended always):** ```markdown ### Evidence | type | sha256 | ref | notes | | --- | --- | --- | --- | | test_output | <64 hex> |