clean-house: fix 37 stale DQR cross-links; sort architecture.md decisions
clean-house sweep over governance/ (validate green, 0 broken refs before and after): - RULE-ANCHOR-DRIFT (37): rewrote inline cross-reference links left over from before the decisions/questions/rejected subdir split — flat naming (questions-architecture.md, questions-process.md, rejected.md) and bare same-dir paths that were actually cross-type — to canonical subdir-relative form with current slugs. pql resolved these by ID so they were never broken to the tooling, only to GitHub anchor navigation. - RULE-RECORD-SORT (1): reordered decisions/architecture.md D-records to strictly ascending (the D-1..D-6 block had been appended after D-41); pure block move, line count unchanged, content identical. - RULE-FILE-OVER-THRESHOLD: deferred (architecture.md 435 > 350; splitting would re-churn the anchors just fixed). - EOF/whitespace and Q↔D backlinks clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,7 @@ A11y + i18n are Tier-0 contracts, not Tier-6 polish.
|
||||
### D-21: i18n is a Tier-0 contract (fframe pattern + locale-fallback chain)
|
||||
- **Date:** 2026-04-21
|
||||
- **Decision:** All user-facing strings resolve through a namespaced i18n catalogue loader ported from fframe's text-driven pattern, extended with a locale-fallback chain fframe lacks. JSON per locale; `I18n.of(context).t('namespace.key', {vars})`. Missing keys resolve down the chain (e.g. `en_GB` → `en` → default), never fail silently; missing at the base locale logs a dev-mode error.
|
||||
- **Rationale:** Flutter's `intl` + ARB codegen is inflexible for plugin-contributed catalogs (see [R-4](rejected.md#r-4-flutter-intl-and-arb-codegen)) — we need per-extension catalogs that merge without a codegen step. fframe's shape fits; its silent-fallback behaviour does not, so we add the chain.
|
||||
- **Rationale:** Flutter's `intl` + ARB codegen is inflexible for plugin-contributed catalogs (see [R-4](../rejected/accessibility.md#r-4-flutter-intl--arb-codegen-for-i18n)) — we need per-extension catalogs that merge without a codegen step. fframe's shape fits; its silent-fallback behaviour does not, so we add the chain.
|
||||
- **Cost:** JSON has no comments and no trailing commas; translation tooling has to accept that. Separate `i18n` facade on every feature.
|
||||
- **Raised by:** 2026-04-21 planning.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user