Part of #303 (EPIC: Unified Tag Taxonomy Completion). Governing: ADR-0025, SPEC unified-tag-taxonomy REQs "Denormalized Entity Tags Table" scenario, "UI Tag Visual Differentiation". Depends on: #308 (backfill wiring), #311 (renumber lands first for clean references).
The taxonomy is currently write-only: entity_tags has zero read call sites, and TypedTagBadge has zero call sites — the fast-filter path and the UI the spec mandates are unimplemented (audit CRITICAL ×2).
Requirements
Acceptance Criteria
- Tag browsing/filtering works against entity_tags for all three entity types
- Show pages render typed badges with spec-correct classes and grouping
Security Checklist
Branch
feature/347-entity-tags-read-path-typedtagbadge
PR Convention
PR title references the story; body ends with Closes #347, references the parent epic and governing artifacts above.
🤖 Posted on behalf of @joestump by Claude.
Part of #303 (EPIC: Unified Tag Taxonomy Completion). Governing: ADR-0025, SPEC unified-tag-taxonomy REQs "Denormalized Entity Tags Table" scenario, "UI Tag Visual Differentiation". Depends on: #308 (backfill wiring), #311 (renumber lands first for clean references).
The taxonomy is currently write-only:
entity_tagshas zero read call sites, andTypedTagBadgehas zero call sites — the fast-filter path and the UI the spec mandates are unimplemented (audit CRITICAL ×2).Requirements
TypedTagBadgeon Artist/Album/Track show pages, replacing the ad-hoc badges with wrong classes (AI tags render badge-secondary; spec MUSTs badge-accent + sparkles; genres badge-neutral vs spec'd badge-primary) (internal/views/artists/show.templ:261-276, albums/show.templ:309, tracks/show.templ:296; component at components/tags.templ:12)TypedTagGroup(currently unused) to group tags by type per the SHOULD (artists/show.templ:263-276)TODO(SPEC-0014): Replace with TypedTagBadge after Tag schema PR #255 mergescomments (PR Tag Schema & Data Model #255 merged long ago)Acceptance Criteria
Security Checklist
Branch
feature/347-entity-tags-read-path-typedtagbadgePR Convention
PR title references the story; body ends with
Closes #347, references the parent epic and governing artifacts above.🤖 Posted on behalf of
@joestumpby Claude.