Skip to content

Commit 27b4a3b

Browse files
committed
test(11): record G-11-9 (separator regression) as resolved in UAT
1 parent 0b5d3e9 commit 27b4a3b

1 file changed

Lines changed: 65 additions & 5 deletions

File tree

  • .planning/phases/11-infra-refactor-lint-capstone

.planning/phases/11-infra-refactor-lint-capstone/11-UAT.md

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ status: complete
33
phase: 11-infra-refactor-lint-capstone
44
source: [11-VERIFICATION.md]
55
started: 2026-07-21T00:00:00Z
6-
updated: "2026-07-22T00:03:53Z"
6+
updated: "2026-07-22T03:39:43Z"
77
---
88

99
<!--
@@ -117,25 +117,46 @@ found_during: out-of-band observation while testing (not a scripted checkpoint)
117117
retest: "Owner visual re-check 2026-07-22 after 11-31. Confirmed: page-count symbol back to prior
118118
size in the gallery cell; Torrents sheet stat icons also correct. .imageScale(.medium) is right."
119119

120+
### 9. Detail-list row separator inset
121+
122+
expected: |
123+
The `List` row separator in the gallery list (detail mode) spans from the text-column leading
124+
edge (past the thumbnail) across to the trailing edge.
125+
result: pass
126+
initially: issue
127+
reported: "the list row separator became extremely short ... expected separator expands to the
128+
trailing edge of the gallery image from the trailing edge of the cell, but currently it only
129+
extends like ten px from the trailing edge of the cell"
130+
severity: cosmetic
131+
found_during: out-of-band observation after phase completion (post-verification regression)
132+
retest: "Owner verified 2026-07-22 in the live iPhone Air Simulator (sim-use screenshot): separators
133+
span the full width, no sliver. Gallery list AND torrents list both pass — TorrentsView was NOT
134+
modified and renders correctly on its own (its rows carry a leading Label that anchors the
135+
separator correctly), so the earlier regression-#4 hypothesis for TorrentsView was falsified."
136+
120137
## Summary
121138

122-
total: 8
123-
passed: 8
139+
total: 9
140+
passed: 9
124141
issues: 0
125142
pending: 0
126143
skipped: 0
127144
blocked: 0
128145

129146
<!--
130-
Final tally: 8/8 pass.
147+
Final tally: 9/9 pass.
131148
132149
- Tests 1,2,4,5,6: passed during initial UAT.
133150
- Tests 7 (G-11-7 blocker) and 8 (G-11-8 cosmetic): found as issues, diagnosed, fixed by plans
134151
11-30/11-31, confirmed on device 2026-07-22.
135152
136153
- Test 3: pass by code inspection (live sourcing infeasible — no zero-favourite gallery exists in
137154
the wild; parser handles the 'Favorited: Never' rendering at Parser+Detail.swift:266-271).
138-
Both gaps (G-11-7, G-11-8) status: resolved.
155+
156+
- Test 9 (G-11-9 cosmetic): found AFTER phase completion — a post-verification regression from the
157+
same 6dd51b00 "Overall UI adjustments" HStack->Label sweep that caused G-11-8. Fixed directly
158+
(commit 141e3d56, not a gap-closure plan) and verified in-Simulator. Phase left complete.
159+
Gaps G-11-7, G-11-8, G-11-9 status: resolved.
139160
-->
140161

141162
## Gaps
@@ -309,3 +330,42 @@ Both gaps (G-11-7, G-11-8) status: resolved.
309330
the open question of whether .imageScale on a Label propagates into the icon under the
310331
default titleAndIcon style on iOS 26."
311332
debug_session: ".planning/debug/g-11-8-page-count-symbol-size.md"
333+
334+
- gap_id: G-11-9
335+
truth: "The detail-list row separator spans from the text-column leading edge (past the thumbnail) to the trailing edge"
336+
status: resolved
337+
resolved_by: "direct fix, commit 141e3d56 (not a gap-closure plan — post-completion cosmetic one-liner)"
338+
resolved_at: 2026-07-22
339+
severity: cosmetic
340+
test: 9
341+
found_post_completion: true
342+
reason: "User reported the detail-mode gallery-list separator collapsed to a ~10pt right-side sliver instead of spanning past the thumbnail."
343+
root_cause: "The 6dd51b00 'Overall UI adjustments' HStack->Label sweep (same commit as G-11-8)
344+
opted the page-count element into a default-styled `Label`. A default-styled `Label` in a
345+
`List` row publishes a `.listRowSeparatorLeading` anchor at its title's leading edge; because
346+
this Label sits at the row's TRAILING edge, that anchor collapsed the separator to a sliver.
347+
Confirmed by pixel measurement in a List render harness: bug = leading 349.7 / length 11.3;
348+
correct = 119.3 / 241.7. The anchor is NOT intrinsic to the `Label` type — it is published
349+
only by the Label's default/automatic style-resolution path; routing the Label through ANY
350+
explicit `.labelStyle(...)` drops the anchor."
351+
artifacts:
352+
353+
- path: "AppPackage/Sources/GalleryListComponents/Cells/GalleryDetailCell.swift:137-147"
354+
issue: "Page-count Label (default style) at the row's trailing edge hijacked the separator inset."
355+
fix_applied: "Added `.labelStyle(.titleAndIcon)` to the page-count Label, with a comment marking
356+
it load-bearing (NOT a redundant restatement of the default style — a future 'remove redundant
357+
modifiers' pass would silently regress the separator). Restores the separator to 119.3 / 241.7,
358+
pixel-identical to correct; icon appearance unchanged (keeps .imageScale(.medium)). Considered
359+
alternatives: `.alignmentGuide(.listRowSeparatorLeading) { $0[.leading] }` (documented, states
360+
intent directly), a custom LabelStyle (works, more code), and a whole-row-as-Label restructure
361+
(empirically rejected — mispositions the inset AND overlaps the thumbnail)."
362+
verification: "Built + launched in the live iPhone Air (iOS 26.5) Simulator via sim-use; owner
363+
confirmed the gallery list separators span full width. Owner also confirmed the Torrents list
364+
renders correctly WITHOUT any change — TorrentsView (also a List with trailing stat Labels) was
365+
NOT modified; the regression-#4 hypothesis for it was falsified."
366+
reusable_lesson: "The `label_text_image_shorthand` lint rule pushes `HStack { Image; Text }` ->
367+
`Label`. In a `List` row, a default-styled `Label` at the TRAILING edge hijacks the row
368+
separator's leading inset (collapses it) — and, per G-11-8, its icon also inflates vs a bare
369+
Image. Any future HStack->Label sweep on List-row content must account for both side effects.
370+
Fixes: an explicit `.labelStyle(...)` (drops the separator anchor) and/or an explicit
371+
`.imageScale(...)` on the icon (restores glyph size)."

0 commit comments

Comments
 (0)