Goal
Add a [Run Gates] button to the PROOF9 page that triggers a gate run and streams live progress back to the browser.
Background
POST /api/v2/proof/run already exists and works. The proof page has no way to call it. The PROVE phase is currently inspection-only — users can see requirements and waive them but cannot produce evidence from the browser.
Scope
- [Run Gates] button in the PROOF9 page header (enabled when a workspace is selected)
- Clicking the button calls
POST /api/v2/proof/run with { full: true }
- Loading / streaming state: gate list appears immediately showing each gate as
pending; poll GET /api/v2/proof/runs/{run_id} every 2 seconds to update individual gate statuses: pending → running → passed / failed
- Final state: on run completion show overall pass/fail banner
- Error state: surface error message with retry button if the request or polling fails
- Button is disabled while a run is in progress (prevent double-submit)
Out of scope
- Evidence artifact display (next issue)
- Run history panel (next issue)
- Triggering from task detail modal
Acceptance criteria
Goal
Add a [Run Gates] button to the PROOF9 page that triggers a gate run and streams live progress back to the browser.
Background
POST /api/v2/proof/runalready exists and works. The proof page has no way to call it. The PROVE phase is currently inspection-only — users can see requirements and waive them but cannot produce evidence from the browser.Scope
POST /api/v2/proof/runwith{ full: true }pending; pollGET /api/v2/proof/runs/{run_id}every 2 seconds to update individual gate statuses:pending → running → passed / failedOut of scope
Acceptance criteria
npm testandnpm run buildpass