clean-house sweep: anchor drift, app/-prefix paths, D-59 sunset
Fixes 3 substring-truncated cross-reference anchors so they match the full heading slug: - D-3 link in architecture.md - D-40 link in process.md (heading gained the [SUPERSEDED] tag) - Q-15 link in questions-process.md Strips the legacy `app/` prefix from path references in 5 files — the dirs were flattened to repo root in the Flutter rebuild (D-56). Three "was `app/...`" historical references in D-5 and D-56 are deliberately preserved as record of the dissolution. Adds an inline (tracked in T-88) note to D-59 so the "must track dugite-native releases for security updates" intent is wired to a backlog item — RULE-SUNSET-WITHOUT-TICKET would otherwise keep flagging it on every sweep. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@ A11y + i18n are Tier-0 contracts, not Tier-6 polish.
|
||||
- **Date:** 2026-04-21
|
||||
- **Decision:** Every widget primitive wraps its interaction surface in a `Semantics` node at the point of creation. A11y coverage is a test-time gate (`ci/test_a11y.sh`), not a post-hoc polish pass. `ensureSemantics()` fires at app boot; Flutter's semantics tree is always populated.
|
||||
- **Rationale:** Retrofitting a11y onto a grown UI is what every project that skips this promises to do later and then doesn't. Making it a Tier-0 contract costs one `Semantics` line per primitive and a semantic-coverage test; postponing costs a rewrite.
|
||||
- **Cost:** Widget authors maintain correct labels; tests reject new primitives without semantics. Enforced by `app/test/a11y/` coverage tests.
|
||||
- **Cost:** Widget authors maintain correct labels; tests reject new primitives without semantics. Enforced by `test/a11y/` coverage tests.
|
||||
- **Raised by:** 2026-04-21 planning.
|
||||
|
||||
### D-21: i18n is a Tier-0 contract (fframe pattern + locale-fallback chain)
|
||||
|
||||
Reference in New Issue
Block a user