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 T17, category spacing; 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. Peer surface3 cards use four radii (16/18/20/24); insets drift between twin screens; two pinned bars have different tailroom; spacers stack on spacedBy; the tab bar ships 15–39 dp over §2's 88; provider rows are 52 beside a 54 CTA.
Fix direction. One radius per object class, one inset per relationship, one tailroom, and a tab-bar height that matches its own KDoc.
Findings (11: P1 ×1, P2 ×1, P3 ×9)
F-GS-13 (P3) — Provider rows are 52 dp beside a 54 dp CTA
Fix: contentPadding-style top/bottom on the column, no per-child top padding, and one notice slot at the top (self note or failure, the report banner replacing it while active).
F-BC-04 (P2) — Two pinned bars with different tailroom; the funnel's dock makes every caller re-pad its actions
Fix: add a subtitle: String? slot to SectionHeader and pass the count through it.
F-SH-22 (P3) — Two pushed SH screens, two tailrooms under the last row
Screens: 63, 123
Where: feature/system/ActivityScreen.kt:196 (chrome.contentTailroom = 16dp) vs feature/system/HelpCentreScreen.kt:133 (size.listTailroom = 56dp)
Fix: one token for "last row to bottom edge on a bar-less pushed screen"; use Spacer(Modifier.height(...)).
F-DSYS-05 (P1) — The tab bar's own arithmetic contradicts its KDoc by 24dp; it ships 15–39dp over §2's 88
Screens: —
Where: designsystem/component/LightTabBar.kt:98-104 (the claim), :190 (the cell), :287-291 (the measurement); tokens at theme/Dimens.kt:406,408,412
Fix: pick one — either cut barTopPad/barBottomPad so hairline + pads + 48 + inset lands on the design's band, or keep the 48 cell and correct the KDoc so nobody re-derives the wrong number. Do not leave the file asserting two different heights.
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 T17, category spacing; 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. Peer
surface3cards use four radii (16/18/20/24); insets drift between twin screens; two pinned bars have different tailroom; spacers stack onspacedBy; the tab bar ships 15–39 dp over §2's 88; provider rows are 52 beside a 54 CTA.Fix direction. One radius per object class, one inset per relationship, one tailroom, and a tab-bar height that matches its own KDoc.
Findings (11: P1 ×1, P2 ×1, P3 ×9)
.height(dimens.component.cta).surface3cards use four radii (16 / 18 / 20 / 24)radii.lgon all five (keepxlon 11 only if the markup measures 24).listTailroomalone.surface3onpagewith no hairline; the only boxed card in the sectionsurfacefill with a 1dphairlineborder, or the Artist-list row anatomy (hairline-separated rows, no box).spacedBy, and the top of 04 stacks up to three notices with double paddingcontentPadding-style top/bottom on the column, no per-child top padding, and one notice slot at the top (self note or failure, the report banner replacing it while active).CtaBara thin wrapper overBottomActionBar(one tailroom token,spacedBy(md)) and remove the per-callerpadding(top = …).radii.lg(18), all buttons onradii.buttonLg(16), and stop usingbuttonLgfor cards.dimens.component.gutteron the prose blocks and the dock.subtitle: String?slot toSectionHeaderand pass the count through it.Spacer(Modifier.height(...)).barTopPad/barBottomPadsohairline + pads + 48 + insetlands on the design's band, or keep the 48 cell and correct the KDoc so nobody re-derives the wrong number. Do not leave the file asserting two different heights.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.