From 49188d1c8e45cd20221db6493234c5b1f5ad1053 Mon Sep 17 00:00:00 2001 From: Renn F Date: Wed, 17 Jun 2026 02:23:49 +0200 Subject: [PATCH] =?UTF-8?q?feat(external-pr):=20CEO=20decision=20surface?= =?UTF-8?q?=20=E2=80=94=20panel=20PR-review=20queue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The panel half of the PR-review gate. A PrReviewQueue card on the Command Center lists external PRs the org has reviewed and awaiting the CEO's call, each with Supersede / Dismiss / View-on-GitHub. Hidden when empty. - tasksApi.getExternalPrReviews / supersedeExternalPr / dismissExternalPr, typed to the exact backend response shapes (GET /tasks/external-pr-reviews, POST /tasks/{id}/supersede-external-pr, POST .../dismiss-external-pr). - Mock mode returns [] so the queue hides and the actions are unreachable — no mock-masked contract (the #194 trap avoided; verified FE paths/shapes against the real routes + route ordering). --- .../components/dashboard/command-center.tsx | 4 + panel/src/components/dashboard/index.ts | 1 + .../components/dashboard/pr-review-queue.tsx | 249 ++++++++++++++++++ panel/src/lib/api/tasks.ts | 30 +++ 4 files changed, 284 insertions(+) create mode 100644 panel/src/components/dashboard/pr-review-queue.tsx diff --git a/panel/src/components/dashboard/command-center.tsx b/panel/src/components/dashboard/command-center.tsx index f49ebf1d..f63bdfa2 100644 --- a/panel/src/components/dashboard/command-center.tsx +++ b/panel/src/components/dashboard/command-center.tsx @@ -9,6 +9,7 @@ import { ActiveBlockersPanel } from "./active-blockers-panel"; import { RecentActivityFeed } from "./recent-activity-feed"; import { QuickActionsBar } from "./quick-actions-bar"; import { CeoApprovalQueue } from "./ceo-approval-queue"; +import { PrReviewQueue } from "./pr-review-queue"; import { StrategySignalsPanel } from "./strategy-signals-panel"; import type { Activity } from "./activity-item"; import { Button } from "@/components/ui/button"; @@ -77,6 +78,9 @@ export function CommandCenter() { + {/* External-PR review decision queue (hidden when empty) */} + + {/* Metrics, Alerts, and Usage Row */}