chore(openspec): drop 9 superseded proposals + 11 stub archive files
Drop 9 batch proposals that are superseded by the boocode-lift-analysis (boocontext-audit, conductor upgrades, self-healing/verify-gate skills): add-3tier-memory, import-llm-evaluator, import-pregel-engine, plugin-platform, conductor-evolution, code-intelligence-upgrade, dev-workflow, ui-overhaul, agent-reliability. Delete 11 stub archive files (49-66B each, 'Status: Shipped. Archived.' only) that provide zero documentation value over the existing CHANGELOG.md + git tags.
This commit is contained in:
29
openspec/changes/results-page/proposal.md
Normal file
29
openspec/changes/results-page/proposal.md
Normal file
@@ -0,0 +1,29 @@
|
||||
## Why
|
||||
|
||||
Orchestrator flow runs (research, code-review, investigate, architectural-analysis) and arena battles produce rich reports and analysis, but there is no dedicated UI to browse past results. The only way to see completed runs is through the `NewPaneMenu` in the workspace (ephemeral, per-session) or by re-entering a specific run id. Arena battle history is similarly buried — only visible in the pane that opened it during the session.
|
||||
|
||||
The `/analytics` page (token analyzer) and the `/settings` page (themes/providers) are standalone route pages accessible from the sidebar. A results page at `/results` completes this pattern — a permanent, browsable archive of all analysis outputs and arena battles, accessible regardless of session.
|
||||
|
||||
## What Changes
|
||||
|
||||
1. **Nav button**: Add a "Results" nav button to the sidebar, **above the existing Token Analytics button**, linking to a new `/results` route. Uses a `ScrollText` icon from lucide-react.
|
||||
2. **Results page** (`/results`): A new standalone page with two tabs — "Analysis Runs" (orchestrator flow runs) and "Arena Battles" — showing history with status, timing, and summary info. Each tab has its own list with loading/error/empty states.
|
||||
3. **No backend changes**: Both `GET /api/coder/runs?project_id=` and `GET /api/coder/battles?project_id=` already return the needed data with correct schema. The page calls both endpoints independently.
|
||||
4. **Project context**: The page requires a `project_id`. On mount, it loads the first project from the sidebar context, or shows a project selector when none is active.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `results-page`: Standalone route page at `/results` with two tabs — **Analysis Runs** (orchestrator flows: research, code-review, investigate, architectural-analysis, etc.) and **Arena Battles** (battle history). Each tab shows a list with status dot, name/type, band/battle-type, model, timing, and error indicator. Completed runs show a "View Report" action; completed battles show "View Analysis".
|
||||
- `results-nav-button`: Sidebar nav button (above Token Analytics) using `ScrollText` icon from lucide-react, linking to `/results`.
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- *(No existing capabilities have requirement changes — this is net-new.)*
|
||||
|
||||
## Impact
|
||||
|
||||
- **apps/web/src**: New page (`pages/Results.tsx`), new route in App.tsx, new nav button in ProjectSidebar.tsx. No API changes — reuses existing `api.runs.list()` and `api.battles.list()` client methods.
|
||||
- **No server/coder changes**: Both list endpoints already exist with correct schema. No new routes, schemas, or data processing needed.
|
||||
- **No schema changes**: All data is already persisted.
|
||||
27
openspec/changes/results-page/tasks.md
Normal file
27
openspec/changes/results-page/tasks.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Tasks
|
||||
|
||||
## Task 1 — Page component (`pages/Results.tsx`) (600–800 lines)
|
||||
|
||||
1.1 `useFetch` hook (reuse pattern from `Analytics.tsx`) to load runs and battles independently.
|
||||
1.2 Tab bar: "Analysis Runs" | "Arena Battles" — styled as pill tabs below the page header.
|
||||
1.3 **Analysis Runs tab**: calls `api.runs.list(projectId)`, renders a table with columns: Status (dot), Flow Name, Band, Model, Created, Duration, Actions (View Report when completed). Clicking "View Report" opens a detail panel at the bottom showing the report text.
|
||||
1.4 **Arena Battles tab**: calls `api.battles.list(projectId)`, renders a table with columns: Status (dot), Battle Type, Prompt (truncated), Contestants (count), Winner (if decided), Created, Actions (View Analysis when completed). Clicking "View Analysis" opens the analysis text.
|
||||
1.5 Project selector: if no project context, show a simple dropdown to pick from available projects.
|
||||
1.6 Skeleton loading states, error states with retry, and empty states per tab.
|
||||
1.7 Summary strip above the tabs showing: Total Runs, Completed Runs, Total Battles, Completed Battles.
|
||||
|
||||
## Task 2 — Sidebar nav button (`ProjectSidebar.tsx`)
|
||||
|
||||
2.1 Add a "Results" nav button above the existing "Token Analytics" button.
|
||||
2.2 Use `ScrollText` icon from `lucide-react`.
|
||||
2.3 Follow the same `NavLink` pattern as the Token Analytics button.
|
||||
|
||||
## Task 3 — Route registration (`App.tsx`)
|
||||
|
||||
3.1 Import `Results` from `@/pages/Results`.
|
||||
3.2 Add `<Route path="/results" element={<Results />} />` next to the `/analytics` route.
|
||||
|
||||
## Task 4 — Verify
|
||||
|
||||
4.1 `lsp_diagnostics` clean on all changed files.
|
||||
4.2 Build passes: `pnpm -C apps/web build` (type-check + vite build).
|
||||
Reference in New Issue
Block a user