Goal
Add a PR Status panel to the Review page that polls GitHub for live CI check status, review status, and merge state after a PR is created.
Background
The Review page currently creates a PR via POST /api/v2/pr/create and then shows the PR URL. After that, the user must go to GitHub to track CI and reviews. The SHIP phase ends at PR creation — this extends it to PR merge.
Scope
PR Status panel (shown on the Review page when prUrl state is set):
- Appears below the existing PR creation success state
- Polls
GET /api/v2/pr/status?workspace=... every 30 seconds while the Review page is active
- Backend: add
GET /api/v2/pr/status endpoint that calls the GitHub API (using stored GitHub token) for the most recently created PR in the workspace — returns { ci_checks: [...], review_status, merge_state, pr_url, pr_number }
- CI checks section: list each check with name + status badge (pending / running / passed / failed)
- Review status: single badge — Approved / Changes Requested / Pending Review
- Merge state: Open / Merged / Closed badge
- Stop polling when merge_state is Merged or Closed
Acceptance criteria
Goal
Add a PR Status panel to the Review page that polls GitHub for live CI check status, review status, and merge state after a PR is created.
Background
The Review page currently creates a PR via
POST /api/v2/pr/createand then shows the PR URL. After that, the user must go to GitHub to track CI and reviews. The SHIP phase ends at PR creation — this extends it to PR merge.Scope
PR Status panel (shown on the Review page when
prUrlstate is set):GET /api/v2/pr/status?workspace=...every 30 seconds while the Review page is activeGET /api/v2/pr/statusendpoint that calls the GitHub API (using stored GitHub token) for the most recently created PR in the workspace — returns{ ci_checks: [...], review_status, merge_state, pr_url, pr_number }Acceptance criteria
npm testanduv run pytestpass for the new backend endpoint