diff --git a/doc/design/DECISION-SHEET.md b/doc/design/DECISION-SHEET.md
index ed5e8f88561..41b6751249f 100644
--- a/doc/design/DECISION-SHEET.md
+++ b/doc/design/DECISION-SHEET.md
@@ -39,6 +39,10 @@ Every open question from TOKEN-AUDIT.md §8 + batch logs and COMPONENT-INVENTORY
| C10 | FeatureGate wrapper pattern (3 near-identical gates) | Nice-to-have shared primitive; backlog, not a run | APPROVED — backlog nice-to-have, not a run |
| C11 | Sidebar agents section: hand-rolled rows (own spacing/icon colors, palette-blue liveness dot) instead of `SidebarNavItem`; only section that is collapsible | Run 3 item: unify rows onto `SidebarNavItem`, settle collapsibility policy across sections, liveness dot → canonical status blue. Wholesale shadcn Sidebar adoption REJECTED for now (app already has equivalent machinery incl. icon-rail height trick; highest-regression chrome) — re-evaluate as a dedicated item after Run 3 only if its behaviors (kbd shortcut, persisted state, mobile sheet) are wanted | DONE (Run 3, Jul 7) — agent rows render via `SidebarNavItem` (new additive props: `iconNode`, `active`, `dense`, `trailing`, `liveAccessory`); all live dots (agents + nav rows, rail + expanded) now use `--status-agent-running` (#2563eb, was palette blue-500 #3b82f6 — small hue-darkening delta, per-C11 mandate; "N live" text keeps its palette classes for Run 4). **Collapsibility policy** (superseded Jul 8 by user review): EVERY labeled section (Work, Company, Projects, Agents) is collapsible, default-open, session-scoped state — one affordance everywhere. "See all agents" stays a plain muted Link on purpose (must not adopt active-route highlighting). 48 sidebar vitest assertions pass unchanged. |
+## Decisions-page card anatomy → project chip de-emphasized, eyebrow gains issue title (PAP-313 board round, Jul 14 2026)
+
+Board feedback on the shipped Quiet Ledger cards, two changes in one commit. (1) **The project chip loses its colored tile**: the icon renders bare on the card background in the same `text-muted-foreground` gray as the project name, and icon + name become a single `Link` to the project (`projectUrl`). Judgment call: project color now appears nowhere on the Decisions page — it stays on project-native surfaces (Projects list, project header); this extends the 1a "color is freed up for severity and CTAs" rule to the last colored element on the card. `ProjectTile` itself is untouched — the demotion is scoped to this feed. (2) **The eyebrow shows the related issue's title next to its ID** — mono ID + sans title in one link, title truncated at `--sz-16rem` so a long title can't crowd the recency stamp. Both changes are anatomy-only: no token edits, no new components.
+
## Decisions page → palette classes retired, series closed (PAP-319 / PAP-313 sweep, Jul 14 2026)
The Quiet Ledger series (anatomy 1a·2a·3a·4a·5b) closes with a page-level sweep: **no `sky/violet/rose/amber/orange/green` class remains anywhere on the Decisions page** — its color budget is the 12 shadcn core tokens plus `destructive`, which is reserved for the Critical badge alone (see the PAP-314 entry: red means Critical, never decoration; and the PAP-316 entry: the six-verb CTA vocabulary Approve / Reject / Answer / Review / Open / Restore). Spot-checks confirmed the keyboard-selection ring (`ring-ring`), curtain rows (`bg-muted/30`), and the expanded resolver band (`bg-muted/20` + `border-border/60`) were already token-only. Judgment call: the zero-state's green celebration mark (`bg-green-500/10` circle + `text-green-500` check) moves to `bg-muted` + `text-muted-foreground` — the CheckCircle2 glyph carries the "all clear" meaning by shape, and a page whose only red is an alarm shouldn't keep a green that means nothing is happening. Stories updated as the coverage map in the same commit (dead thumbnail fixtures dropped, `TypeColorsAndDetail` → "Card anatomy & detail", new `KeyboardSelected` ring story); snapshot suite untouched (dormant per this sheet). Flagged, not changed: the expanded resolver embeds the shared `IssueThreadInteractionCard` (violet plan chip et al.), which renders on issue threads too — resolver internals are out of scope per the approved plan, so its palette is that component's decision, not this page's.
diff --git a/ui/src/components/AttentionQueueRow.tsx b/ui/src/components/AttentionQueueRow.tsx
index 0d0b76021a6..3aacd809a79 100644
--- a/ui/src/components/AttentionQueueRow.tsx
+++ b/ui/src/components/AttentionQueueRow.tsx
@@ -23,7 +23,8 @@ import {
severityBadge,
sourceMeta,
} from "../lib/attention";
-import { cn, relativeTime } from "../lib/utils";
+import { getProjectIcon } from "../lib/project-icons";
+import { cn, projectUrl, relativeTime } from "../lib/utils";
import { Button } from "./ui/button";
import { Textarea } from "./ui/textarea";
import {
@@ -37,7 +38,6 @@ import {
DropdownMenuTrigger,
} from "./ui/dropdown-menu";
import { AttentionInteractionResolver } from "./AttentionInteractionResolver";
-import { ProjectTile } from "./ProjectTile";
const HOUR_MS = 60 * 60 * 1000;
const DAY_MS = 24 * HOUR_MS;
@@ -195,10 +195,13 @@ export const AttentionQueueRow = memo(function AttentionQueueRow({
{item.relatedIssue?.identifier && (
e.stopPropagation()}
>
- {item.relatedIssue.identifier}
+ {item.relatedIssue.identifier}
+ {item.relatedIssue.title && (
+ {item.relatedIssue.title}
+ )}
)}
@@ -497,17 +500,25 @@ function compactDecisionSuccessLabel(sourceKind: AttentionItem["sourceKind"], ac
return action === "reject" ? "Confirmation declined" : "Confirmation accepted";
}
-/** Inline project identity keeps useful context without a competing badge. */
+/**
+ * Inline project identity keeps useful context without a competing badge.
+ * The icon renders bare on the card background in the same gray as the name
+ * (no colored tile — the project color stays on project-native surfaces),
+ * and the whole pair links to the project.
+ */
function ProjectMeta({ project }: { project: NonNullable }) {
+ const Icon = getProjectIcon(project.icon);
return (
- e.stopPropagation()}
>
-
+ {project.name}
-
+
);
}