fix(tooling): translate-docs-check dwingt weer af (consistentie i.p.v. 31 talen) #1341

Merged
brenno merged 1 commit from fix/translate-docs-gate-enforce into main 2026-08-07 18:38:38 +00:00
Owner

Vervolg op #1338. Toen die de crash weghaalde, bleken twee gebreken die de crash had gemaskeerd. Jij koos: docs blijven Engels + Nederlands, alleen de poort repareren (geen 270 machinevertalingen — dat past bij OciDeck's "inhoud = nl+en, interface = alle talen", en de lezer valt al netjes terug op de Engelse basis met een melding).

1. Tandeloze poort. main was Future<int> met return _runCheck(), maar de Dart-VM negeert een teruggegeven int — zonder exit()/exitCode eindigde de poort altijd 0. Een dunne main zet nu exitCode = await _run(args).

2. Verkeerde eis → consistentie i.p.v. volledigheid. De check verlangde een variant in álle 31 talen. Nu bewaakt hij dat wat we verschepen kloppend is:

  • elke verscheepte taal (shippedDocLanguages = ['nl']) bestaat én is in pubspec.yaml geregistreerd;
  • geen variantbestand voor een taal die we niet verschepen (drift);
  • geen verweesde registratie (regel in pubspec, bestand weg);
  • privacywaarborg: geen uitgesloten document (PRIVACY.md, SECURITY_DESIGN.md) is ooit machinevertaald;
  • een code op shippedDocLanguages wordt tegen kLanguageNames gevalideerd.

Een taal erbij verschepen = code toevoegen aan shippedDocLanguages en make translate-docs draaien.

Poort hing nergens in. Een gerepareerde poort die geen enkel aggregaat draait is nog steeds tandeloos, dus translate-docs-check staat nu in STATIC_GATES — draait per PR (static-gate.yml) i.p.v. alleen met de hand.

Bewijs. docVariantProblems() is publiek; test/doc_translation_test.dart draait de poortlogica tegen de repo. Rood-eerst getoetst: een losse docs/GLOSSARY.fr.md laat --check met exit 1 falen en de melding "untracked variant … add fr to shippedDocLanguages or remove the file"; schoon weer exit 0. Volledige make check groen inclusief de nieuwe gate (8936 tests, coverage 87,1%).

Vervolg op #1338. Toen die de crash weghaalde, bleken twee gebreken die de crash had gemaskeerd. Jij koos: **docs blijven Engels + Nederlands, alleen de poort repareren** (geen 270 machinevertalingen — dat past bij OciDeck's "inhoud = nl+en, interface = alle talen", en de lezer valt al netjes terug op de Engelse basis met een melding). **1. Tandeloze poort.** `main` was `Future<int>` met `return _runCheck()`, maar de Dart-VM negeert een teruggegeven int — zonder `exit()`/`exitCode` eindigde de poort altijd 0. Een dunne `main` zet nu `exitCode = await _run(args)`. **2. Verkeerde eis → consistentie i.p.v. volledigheid.** De check verlangde een variant in álle 31 talen. Nu bewaakt hij dat wat we verschepen kloppend is: - elke verscheepte taal (`shippedDocLanguages = ['nl']`) bestaat én is in `pubspec.yaml` geregistreerd; - geen variantbestand voor een taal die we niet verschepen (drift); - geen verweesde registratie (regel in pubspec, bestand weg); - **privacywaarborg:** geen uitgesloten document (`PRIVACY.md`, `SECURITY_DESIGN.md`) is ooit machinevertaald; - een code op `shippedDocLanguages` wordt tegen `kLanguageNames` gevalideerd. Een taal erbij verschepen = code toevoegen aan `shippedDocLanguages` en `make translate-docs` draaien. **Poort hing nergens in.** Een gerepareerde poort die geen enkel aggregaat draait is nog steeds tandeloos, dus `translate-docs-check` staat nu in `STATIC_GATES` — draait per PR (static-gate.yml) i.p.v. alleen met de hand. **Bewijs.** `docVariantProblems()` is publiek; `test/doc_translation_test.dart` draait de poortlogica tegen de repo. Rood-eerst getoetst: een losse `docs/GLOSSARY.fr.md` laat `--check` met exit 1 falen en de melding "untracked variant … add fr to shippedDocLanguages or remove the file"; schoon weer exit 0. Volledige `make check` groen inclusief de nieuwe gate (8936 tests, coverage 87,1%).
fix(tooling): translate-docs-check dwingt weer af en bewaakt consistentie i.p.v. volledigheid
All checks were successful
scans / scans (pull_request) Successful in 2m40s
static-gate / static-gate (pull_request) Successful in 6m43s
04c1552215
Twee gebreken die de eerdere compilecrash had gemaskeerd.

1. Tandeloze poort. `main` was `Future<int>` met `return _runCheck()`, maar de
   Dart-VM negeert een teruggegeven int — zonder `exit()`/`exitCode` eindigde de
   poort altijd 0. Een dunne `main` zet nu `exitCode = await _run(args)`, dus een
   gevonden probleem faalt de poort echt.

2. Verkeerde eis. De check verlangde een variant in álle 31 talen (270 ontbraken).
   Dat is niet wat OciDeck wil: docs zijn Engels + Nederlands, andere talen vallen
   in de lezer terug op de Engelse basis. De check bewaakt nu CONSISTENTIE i.p.v.
   volledigheid — elke verscheepte taal (`shippedDocLanguages = ['nl']`) bestaat
   en is geregistreerd, geen variant voor een niet-verscheepte taal, geen
   verweesde pubspec-registratie, en (privacywaarborg) geen uitgesloten document
   (PRIVACY/SECURITY_DESIGN) machinevertaald. Een naam op de lijst wordt tegen
   `kLanguageNames` gevalideerd.

De poort hing nergens in; hij staat nu in `STATIC_GATES`, dus hij draait per PR.
`docVariantProblems()` is publiek en `test/doc_translation_test.dart` draait de
poortlogica tegen de repo. `make check` groen (incl. de nieuwe gate, 8936 tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 98f08a4f07 into main 2026-08-07 18:38:38 +00:00
Sign in to join this conversation.
No description provided.