`/summary with ARIA disclosure; content = plain streamed text (no markdown dep) |
+| `Tool` | `ui/tool-item.tsx` | collapsible tool block: header (name + status badge) / input / output sections | status enum mapped from canonical item/turn events, not AI SDK `ToolUIPart` states; payloads render in `` |
+
+**REJECT (with reasons; revisit in Phase 5 where noted):**
+
+| Primitive | Reason |
+|---|---|
+| `Response` (streamed markdown) | pulls `streamdown`/markdown pipeline; tracer renders exact text — markdown prettification can hide protocol truth. Phase 5 candidate for the SDK console. |
+| `CodeBlock` | needs `shiki` highlighting dep; `` + mono token suffices for a tracer. Phase 5 candidate. |
+| `Actions` (retry/like/copy row) | retry/regenerate/vote have no protocol backing; copy-to-clipboard is implemented locally in the inspector. |
+| `Branch` | message branching does not exist in the PRP session model. |
+| `Sources` / `InlineCitation` | no citation events in the protocol. |
+| `Task` | overlapping with adapted `Tool`; subagent lineage uses the tree (map §6), not a task widget. |
+| `ChainOfThought` | duplicate of `Reasoning` at higher visual weight. |
+| `Context` (token/cost meter) | usage belongs in the inspector Session tab as plain data; a persistent meter overweights cost in a tracer. Phase 5 candidate. |
+| `Artifact`, `WebPreview`, `Image`, `Attachments`, `OpenIn`, `Suggestion`, `Queue` | no protocol counterpart in Phase 4b; adopting them would invent affordances the runner cannot honor (fabricated-controls rule). |
+| `Loader`/`Shimmer` | trivially replaced by a token-compliant CSS pulse honoring `prefers-reduced-motion`. |
+
+## 4. shadcn/ui — decisions per primitive
+
+**ADAPT (6):**
+
+| Primitive | Adapted as | Implementation note |
+|---|---|---|
+| `Tabs` | `ui/tabs.tsx` | inspector tabs + mobile segments; WAI-ARIA tabs pattern, roving tabindex, no radix |
+| `DropdownMenu` (menu-button subset) | `ui/menu.tsx` | Goal menu (§5) — five fixed items; menu-button ARIA pattern; no radix portal |
+| `Dialog` | `ui/dialog.tsx` | native `