Commit 2279dfa7c4

2279dfa7c479d28b2560c1baaa13e4cf17b2eef7

parent: 2ca5ddf53e

Unsigned

cmc <hello@cleberg.net> · 2026-07-24 03:44 UTC

docs: repair roadmap references after the verification-doc cleanup

The docs cleanup removed Docs/ACCESSIBILITY_VERIFICATION.md and the
results doc, but the v4.9.0 roadmap entry still linked to the checklist
in two places — dead links, and with issue #21 now closed the roadmap is
the only durable record left.

- Both dangling links removed.
- The deferred list was stale in the other direction too: it listed the
  Liquid Glass runtime check as outstanding, but PR #38 ran it on
  simulator alongside the classic-chrome floor. It now names only what a
  Simulator genuinely cannot do — VoiceOver speech and the rotor, Voice
  Control, iPad Full Keyboard Access, Smart Invert — and notes that the
  underlying accessibility metadata is asserted in tests even though its
  spoken output is not.
- Records the Phase 6 verification work itself (#38), which landed after
  the v4.9.0 entry was written: the metadata and screenshot test suites,
  the middle-band Dynamic Type sweep, and the enforced iOS 27.0
  dynamicType finding it caught.

Verified the suppression that finding produced rather than taking it on
trust: it is scoped to .dynamicType plus an exact allowlist of the five
Settings section titles, all of which are plain `Section("…")` with no
app-applied font, so UIKit owns the scaling. Enforcement on
app-controlled text is intact.

Layout: unified · split

RELEASE_ROADMAP.md +26 −6
@@ -227,9 +227,18 @@ light mode, and the engineering scaffolding to keep both from regressing.
227227 pre-push hook). `DOMAIN_DIG_SEED_FIXTURES` seeds deterministic in-memory
228228 rows so the dense paths actually render under audit. The **enforcement
229229 ratchet is engaged**: named findings in six categories fail CI, with
230 narrowly characterised, always-logged noise suppressions. Manual
231 verification checklist in `Docs/ACCESSIBILITY_VERIFICATION.md`; findings
232 burndown 20 → 11 with every remaining item characterised as system noise.
230 narrowly characterised, always-logged noise suppressions. Findings burndown
231 20 → 11, with every remaining item characterised as system noise.
232- **Phase 6 verification** — the simulator-executable half of the manual pass
233 was run and converted into permanent tests: `AccessibilityMetadataTests`
234 asserts the icon-only control labels, toggle selected-states, and dense-row
235 label/value pairs; `AccessibilityScreenshotTests` captures both appearances
236 across classic chrome and Liquid Glass. A middle-band Dynamic Type sweep was
237 added after two real layout bugs turned up *between* the default and
238 AccessibilityXXXL test points. The pass also caught a genuine enforced
239 `.dynamicType` failure on iOS 27.0 against UIKit-rendered Settings section
240 headers; the app applies no font to those, so it is carved out by exact
241 header title, scoped to that one audit type.
233242- **Swift 6 language mode** (#27) — all three product targets build under
234243 `SWIFT_VERSION = 6.0` with zero warnings. `SMTPChannel` became an actor
235244 (fixing a real `CheckedContinuation` double-resume hazard),
@@ -240,9 +249,20 @@ light mode, and the engineering scaffolding to keep both from regressing.
240249 (26.2 shadowing the real 17.6) reconciled; CI selects simulators
241250 floor-aware instead of first-match.
242251
243Deferred: the Phase 6 manual device passes (VoiceOver walkthrough, Voice
244Control, iPad Full Keyboard Access, Liquid Glass runtime check) are tracked in
245`Docs/ACCESSIBILITY_VERIFICATION.md` and #21 — they close on device, not in CI.
252Deferred — genuinely physical-device-only, since the Simulator cannot run
253VoiceOver or Voice Control at all:
254
255- **VoiceOver speech**, the More Content rotor, custom-content ordering, and the
256 spoken lookup/sweep announcements. The underlying metadata (labels, values,
257 selected states) *is* asserted in `AccessibilityMetadataTests`; what remains
258 unverified is how it is spoken.
259- **Voice Control** activation of every control by its printed label (WCAG
260 2.5.3).
261- **iPad Full Keyboard Access** focus order across the split layout.
262- **Smart Invert**.
263
264The Liquid Glass (iOS 26+) runtime check is **done** — it ran on simulator
265alongside the classic-chrome floor.
246266
247267## v5.0.0 Major: Contract Stabilization & Engineering Health
248268