diff options
| author | Christian Cleberg <[email protected]> | 2026-07-22 01:01:05 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-07-22 15:04:32 -0500 |
| commit | dd41ed2c51beae07288fdfa724e410e0d321d278 (patch) | |
| tree | 6d443925e7d7a323e726999e244fc269b0fb2ef0 /DomainDigWidget/DomainDigWidgetBundle.swift | |
| parent | 7f917e98b929dcf0f7901d0bc4eb05e04db3aa0c (diff) | |
| download | domain-dig-dd41ed2c51beae07288fdfa724e410e0d321d278.tar.gz domain-dig-dd41ed2c51beae07288fdfa724e410e0d321d278.tar.bz2 domain-dig-dd41ed2c51beae07288fdfa724e410e0d321d278.zip | |
feat(a11y): engage the audit enforcement ratchet (#21)
The point of the Phase 0 harness finally lands: named findings in
textClipped, dynamicType, hitRegion, elementDetection,
sufficientElementDescription, and trait now FAIL the build on the
empty-state suite. Regressions in five phases of accessibility work are
gated, not narrated.
Three carve-outs, each earned by evidence rather than convenience:
- contrast stays report-only. The two long-standing Settings findings are
rows scrolled under the translucent tab bar, and their attribution
flips between a row name and nil run-to-run — no suppression is narrow
enough to keep CI stable. The centralised palette is the real guard.
- The seeded dense-row tests run reportOnly. Bisection showed the audit
degrades on children-ignored content — the correct VoiceOver treatment
for dense rows — emitting unattributed contrast/dynamicType failures on
rows that measure 6-7:1 and render correctly.
- Characterised noise is suppressed narrowly and always logged as
[noise: reason]: disabled controls (WCAG 1.4.3 exempt), "nearly passed"
near-misses, system field placeholders (flagged at any length — proven
by shortening them to no effect), and unattributed clipped/dynamic-type
artifacts. noiseReason(for:) records each rule's provenance inline.
Validated in both directions. Positive: the full 11-test suite passes
with enforcement live, dark and light, on an erased simulator. Negative:
re-injecting the Phase 3 icon-exposure regression produced two named
[FAIL] findings and a failed suite — on both screens sharing the
component — then went green again on revert.
Docs and the CI workflow comment updated to describe the engaged state.
Diffstat (limited to 'DomainDigWidget/DomainDigWidgetBundle.swift')
0 files changed, 0 insertions, 0 deletions
