Skip to content

[design-qa][P3] Dead and duplicate code carrying the raw literals, aliases and stale tokens #181

Description

@cestercian

Part of the Sep-2026 designer's-eye QA of the 138 "Artistant iOS Light" screens (theme T18, category consistency; epic #161). Full report with evidence and per-screen coverage: docs/DESIGN_QA_2026-09.md; the per-section appendices under docs/design-qa/ carry the code excerpts.

Why it matters. Nine design-system files, a pre-redesign auth screen, seven funnel helpers, three signup helpers, half a dashboard token group, ten type steps, two haptics and an unreachable component gallery have no caller — and they are where most remaining raw dp and compat aliases live.

Fix direction. Delete them and fix the two stale PARITY_CHECKLIST.md rows.

Findings (8: P3 ×8)

  • F-CC-11 (P3) — Dead and duplicate components still compile into the app
    • Screens: —
    • Where: zero callers outside their own file — designsystem/component/ScoreRing.kt (raw 64/6dp, 1.2sp), Sparkline.kt (raw 48/3dp), MiniBars.kt, CardView.kt (border(1.dp, colors.line); its only reference is the unreachable ComponentGallery), ScreenTitleBar.kt, StatusTimeline.kt (six raw dp literals, colors.brand), ArtistTile.kt (raw 192/252dp, Color.White ×3, a twin of Tile.kt), DateScroller.kt; plus ui/auth/AuthScreen.kt (153 lines, M3 TextButton); the signup helpers (F-GS-23) and the funnel helpers (F-BC-20). PARITY_CHECKLIST.md still lists ScoreRing as a shipped primitive.
    • Fix: Delete them and fix the checklist rows.
  • F-GS-23 (P3) — Dead code: AuthScreen.kt, EditorialHeadline.kt, SignupBackButton, SignupInputRow
    • Screens: 12 (legacy)
    • Where: ui/auth/AuthScreen.kt (0 references to AuthScreen(; M3 TextButton at :145, default ModalBottomSheet at :55); feature/signup/EditorialHeadline.kt:19-20 (0 call sites); feature/signup/SignupChrome.kt:420 SignupBackButton; SignupInputRow (its KDoc's "six wizard call sites" no longer exist)
    • Fix: Delete ui/auth/AuthScreen.kt, EditorialHeadline.kt, SignupBackButton and SignupInputRow.
  • F-DS-13 (P3) — ArtistTile.kt is dead and carries the section's raw dp, compat type steps and Color.White
    • Screens: (component; none)
    • Where: designsystem/component/ArtistTile.kt:51-52 (192.dp / 252.dp), :65 (radii.md, not the tile's 18), :116 (type.headline), :127 (type.footnote), :117, :155, :243 (Color.White); no call site anywhere in the app (only a comment in Dimens.kt)
    • Fix: Delete ArtistTile.kt and the gridTileHeight token.
  • F-AP-25 (P3) — ScoreRing.kt is dead code carrying the section's only raw literals
    • Screens: (none — component)
    • Where: designsystem/component/ScoreRing.kt:38-39, :118, :131, :134
    • Fix: delete ScoreRing.kt (or promote ScoreDonut into it on tokens and use one ring on 50 and 99).
  • F-BC-20 (P3) — BookingChrome.kt carries seven dead composables (13 of its 16 compat aliases live in them); StatusTimeline is drawn by no screen
    • Screens: 05, 06, 17 (the live alias users)
    • Where: feature/booking/BookingChrome.kt:84 CircleIconButton, :132 FunnelHeader (type.headline :143), :544 SectionLabel (uppercases the sans caption, :546-547), :563 FunnelCta (a capsule CTA at ctaTall 52 with ctaLabel/brand/bgSoft), PackageOptionRow, PopularBadge, AvailabilityLegend
    • Fix: Delete the seven composables; CtaCaption and the two counters → AppTheme.type.caption.
  • F-AS-16 (P3) — Two dimension groups describe one dashboard, and half of one is dead
    • Screens: 09, 85, 86, 133
    • Where: designsystem/theme/Dimens.kt:518 dayCellW 42, :519 dayCellH 50, :526 scoreRing 86, barsWidth 86 / barsHeight 32 (no call sites anywhere) vs :337 component.stripCellH 44 and :339 component.barChart 78, which the studio actually draws with
    • Fix: delete dayCellW/dayCellH/scoreRing/barsWidth/barsHeight (and the three dead components), or move stripCellH/barChart into Dashboard so one group owns the data display.
  • F-DSYS-18 (P3) — Dead surface: an unreachable gallery, 10 unused type steps, 2 unused haptics, 1 unused token
    • Screens: —
    • Where: designsystem/component/ComponentGallery.kt:38; theme/Type.kt:245,284,286,314,339, 343,390,392,394,396; theme/Dimens.kt:481; designsystem/Haptics.kt:95,98; designsystem/component/DateScroller.kt:85,109,116,138
    • Fix: either wire ComponentGallery to a debug-harness route and finish it, or delete it with the nine dead components; drop the ten dead type steps and the two dead haptics in the same sweep.
  • F-PK-17 (P3) — PREVIEW_WIDTH = 350.dp is preview-only (raw-unit sweep false positive)
    • Screens: n/a
    • Where: feature/epk/EpkHub.kt:571,593
    • Fix: @Preview(widthDp = 350) and delete the constant, or leave it — no user impact.

Acceptance

  • Every finding above is closed on the cited lines (or refuted in a comment with the reason).
  • ./gradlew :app:assembleDebug, :app:testDebugUnitTest and :app:lintDevDebug green.
  • PARITY_CHECKLIST.md no longer lists a deleted primitive.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions