@@ -3,7 +3,7 @@ status: complete
33phase : 11-infra-refactor-lint-capstone
44source : [11-VERIFICATION.md]
55started : 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)
117117retest: "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
124141issues: 0
125142pending: 0
126143skipped: 0
127144blocked: 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