git:20260729.2743ee4 to git:20260914.b26ddbc

20 added, 42 removed. Audit A to A.

- # Swiss German (de-CH) — overlay
-
- A sparse overlay on top of [DE](../de/AGENTS.md). The fallback chain `de-CH → de → en` covers every value not overridden here.
-
- ## When to override
-
- Override a value only when it genuinely differs from DE for a Swiss reader. Otherwise rely on the DE fallback. The framework's `parity` check allows de-CH to be partial; only orphan keys (in de-CH but not in en) fail.
-
- ## What is different from DE
-
- 1. **No `ß`.** Every sharp-s is `ss` — `Strasse`, `gross`, `schliessen`, `Standardmässig`, `gemäss`, `heisst`. Caught by `style-ss` (enforced from day one — the de-CH messages are currently clean).
- 2. **Quote convention.** Prose uses `«…»` (Swiss guillemets) or `„…"`; both accepted. Message values use ASCII.
- 3. **Numbers.** Decimal period (`2.5` like EN, unlike DE `2,5`); thousands apostrophe (`1'000`, unlike DE `1.000`).
- 4. **Currency.** `CHF 100` (prefix), not `100 €`. Catches `$` and `€` in de-CH prose via `style-currency`.
- 5. **Legal references.** Swiss authorities (EDÖB / FADP / LPD / DSG) replace EU references (GDPR / DSGVO). Reviewer-caught.
-
- ## What is the same as DE
-
- - Voice — calm, opinionated, active, `du`. The Swiss reader hears the same narrator with Swiss typography.
- - Loanword stance — DE buckets apply. `Pull Request`, `Workflow`, `Webhook` stay English; `Header → Kopfzeile`, `Email → E-Mail` translate.
- - Drift modes — `Wird X…`, sentence-final `erfolgreich`, `Damit` opener. Same regex denylist as DE.
- - Grammar — same noun-gender map; `einen Anfrage` fails the same way.
+ # Swiss German regional overlay
- ## Conventions
+ Use written Swiss Standard German, with the same informal `du` voice as
+ [German](../de/AGENTS.md). This is a sparse `de-CH → de → en` fallback overlay. Add an override
+ when the text needs to differ for Swiss readers; do not copy the full German catalog.
- | Surface | Rule | Different from DE? |
- | ----------------------- | ------------------------- | ----------------------------------- |
- | Pronoun | `du` | no |
- | Quotation marks (prose) | `«…»` (Swiss) or `„…"` | yes — `«…»` is the Swiss default |
- | Apostrophe (prose) | ASCII `'` | no |
- | Dates (prose) | `19.04.2026` | no |
- | Decimal separator | `.` | yes — DE uses `,` |
- | Thousands separator | `'` (apostrophe: `1'000`) | yes — DE uses `.` or thin space |
- | Currency | `CHF 100` (prefix) | yes — DE uses `100 €` |
- | Spelling (ß) | NEVER — always `ss` | yes — DE uses `ß` after long vowels |
+ ## What changes
- ## What ships untranslated
+ Use `ss` instead of `ß`, Swiss prose quotation marks `«…»`, decimal points, and apostrophe
+ thousands separators such as `1'000`. Preserve the message file's quote conventions and all code
+ syntax. See [CONVENTIONS.md](../../CONVENTIONS.md) and the
+ [locale style data](../../../../../packages/ui/src/i18n/tests/locales/de-CH/).
- Same role names as DE (`Inhaber`, `Admin`, `Entwickler`, `Redakteur`, `Mitglied`, `Deaktiviert`). Same Bucket 1 and Bucket 2.
+ Do not make global replacements in identifiers, URLs, quoted UI labels, or literal code. Resolve
+ a UI label through the actual locale fallback; the docs must name the displayed value.
- ## When the locale-specific test fires
+ ## What does not change
- - `style-ss` (enforced) — `ß` anywhere. Replace with `ss`.
- - `style-numbers` — wrong separator pair. Use `.` decimal and `'` thousands.
- - `style-currency` — `$` or `€` in prose. Use `CHF`.
- - Everything from the [DE locale checks](../de/AGENTS.md#when-the-locale-specific-test-fires) — they apply via the fallback chain.
+ A language preference does not select a contract or deployment region. Keep the same permissions,
+ limits, quantities, billed currency, retention periods, and legal jurisdiction as the source.
+ CHF is appropriate only when the underlying fact is already denominated in CHF. A GDPR reference
+ must not become a Swiss-law reference through translation.
- ## Worked examples
+ When a currency heuristic rejects a factual amount, apply the documented narrow exception with a
+ reason. Never swap currency symbols to satisfy lint. Verify overrides and their fallback behavior
+ in the rendered UI and docs, including orphan keys and Swiss spelling.
- See [examples.md](examples.md). Most DE examples apply to de-CH after the `ß → ss` substitution and currency swap.
+ Read [examples.md](examples.md) for regional formatting examples.