[Bug] The only machine that runs the quality gate is not on the pinned toolchain #598
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#598
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found in the pre-publication security review, confirmed by a second reviewer.
Evidence:
.tool-versionspinsflutter 3.44.6-stable;README.md:46,docs/BUILD.md:18and.github/workflows/ci.yml:35,132,193all name 3.44.6. Butflutter --versionon the machine where the gates actually run reports:with binaries under
/opt/homebrew/Caskroom/flutter/3.29.0/— a third version number in the path. Because there is no CI runner, this machine is the only placemake checkhas ever run.Why this matters now: every green gate the publication rests on — and
COMPLIANCE.mdQA.04, "repeatable test procedures" — was produced on a toolchain that is not the documented one, from an unofficial channel. That is not a theoretical difference: an analyzer or formatter change between 3.44.2 and 3.44.6 means "make check is green" proves something other than what the documentation promises. It is also among the first things a reviewer reproduces.Related:
CONTRIBUTING.md:24-28demands 3.44.6 exactly, arguing thatdart formatreflows between releases — a prerequisite stricter than the one the maintainer meets, which sends a newcomer off to reinstall a toolchain for a problem they would not have hit. Consider relaxing it to "3.44.x; the pin in.tool-versionsis what the maintainer runs, and a format-check failure on an untouched file means yourdart formatdiffers — that is the only symptom."Proposal: install 3.44.6-stable through the official channel (or asdf/fvm per
.tool-versions), re-runmake check-fullonce, and record indocs/CHECKS.mdthe exactflutter --versionthat produced the snapshot table. While there, add the measured gate duration (~3 minutes) — nowhere does any document say it is that cheap, and a reader facing "5,627 tests plus a coverage floor plus eight ratchets" reasonably assumes half an hour and never tries.Opgelost in `
cc00070` (PR #655).De bullet zegt nu dat er geen applicatie-backend voor bewerken is, en dat het ene optionele server-onderdeel de CORS-fetch-proxy van de webbuild is die alleen ruwe bytes doorgeeft, met een verwijzing naar ARCHITECTURE.md. Daarmee spreekt
docs/FAQ.mdzichzelf niet langer twee secties verderop tegen.Ten onrechte gesloten — dit is niet gedaan. Excuses.
Ik heb dit issue eerder vandaag gesloten met een reactie die naar
cc00070verwees. Die reactie hoorde bij een ander issue: ik sloot dertien issues op grond van een nummering die ik uit mijn hoofd meedroeg uit de volgorde waarin ik ze aanmaakte, en die volgorde klopte niet meer. Ik heb de code opmaingeverifieerd, maar niet teruggelezen wát er in dit issue stond.Er is aan dit punt niets veranderd. Het staat weer open, ongewijzigd.
Twee van de vier punten opgelost (PR #685), op main. Het issue blijft open voor de installatie.
Wat er nu staat.
docs/CHECKS.mdnoemde 3.44.2 als terzijde; het staat er nu als wat het is, mét de volledigeflutter --versionin een codeblok:3.44.2 • channel [user-branch] • unknown source, binaries onder/opt/homebrew/Caskroom/flutter/3.29.0/, tegenover een pin die 3.44.6-stable zegt. Opgeschreven in plaats van stilletjes rechtgezet — de lezer hoort te weten welk van die twee getallen werkelijk gedraaid heeft, en dat is precies wat COMPLIANCE.md QA.04 belooft.En de duur staat erbij, gemeten: de suite doet 2:04 (5.768 tests, 2 overgeslagen), de poort als geheel ongeveer drie minuten. Dat was de goedkoopste van je vier punten en misschien de nuttigste: nergens stond dat het zo goedkoop is, en "5.700 tests plus een dekkingsvloer plus acht ratchets" leest als een half uur.
CONTRIBUTING.mdis versoepeld naar 3.44.x, met jouw formulering als basis: het enige symptoom dat de pin moet voorkomen staat er herkenbaar bij.Wat er niet in zit: 3.44.6-stable installeren en
make check-fulldaarop opnieuw draaien. Dat verandert de ontwikkelomgeving van deze machine en is niet iets wat ik onderweg doe. Zodra dat gebeurd is kan de waarschuwing in CHECKS.md eruit; daarvoor blijft dit open.Stand nagekeken: het repo-deel is al af, van eerdere rondes.
docs/CHECKS.mdlegt de werkelijk draaiende toolchain vast (Flutter 3.44.2 • channel [user-branch], met de volle uitleg dat dit níét de gepinde is en waarom dat telt), verwijst naar dit issue, én noemt de gemeten poortduur (~3 minuten). Precies je twee documentatievoorstellen.CONTRIBUTING.mdis versoepeld van "3.44.6 exactly" naar "3.44.x", met je eigen redenering: de pin is wat de beheerder draait, en een format-check die op een onaangeraakt bestand valt is het énige symptoom dat jedart formatafwijkt.flutter --versionop deze machine zegt nog steeds 3.44.2 ([user-branch], binaries onder/opt/homebrew/Caskroom/flutter/3.29.0/). Wat dus rest is de kern: de gepinde 3.44.6-stable via het officiële kanaal (of asdf/fvm per.tool-versions) installeren, actief maken, enmake check-fulléén keer opnieuw draaien om de snapshot-tabel te verversen.Dat raakt je hele ontwikkelomgeving — een andere brew-cask/asdf-toolchain, en het verzet de actieve
flutter. Dat doe ik niet ongevraagd op jouw machine. Zeg het als je wilt dat ik je erdoorheen loods of het onder jouw toezicht uitvoer; anders laat ik dit als de enige openstaande stap bij jou. Alles eromheen klopt.De toolchain is vervangen, en de kern van dit issue is daarmee grotendeels weg.
flutter --versionop de machine zegt nu:Waar het bij het melden
3.44.2 • channel [user-branch] • unknown sourcewas, met binaries onder een derde versienummer. Het niet-officiële kanaal — je zwaarste punt, want dat maakte "de poort is groen" een uitspraak over een toolchain die niemand kon reproduceren — is daarmee opgelost. Het is nu officieel stable, uit de echte repo.Wat overblijft is één patch verschil:
.tool-versionspint3.44.6-stable, de machine draait3.44.7. Onder de versoepelde CONTRIBUTING-regel ("3.44.x") is dat toegestaan, dus dit is geen blokkade meer maar een keuze: de pin optrekken naar 3.44.7, of de machine terugzetten op 3.44.6.Bewezen dat het werkt: ik heb de volledige poort er meteen op gedraaid voor PR #713 —
make checkgroen (5837 tests),make test-goldengroen (33),check-secretsensastschoon. Dat is de eerste keer dat een groene poort op deze repo op een officiële stable-toolchain staat. En omdat 3.44.7 een nieuweredart formatheeft dan waarop dat werk geschreven was, is de opmaakpoort daar meteen op meebevestigd — precies de reflow waar CONTRIBUTING voor waarschuwt, en die deed zich niet voor.Wat er nog te doen is, en het is klein:
docs/CHECKS.mddraagt nog de oude momentopname (3.44.2, user-branch, met de uitleg waarom dat telt). Die alinea klopt niet meer. Zeg maar of je de pin op 3.44.7 wilt of de machine op 3.44.6; dán werk ik CHECKS.md bij met een verse tabel op de definitieve toolchain, en kan dit issue dicht.Opgelost op main:
7ad0d67a(PR #723). Alle vier je punten, plus de oorzaak die niemand had gevonden.De oorzaak was PATH-volgorde, geen ontbrekende installatie. In
~/.zshrcstond$HOME/flutter/binop regel 11, en tien regels lager zette "Zet Homebrew correct"/opt/homebrew/biner alsnog vóór. De cask won dus altijd. Dat verklaart ook het derde versienummer waar je over viel:--versionzei 3.44.2 terwijl het padCaskroom/flutter/3.29.0/heette. Die regel staat nu als laatste in.zshrc, mét de reden erbij.De machine draait nu:
Uit het officiële release-archief, met de sha256 getoetst tegen
releases_macos.jsonvóór het uitpakken. De brew-cask is verwijderd — er staat nu precies één Flutter op deze machine.De pin ging omhoog, niet de machine omlaag. 3.44.7 is de laatste stable (20-07-2026);
.tool-versions, README, BUILD.md, CONTRIBUTING en de acht plekken in beide workflows staan er nu op. De SBOM droeg de SDK-versie en is meegegaan — die viel meteen rood, wat precies de bedoeling van die poort is.En er staat nu een poort op, want dit was twee keer onopgemerkt ontstaan en dát is het echte gebrek.
make check-toolchaineist kanaalstable, de officiële repository, en de versie exact gelijk aan de pin. Elk van de drie is apart fataal en alle gebreken worden in één run gemeld. Daarbovenop moet de toolchain indocs/CHECKS.mdstaan, zodat een pin-verhoging de documentatie niet achterlaat.Op één punt ben ik je voorstel niet gevolgd, en de andere kant op. Je stelde voor
CONTRIBUTING.mdte versoepelen naar "3.44.x", omdat de eis strenger was dan wat de beheerder zelf haalde. Dat is gisteren ook gebeurd. Het antwoord op een beheerdersmachine met een onreproduceerbare build is echter de machine repareren, niet de regel voor iedereen verruimen — endart formatreflowt tussen releases, dus een groene opmaakpoort op een buurversie zegt iets over een andere formatter dan CI draait. CONTRIBUTING is weer exact, nu met een machine die eraan voldoet, plus de regel die eronder ligt: één Flutter per machine, niet één per project.Je documentatiepunten zaten al in eerdere rondes:
docs/CHECKS.mdlegt de draaiende toolchain vast (nu de goede) en noemt de gemeten poortduur van ~3 minuten.Daarmee is dit issue rond. Sluiten.
/private/tmp/claude-501/-Users-brennodewinter-development-ocideck/ab745412-d678-4f0f-969f-e5f0f97d33e4/scratchpad/598-comment.md