Estimate: 30m · Type: code
When an archived work item's detail page is viewed, show an "Archived" banner (with a Restore action) so the archived state is legible — today the detail page renders an archived item with no indication it's archived.
/issues/[key] already loads archived items — getIssueDetail → workItemRepository.findByIdentifier does NOT filter archivedAt, so the page renders; it just lacks any archived signal. No read change needed.design/work-items/design-notes.md ~L826; app/(authed)/issues/[key]/page.tsx ~L317) — when item.archivedAt != null. Content: an "Archived" treatment reusing the archived-mark / muted vocabulary + a status chip in the BuildingInPublicBadge mold (components/projects/BuildingInPublicBadge.tsx), the when/who archived (from the archived revision), and a Restore action.unarchiveWorkItem (components/issues/actions/workItemActionsClient.ts → DELETE /api/work-items/[id]/archive, gated canEdit). Do NOT add a new path.router.refresh() / refetch so the banner clears and the item rejoins active views. Wait on the unarchive 200.Design: reuse the shipped detail-page banner PLACEMENT/treatment + the archived-mark vocabulary + the badge-chip pattern — match them, no new primitive. (If a bespoke archived-banner visual is later wanted, that's a small design pass.)
canEdit), clears the banner, returns the item to active views (waits on the 200).app/(authed)/issues/[key]/page.tsx (detail page; ~L317 readiness-banner placement), app/(authed)/issues/[key]/_components/WorkItemDetailActions.tsxlib/repositories/workItemRepository.ts findByIdentifier (no archivedAt filter — archived items reachable), workItemsService.getIssueDetailcomponents/issues/actions/workItemActionsClient.ts unarchiveWorkItem; components/projects/BuildingInPublicBadge.tsx (chip pattern)design/work-items/design-notes.md (readiness banner placement); motir-core/CLAUDE.md § "Page state after a mutation"