fix(toolchain): pin naar Flutter 3.44.7, en bewaak dat alle plekken meebewegen (#598, #721) #728

Closed
brenno wants to merge 1 commit from fix/flutter-pin-3447-721 into main
Owner

Sluit #598 en #721.

Wat er mis was

.tool-versions pinde 3.44.6-stable; de enige machine die de poort ooit
draait staat op 3.44.7-stable. Dat is de staart van #598 — dat issue ving de
machine op 3.44.2 • channel [user-branch] • unknown source, met binaries onder
een derde versienummer. De installatie is sindsdien officieel geworden, maar de
pin liep nog achter, dus "de poort is groen" bewees nog steeds iets anders dan
de documentatie beloofde.

Dertien plekken herhaalden dat getal (README, CONTRIBUTING, vier documenten in
docs/, acht keer flutter-version: in de twee workflows) en niets legde ze
naast de pin
.

De keuze, en waarom deze kant op

De pin beweegt naar 3.44.7 in plaats van de machine naar 3.44.6. Teruggaan naar
een oudere uitgave om een getal te laten kloppen maakt niets veiliger; 3.44.7 is
de stabiele van 17-07-2026 uit de officiële bron.

Gemeten vóór die keuze, en genoteerd in CHECKS.md:

Meting Uitkomst
make check groen
make test-golden groen — alle 33 PNG's byte-identiek
make check-web groen, incl. hardening en release-artefacten
make check-secrets groen (gitleaks + trufflehog, werkboom én historie)
make sast groen (semgrep, 0 op 680 bestanden)

De goldenmeting is hier de belangrijkste: make check sluit goldens uit
(--exclude-tags golden), en een engineversie is precies wat ze kan
verschuiven. Zonder die run zou de groene poort niets zeggen over rendering.

De poort

test/toolchain_pin_test.dart legt de dertien plekken naast .tool-versions,
inclusief de acht flutter-version:. Correctienotities blijven buiten schot —
die citeren het oude getal met opzet, en een poort die daar overheen walst
bestraft precies de geschiedenis die deze repo bewaart. Eén keer rood gezien
tegen een geplante 3.44.5 in BUILD.md.

Wat de poort niet kan zien: of de machine waarop je draait de gepinde versie
is. Dat is geen eigenschap van de repo — juist dáár ging #598 over. Daarvoor
staat het gemeten flutter --version met de hand in CHECKS.md, nu met de
volledige uitvoer inclusief framework- en engine-revisie.

Een valstrik die het opschrijven waard was

Ik heb #721 vanochtend op een verkeerde diagnose ingediend: make build-web
zou omvallen op sbom-verify. Dat klopte niet. Na een SDK-wissel meldt die stap
fout-positief dat de SBOM verouderd is, zolang flutter pub get niet onder
de nieuwe SDK gedraaid heeft — en de melding wijst je dan naar make sbom, wat
de verkeerde inhoud zou committen als je hem gelooft. Zodra pub zijn werk had
gedaan was het verschil weg. Staat zo in de CHANGELOG, want de volgende SDK-bump
loopt er weer tegenaan.

Sluit #598 en #721. ### Wat er mis was `.tool-versions` pinde `3.44.6-stable`; de enige machine die de poort ooit draait staat op `3.44.7-stable`. Dat is de staart van #598 — dat issue ving de machine op `3.44.2 • channel [user-branch] • unknown source`, met binaries onder een derde versienummer. De installatie is sindsdien officieel geworden, maar de pin liep nog achter, dus "de poort is groen" bewees nog steeds iets anders dan de documentatie beloofde. Dertien plekken herhaalden dat getal (README, CONTRIBUTING, vier documenten in `docs/`, acht keer `flutter-version:` in de twee workflows) en **niets legde ze naast de pin**. ### De keuze, en waarom deze kant op De pin beweegt naar 3.44.7 in plaats van de machine naar 3.44.6. Teruggaan naar een oudere uitgave om een getal te laten kloppen maakt niets veiliger; 3.44.7 is de stabiele van 17-07-2026 uit de officiële bron. Gemeten **vóór** die keuze, en genoteerd in `CHECKS.md`: | Meting | Uitkomst | | --- | --- | | `make check` | groen | | `make test-golden` | groen — alle 33 PNG's byte-identiek | | `make check-web` | groen, incl. hardening en release-artefacten | | `make check-secrets` | groen (gitleaks + trufflehog, werkboom én historie) | | `make sast` | groen (semgrep, 0 op 680 bestanden) | De goldenmeting is hier de belangrijkste: `make check` sluit goldens uit (`--exclude-tags golden`), en een engineversie is precies wat ze kan verschuiven. Zonder die run zou de groene poort niets zeggen over rendering. ### De poort `test/toolchain_pin_test.dart` legt de dertien plekken naast `.tool-versions`, inclusief de acht `flutter-version:`. Correctienotities blijven buiten schot — die citeren het oude getal met opzet, en een poort die daar overheen walst bestraft precies de geschiedenis die deze repo bewaart. Eén keer rood gezien tegen een geplante 3.44.5 in `BUILD.md`. Wat de poort **niet** kan zien: of de machine waarop je draait de gepinde versie is. Dat is geen eigenschap van de repo — juist dáár ging #598 over. Daarvoor staat het gemeten `flutter --version` met de hand in `CHECKS.md`, nu met de volledige uitvoer inclusief framework- en engine-revisie. ### Een valstrik die het opschrijven waard was Ik heb #721 vanochtend op een verkeerde diagnose ingediend: `make build-web` zou omvallen op `sbom-verify`. Dat klopte niet. Na een SDK-wissel meldt die stap **fout-positief** dat de SBOM verouderd is, zolang `flutter pub get` niet onder de nieuwe SDK gedraaid heeft — en de melding wijst je dan naar `make sbom`, wat de verkeerde inhoud zou committen als je hem gelooft. Zodra pub zijn werk had gedaan was het verschil weg. Staat zo in de CHANGELOG, want de volgende SDK-bump loopt er weer tegenaan.
`.tool-versions` zei `3.44.6-stable`, maar de enige machine die de poort ooit
draait staat op `3.44.7-stable`. Dat is de staart van #598: dat issue ving de
machine op 3.44.2 uit een `[user-branch]`, met binaries onder een derde
versienummer (`/opt/homebrew/Caskroom/flutter/3.29.0/`). De installatie is
sindsdien officieel geworden; de pin liep nog achter. Er is geen CI-runner, dus
deze machine is de enige plek waar `make check` ooit gedraaid heeft — "de poort
is groen" bewees dus nog steeds iets anders dan de documentatie beloofde.

De pin beweegt mee naar 3.44.7 in plaats van andersom. Teruggaan naar een
oudere uitgave om een getal te laten kloppen maakt niets veiliger, en 3.44.7 is
gewoon de stabiele van 17-07-2026. Gemeten vóór die keuze, en genoteerd in
`CHECKS.md`: `make check` groen, `make test-golden` groen (alle 33 PNG's
byte-identiek — dat is de meting die telt, want `make check` sluit goldens uit
en juist een engineversie kan ze verschuiven), en `make check-web` groen
inclusief hardening en release-artefacten.

Dertien plekken herhaalden dat getal: README, CONTRIBUTING, vier documenten in
`docs/`, en acht keer `flutter-version:` in de twee workflows. Niets legde ze
naast de pin, dus waren het twaalf kansen om er één te vergeten.
`toolchain_pin_test.dart` doet dat nu wel. Correctienotities blijven buiten
schot: die citeren het oude getal met opzet, en een poort die daar overheen
walst bestraft precies de geschiedenis die deze repo bewaart. Wat de poort níét
kan zien is of de machine waarop je draait de gepinde versie is — dat is geen
eigenschap van de repo, en daarvoor staat het gemeten `flutter --version` met de
hand in `CHECKS.md`.

De SBOM noemt de SDK-versie, dus die is opnieuw gegenereerd.

Onderweg één valstrik die me bijna de verkeerde kant op stuurde, en die #721 als
bug opschreef: na een SDK-wissel meldt `sbom-verify` fout-positief dat de SBOM
verouderd is, zolang `flutter pub get` niet onder de nieuwe SDK heeft gedraaid.
De melding wijst je dan naar `make sbom` — wat de verkeerde inhoud zou
committen als je hem gelooft.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno closed this pull request 2026-07-23 11:25:12 +00:00

Pull request closed

Sign in to join this conversation.
No description provided.