You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
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
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.
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.mdrows.Findings (8: P3 ×8)
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, M3TextButton); the signup helpers (F-GS-23) and the funnel helpers (F-BC-20).PARITY_CHECKLIST.mdstill listsScoreRingas a shipped primitive.AuthScreen.kt,EditorialHeadline.kt,SignupBackButton,SignupInputRowui/auth/AuthScreen.kt,EditorialHeadline.kt,SignupBackButtonandSignupInputRow.ArtistTile.ktis dead and carries the section's raw dp, compat type steps andColor.WhiteArtistTile.ktand thegridTileHeighttoken.ScoreRing.ktis dead code carrying the section's only raw literalsScoreRing.kt(or promoteScoreDonutinto it on tokens and use one ring on 50 and 99).BookingChrome.ktcarries seven dead composables (13 of its 16 compat aliases live in them);StatusTimelineis drawn by no screenCtaCaptionand the two counters →AppTheme.type.caption.dayCellW/dayCellH/scoreRing/barsWidth/barsHeight(and the three dead components), or movestripCellH/barChartintoDashboardso one group owns the data display.ComponentGalleryto 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.PREVIEW_WIDTH = 350.dpis preview-only (raw-unit sweep false positive)@Preview(widthDp = 350)and delete the constant, or leave it — no user impact.Acceptance
./gradlew :app:assembleDebug,:app:testDebugUnitTestand:app:lintDevDebuggreen.PARITY_CHECKLIST.mdno longer lists a deleted primitive.