The same task state rendered different status icons across views. A blocked
task covered by an active sub-task ("in queue") showed the blue queued glyph
in the task header and status trigger, but the status menu's current row, the
chat chip and the coordinator sidebar recents/project rows showed the red
blocked glyph, because those surfaces dropped blockerAttention (and some
dropped externalConversationState) before calling StatusIcon.
- Add ui/src/lib/task-status-presentation.ts: one resolver for glyph, label
and accessible copy, plus taskStatusIconProps() so call sites pass every
presentation field from a task record.
- StatusIcon and IssueStatusBadge use the resolver; the picker draws the
current row with the trigger's presentation.
- Task call sites (sidebar, lists, inbox, properties, pills, search, chat
chips, status cards) spread taskStatusIconProps.
- /issues/summaries returns blockerAttention for blocked rows; recent-task
snapshots store and refresh it; sidebar project rows use the rows projection.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>