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
[design-qa][P1] Slop patterns: a review pre-rated five stars, helper text under every field, permanent explanatory banners, glyph circles, "See all" everywhere #182
Part of the Sep-2026 designer's-eye QA of the 138 "Artistant iOS Light" screens (theme T20, category slop; 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. The review sheet opens at five stars with "Great night" and Post enabled; the wizard puts helper text under every field and a banner on five of nine steps; every rail says "See all" regardless of size; one eyebrow sits over sixteen rows and another over one; the paywall centres seven paragraphs.
Fix direction. Start the review at zero; helper text only where the field needs it; banners only for a state; "See all" only past the rail's width; left-align what the section left-aligns.
Where: feature/booking/ReviewSheet.kt:87-95 (rating: Int = 5); :254-269; :391-397
Fix: start at rating = 0 (all stars hairline, no word under them) and keep PrimaryButton disabled until a star is tapped.
F-BN-13 (P2) — The review sheet is titled twice and fronted by a stock person glyph
Screens: 20, 98
Where: feature/booking/ReviewSheet.kt:206-241
Fix: pass the cover into the sheet and draw the act's photo in that disc (initials disc as the fallback, as IdentityCard already does); drop one of the two titles.
F-GS-14 (P3) — Banners stack (up to three) and five screens carry a permanent explanatory Note
Fix: actionLabel = "See all".takeIf { rail.artists.size > 2 } (or a minimum rail size of 3 in the ViewModel).
F-WZ-11 (P2) — Helper text under every field, and an explanatory Banner on five of nine steps
Screens: 42, 37, 38, 24, 43
Where: WizardMediaSteps.kt:400,411,422,475 and :427-436; WizardFormSteps.kt:100-112, :222-241, :270-283; WizardMediaSteps.kt:498-509
Fix: keep the helper only where it teaches something the hint cannot (Spotify's "Profile → Share"), cut the info Banners on Identity and Bio, and settle one rule for Banner-title punctuation.
F-WZ-13 (P3) — The sample row's accent play disc is inert, and diverges from the design system's SampleRow
Fix: drop the disc to surface2/ink4 (or wire it to the existing SamplePlayback), and rename the private composable so it does not shadow the design-system one.
F-AC-09 (P2) — The paywall centres seven text blocks; the rest of the section is left-aligned
Fix: split into the groups the comments already describe — Account / Preferences / Privacy & safety / Support / (unlabelled) destructive tail — each with its own EyebrowLabel and AccountGap.
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.
The screens listed above walked on the artistant AVD with the debug harness (RELEASE.md §10) and the fix confirmed visually — this audit was code-grounded, not device-walked.
Part of the Sep-2026 designer's-eye QA of the 138 "Artistant iOS Light" screens (theme T20, category slop; 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. The review sheet opens at five stars with "Great night" and Post enabled; the wizard puts helper text under every field and a banner on five of nine steps; every rail says "See all" regardless of size; one eyebrow sits over sixteen rows and another over one; the paywall centres seven paragraphs.
Fix direction. Start the review at zero; helper text only where the field needs it; banners only for a state; "See all" only past the rail's width; left-align what the section left-aligns.
Findings (8: P1 ×1, P2 ×4, P3 ×3)
rating = 0(all starshairline, no word under them) and keepPrimaryButtondisabled until a star is tapped.IdentityCardalready does); drop one of the two titles.captionline or delete them.actionLabel = "See all".takeIf { rail.artists.size > 2 }(or a minimum rail size of 3 in the ViewModel).SampleRowsurface2/ink4(or wire it to the existingSamplePlayback), and rename the private composable so it does not shadow the design-system one.EyebrowLabelandAccountGap.Acceptance
./gradlew :app:assembleDebug,:app:testDebugUnitTestand:app:lintDevDebuggreen.artistantAVD with the debug harness (RELEASE.md §10) and the fix confirmed visually — this audit was code-grounded, not device-walked.