A catalog key into packages/web-ui/i18n/locales/*/*.json — 'mixer.strip.gain', the
<domain>.<section>.<key> grammar 2026-07-16-web-ui-i18n.md already rules.
SHAPED here and RESOLVED by a ratchet, on ManualAnchor's own precedent — and for the SAME
reason, not a weaker one: packages/core/package.json declares one dependency
(@freemixer/declarations); web-ui depends on core, never the reverse. Deriving a closed
union from the catalog would import web-ui's tree into core, which is the two-package cycle
the workspace graph refuses on its face. presents-conformance.test.ts reads the catalog off
disk (en, ca and es) and is this type's compiler, exactly as it is ManualAnchor's
(2026-08-06-channel-contract.md revision 7).
A catalog key into
packages/web-ui/i18n/locales/*/*.json—'mixer.strip.gain', the<domain>.<section>.<key>grammar2026-07-16-web-ui-i18n.mdalready rules.SHAPED here and RESOLVED by a ratchet, on
ManualAnchor's own precedent — and for the SAME reason, not a weaker one:packages/core/package.jsondeclares one dependency (@freemixer/declarations); web-ui depends on core, never the reverse. Deriving a closed union from the catalog would import web-ui's tree into core, which is the two-package cycle the workspace graph refuses on its face.presents-conformance.test.tsreads the catalog off disk (en,caandes) and is this type's compiler, exactly as it isManualAnchor's (2026-08-06-channel-contract.mdrevision 7).