/** * SetupTab/CortexBlockersCard.tsx — open hard-gate blockers card (VC9C + ENC-0e). * * Renders the STATUS payload's `blockers` rows (id, title, severity, status, * resolution). When an action returns 423 action_blocked_by_open_item, the * matching blocker rows are highlighted so the user sees exactly which open * item(s) gate the action they tried. * * ENC-0e: when the payload carries `darwinX64:{demoted:true,reason}`, an * explicitly-diagnosed row is rendered so an Intel-Mac operator sees exactly why * mode A is unreachable. Unaffected (renders nothing) when absent or not demoted. */ import type React from "react"; import type { BlockerV1 } from "../../types/setup-cortex"; import { styles } from "./CortexSetupStyles"; function severityColor(severity: BlockerV1["severity"]): string { switch (severity) { case "blocker": return "#f44336"; case "high": return "#ff9800"; default: return "#a0a0c0"; } } export function CortexBlockersCard({ blockers, highlight, darwinX64, }: { blockers: BlockerV1[]; highlight?: string[]; darwinX64?: { demoted: boolean; reason?: string }; }): React.ReactElement { const highlighted = highlight ?? []; return (
No open hard-gate blockers.
)} {darwinX64?.demoted === true && (