---
phase: "20.4"
plan: "05"
subsystem: "gsd-workflow"
tags: ["bugsweeper", "uat", "verification", "workflow", "m-3", "m-9"]
dependency_graph:
  requires: ["20.4-02", "20.4-03"]
  provides: ["bugsweeper_smoke step in verify-phase.md", "uat_checklist step in verify-phase.md", "BUGSWEEPER Coverage section in verification-report.md"]
  affects: ["all future phase verifications touching crates/app/"]
tech_stack:
  added: []
  patterns: ["BUGSWEEPER HTTP smoke test gate", "UAT checklist auto-generation from callbacks"]
key_files:
  created: []
  modified:
    - "$HOME/.ccs/instances/bigscreen/get-shit-done/workflows/verify-phase.md"
    - "$HOME/.ccs/instances/bigscreen/get-shit-done/templates/verification-report.md"
decisions:
  - "bugsweeper_smoke step scoped to phases touching *.rs or *.slint under crates/app/ — doc-only phases record N/A and skip"
  - "uat_checklist step emits UAT-CHECKLIST.md by grepping modified files for window.on_*, invoke_*, and callback declarations"
  - "BUGSWEEPER Coverage section added between Anti-Patterns Found and Human Verification Required in the template"
  - "Missing BUGSWEEPER Coverage section for runtime-touching phases is a gaps_found condition in determine_status"
metrics:
  duration: "~5 min"
  completed: "2026-04-16T09:39:34Z"
  tasks_completed: 2
  files_modified: 2
---

# Phase 20.4 Plan 05: M-3 BUGSWEEPER Gate + M-9 UAT Checklist Generator Summary

**One-liner:** Added mandatory BUGSWEEPER smoke test gate (M-3) and UAT checklist generator (M-9) to the GSD verifier workflow, with scope gate that skips doc-only phases.

## What Was Done

### Task 1: bugsweeper_smoke and uat_checklist steps added to verify-phase.md

Added two new `<step>` blocks to `$HOME/.ccs/instances/bigscreen/get-shit-done/workflows/verify-phase.md`:

**bugsweeper_smoke** (inserted after `behavioral_verification`, before `scan_antipatterns`):
- Scope gate: checks if any `files_modified` matches `*.rs` or `*.slint` under `crates/app/`; if not, records "BUGSWEEPER: N/A — no runtime changes in this phase" and skips
- If runtime files touched: builds with `--features bugsweeper`, launches app, polls `/api/debug/health` up to 15 seconds, runs smoke endpoints (`/api/cards`, `/api/debug/app-config`, `/api/debug/discovery-state`), optionally tests callbacks, kills app, records results in `### BUGSWEEPER Coverage` subsection of VERIFICATION.md
- Preserves existing CLAUDE.md session rule and self-healing rule verbatim

**uat_checklist** (inserted after `identify_human_verification`, before `determine_status`):
- Greps modified `.rs` and `.slint` files for `window.on_*`, `.invoke_*`, and `callback` patterns
- Emits `.planning/phases/<phase_dir>/UAT-CHECKLIST.md` with sections for Callbacks Modified, Sync Entry Points Touched, Modal State Changes, Visual Regressions
- Falls back to visual-regression-only checklist if no callbacks/sync/modals modified

Also updated `determine_status` condition 1 to include "BUGSWEEPER Coverage section is missing for a runtime-touching phase" as a `gaps_found` trigger.

Also updated `success_criteria` with two new items:
- `[ ] BUGSWEEPER smoke test run (if phase touches runtime code)`
- `[ ] UAT-CHECKLIST.md generated from modified callbacks`

### Task 2: BUGSWEEPER Coverage section added to verification-report.md

Added `## BUGSWEEPER Coverage` section to the File Template in `$HOME/.ccs/instances/bigscreen/get-shit-done/templates/verification-report.md`, inserted between `## Anti-Patterns Found` and `## Human Verification Required`. Section includes:
- N/A annotation for doc-only phases
- Endpoint result table for runtime phases (`/api/debug/health`, `/api/cards`, `/api/debug/app-config`, `/api/debug/discovery-state`, plus additional endpoints)
- BUGSWEEPER build status and smoke test count

Added `**BUGSWEEPER coverage:**` bullet to the Guidelines section documenting when the section is required, when N/A applies, and that missing section = `gaps_found` for runtime phases.

## Deviations from Plan

None — plan executed exactly as written.

## Known Stubs

None — these are workflow template edits, not runtime code.

## Threat Flags

None — edits are to local GSD workflow templates with no trust boundaries.

## Self-Check

- [x] verify-phase.md contains `bugsweeper_smoke` step
- [x] verify-phase.md contains `uat_checklist` step
- [x] verify-phase.md contains `BUGSWEEPER Coverage` string
- [x] verify-phase.md contains `UAT-CHECKLIST` string
- [x] verify-phase.md contains scope gate for `*.rs` / `*.slint`
- [x] verify-phase.md success_criteria contains `BUGSWEEPER smoke test`
- [x] verify-phase.md success_criteria contains `UAT-CHECKLIST.md`
- [x] verification-report.md contains `## BUGSWEEPER Coverage` header
- [x] verification-report.md contains endpoint table with all four core endpoints
- [x] verification-report.md contains N/A annotation for doc-only phases
- [x] verification-report.md Guidelines section contains `BUGSWEEPER coverage` bullet

## Self-Check: PASSED
