You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(web-ui): Glitch Capture REQ detail view and sidebar entry (#569)
## Summary
- Backend: expose `scope` field in `RequirementResponse` via `ScopeOut` Pydantic model
- Frontend types: add `ProofScope` interface, `scope` field on `ProofRequirement`
- REQ detail page (`/proof/[req_id]`): markdown description rendering, "Where found" from scope, obligations table with Latest Run column (deriving status from `latestRunByGate`), run drill-down via `focusRun()`, empty-state CTA to /review
- Sidebar: "Capture Glitch" button with aria accessibility, opens `CaptureGlitchModal`, navigates to new REQ on success
- 21 new tests across 3 test files; 728 total passing
## Validation
- Review feedback: All addressed (3 rounds, 6 issues fixed)
- Demo: All acceptance criteria verified
- Tests: 728 passing
- CI: All checks green
- Linting: Clean
Closes#569
**Status: CLI ✅ | Server ✅ | ReAct agent ✅ | Web UI ✅ | Agent adapters ✅ | Multi-provider LLM ✅ | Next: Phase 3.5C** — See `docs/PRODUCT_ROADMAP.md`.
21
+
**Status: CLI ✅ | Server ✅ | ReAct agent ✅ | Web UI ✅ | Agent adapters ✅ | Multi-provider LLM ✅ | Next: Phase 4A** — See `docs/PRODUCT_ROADMAP.md`.
22
22
23
23
If you are an agent working in this repo: **do not improvise architecture**. Follow the documents listed below.
24
24
@@ -34,12 +34,11 @@ If you are an agent working in this repo: **do not improvise architecture**. Fol
34
34
35
35
**Rule 0:** If a change does not directly support the Think → Build → Prove → Ship pipeline, do not implement it.
36
36
37
-
### Current Focus: Phase 3.5C
37
+
### Current Focus: Phase 4A
38
38
39
-
**Phase 3.5B is complete** — `[Run Gates]` button, live gate progress, per-gate evidence display (`GateEvidencePanel`), and run history panel (`RunHistoryPanel`) are all shipped. New backend endpoints: `GET /api/v2/proof/runs`and `GET /api/v2/proof/runs/{run_id}/evidence`.
39
+
**Phase 3.5C is complete** — `CaptureGlitchModal` form (description/markdown, source, scope, gate obligations, severity, expiry) reachable from the PROOF9 page and the persistent sidebar "Capture Glitch" button. REQ detail view (`/proof/[req_id]`) ships markdown description rendering, `ProofScope` metadata display, obligations table with `Latest Run` column, sortable/filterable evidence history, and empty-state CTA. Backend: `ScopeOut` model on `RequirementResponse`. Issues #568, #569.
Copy file name to clipboardExpand all lines: docs/PHASE_3_UI_ARCHITECTURE.md
+19-4Lines changed: 19 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -134,6 +134,10 @@ Persistent left sidebar with icon + label navigation:
134
134
4.**Execution** (play/monitor icon) - only visible when runs are active
135
135
5.**Blockers** (alert icon) - badge count for open blockers
136
136
6.**Review** (git branch icon)
137
+
7.**PROOF9** (checkmark icon)
138
+
8.**Sessions** (command-line icon) - badge count for active sessions
139
+
140
+
**Sidebar action button**: A **"Capture Glitch"** button (Add01Icon) is always visible at the bottom of the sidebar. Clicking it opens `CaptureGlitchModal` without navigating away from the current page. This is the primary entry point for the glitch capture closed loop from anywhere in the app.
137
141
138
142
### Secondary Navigation
139
143
-**Workspace breadcrumb** at top: shows current repo path, links to workspace root
@@ -367,10 +371,21 @@ ProofPage (/proof)
367
371
└── (click → loads GateEvidencePanel for that run)
**Current state**: The CLI has `cf proof capture` for converting a production glitch into a permanent PROOF9 requirement. The proof page has a glitch_type *filter* for reading existing requirements but no capture form (verified 2026-04-06).
41
+
Fully shipped: `CaptureGlitchModal` form reachable from the PROOF9 page header and the sidebar "Capture Glitch" button. Form collects description (markdown), source (production/QA/dogfooding/monitoring), scope (files/routes/components, stored as `ScopeOut` on the backend and `ProofScope` in the frontend types), gate obligations (multi-select), severity, and optional expiry. On submit, creates a new REQ in the requirements ledger immediately.
42
42
43
-
**What to build**:
44
-
45
-
- A **"Capture Glitch"** entry point reachable from the PROOF9 page and the sidebar
46
-
- A structured form collecting:
47
-
- Description of the failure (free text, supports markdown)
48
-
- Where it was found (production / QA / dogfooding / monitoring)
49
-
- Scope selector: which files, routes, or components are affected
50
-
- Which PROOF9 gates should be required as proof obligations (multi-select)
51
-
- Severity and optional expiry (for time-bounded obligations)
52
-
- On submit: creates a new REQ in the requirements ledger, associates obligations, and shows the new requirement in the PROOF9 table immediately
53
-
- A **REQ detail view** that shows the glitch description, its obligations, and the evidence history across all gate runs
54
-
55
-
**Why it matters for the vision**: The glitch capture closed loop — *Ship → Discover glitch → Capture → Enforce forever → Ship with higher confidence* — is described as "the defining feature of the system." Without a web UI for capture, this loop requires CLI access and will be skipped by most users. This is the most differentiated feature in CodeFRAME and it is currently invisible to web users.
43
+
REQ detail view (`/proof/[req_id]`): markdown-rendered description, scope metadata display, obligations table with a `Latest Run` column showing pass/fail per gate from the most recent run, sortable/filterable evidence history, and a "Capture Glitch" empty-state CTA when no evidence exists yet.
56
44
57
45
---
58
46
@@ -201,7 +189,7 @@ These are items that were considered and excluded because they do not serve the
0 commit comments