docs: PR-sjabloon wijst naar de bron van waarheid en vraagt naar de afweging #524

Merged
brenno merged 2 commits from fix/pr-template-talen-en-afweging into main 2026-07-22 10:17:19 +00:00
Owner

Summary

The PR checklist named eight languages (nl/en/it/de/fr/es/fy/pap) while AppLocalizations.languageNames holds 32. A contributor ticking that box honestly shipped 24 languages short and had no way to know — a checklist that misleads rather than merely being incomplete. And nothing in the template ever asked the contributor to weigh the project's principles, even though the template is the only place an outside contributor sees.

Closes #510

Changes

  • test/pr_template_consistency_test.dart — asserts the template enumerates no language codes, and that the trade-off item is present. It tests the absence of a list rather than its correctness, because a freshly written list rots the same way on the next language.
  • The l10n item now points at make add-l10n SPEC=… and AppLocalizations.languageNames as the authoritative set.
  • One new checklist item on the trade-off (format, storage, dependency, outgoing traffic, or a promise): which principle took precedence, why, and what would change my mind.
  • The existing test item was sharpened rather than duplicated: a bug fix needs a test on the reported behaviour that was red once, or an explanation of what gate covers it instead. The issue warns that a checklist firing on every PR gets ticked unread, so this is a refinement of a line that already existed, not a fifth box.

Split red-then-green: the test commit fails on its own, the template commit turns it green. Also verified against a planted regression (re-adding nl/en/it/de makes it fail again).

Gates

  • make check — green (86.3% coverage, per-file floor 0 below budget).
  • make check-secrets / make sast — still red for the two pre-existing reasons filed as #522 and #521. Unrelated to this branch; nothing here touches lib/.

Principles

Touches a promise in the sense that it changes what we ask contributors to affirm — but it makes an existing claim true rather than adding a new one. No conflict to record.

## Summary The PR checklist named eight languages (`nl/en/it/de/fr/es/fy/pap`) while `AppLocalizations.languageNames` holds 32. A contributor ticking that box honestly shipped 24 languages short and had no way to know — a checklist that misleads rather than merely being incomplete. And nothing in the template ever asked the contributor to weigh the project's principles, even though the template is the only place an outside contributor sees. Closes #510 ## Changes - `test/pr_template_consistency_test.dart` — asserts the template enumerates **no** language codes, and that the trade-off item is present. It tests the *absence* of a list rather than its correctness, because a freshly written list rots the same way on the next language. - The l10n item now points at `make add-l10n SPEC=…` and `AppLocalizations.languageNames` as the authoritative set. - One new checklist item on the trade-off (format, storage, dependency, outgoing traffic, or a promise): which principle took precedence, why, and what would change my mind. - The existing test item was **sharpened rather than duplicated**: a bug fix needs a test on the reported behaviour that was red once, or an explanation of what gate covers it instead. The issue warns that a checklist firing on every PR gets ticked unread, so this is a refinement of a line that already existed, not a fifth box. Split red-then-green: the test commit fails on its own, the template commit turns it green. Also verified against a planted regression (re-adding `nl/en/it/de` makes it fail again). ## Gates - `make check` — green (86.3% coverage, per-file floor 0 below budget). - `make check-secrets` / `make sast` — still red for the two pre-existing reasons filed as #522 and #521. Unrelated to this branch; nothing here touches `lib/`. ## Principles Touches a promise in the sense that it changes what we ask contributors to affirm — but it makes an existing claim true rather than adding a new one. No conflict to record.
Het sjabloon noemde acht talen terwijl er 32 zijn. Wie dat vinkje eerlijk
aanzette, leverde 24 talen te weinig en kon dat niet weten — een
checklist die misleidt in plaats van alleen onvolledig te zijn.

De test toetst de afwezigheid van een opsomming, niet de juistheid ervan:
een verse lijst verrot bij de volgende taal precies zo. Staat bewust rood
tot de volgende commit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
docs(sjabloon): wijs naar de bron van waarheid, en vraag naar de afweging
Some checks failed
CI / Gate (Linux) · Format · Analyze · Coverage (pull_request) Has been cancelled
CI / Test (macos-latest) (pull_request) Has been cancelled
CI / Test (windows-latest) (pull_request) Has been cancelled
CI / Web hardening (pull_request) Has been cancelled
CI / Docs links (pull_request) Has been cancelled
CI / Supply-chain (Trivy · advisory) (pull_request) Has been cancelled
CI / Gate (Linux) · Format · Analyze · Coverage (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Web hardening (push) Has been cancelled
CI / Docs links (push) Has been cancelled
CI / Supply-chain (Trivy · advisory) (push) Has been cancelled
e8a16d96c8
De talenlijst wordt een verwijzing naar make add-l10n en
AppLocalizations.languageNames, zodat hij niet opnieuw kan verouderen.

Daarnaast één regel die vraagt naar de afweging bij formaat, opslag, een
afhankelijkheid, uitgaand verkeer of een belofte. De poorten dekken wat
mechaniseerbaar is; de weging niet, en dit sjabloon is de enige plek waar
een bijdrager van buiten die vraag ooit ziet.

De bestaande testregel is aangescherpt in plaats van uitgebreid met een
nieuw vinkje: een checklist die overal afgaat wordt afgevinkt zonder
gelezen te worden.

Closes #510

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 5df7dd9406 into main 2026-07-22 10:17:19 +00:00
brenno deleted branch fix/pr-template-talen-en-afweging 2026-07-22 10:17:19 +00:00
Sign in to join this conversation.
No description provided.