fix(scans): de poort wordt niet meer rood om iets wat geen vondst is #805
No reviewers
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!805
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/scans-concurrency"
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?
Nazorg bij #778 / PR #799. De aanleiding is gemeten, niet vermoed.
Twee keer op één middag stond de scanpoort rood zonder dat er iets gevonden was (op
fc2d0a94en op deze eigen PR). De joblogs op de forge wijzen beide keren dezelfde oorzaak aan, een halve seconde na de checkout:Op precies die commits zijn
make check-secretsenmake sastlokaal groen, en op de huidige main ook. Het was dus de download van een gepinde scanner die omviel, niet de repo.Voor déze poort is dat de duurste faalvorm die er is: een rood beveiligingsvinkje dat geen vondst is, leert je het volgende rode vinkje ook weg te klikken. Dan staat de poort er nog wel, maar werkt hij niet meer.
Twee oorzaken, twee reparaties
failurete melden (concurrencyper ref). Afbreken kost hier niets, en dat is geen aanname over snelheid maar een eigenschap van de meting: beide historie-scans lezen de héle historie, dus de latere run dekt onverkort wat de afgebroken run zou hebben gezien. Bij een poort die alléén de wijziging bekijkt zou dit juist fout zijn, en dat staat als waarschuwing in de workflow.Dat Forgejo (16.0.1) de
concurrency-sleutel slikt is gecontroleerd en niet aangenomen — de taak verscheen op deze PR, en in het runnerlog staat een netteRESULT_CANCELLEDvoor een opzijgezette taak. Een niet-herkende sleutel had de scan stil kunnen uitschakelen.Een correctie op mezelf
In #801 schreef ik dat de scanners niet gecachet worden omdat drie minuten de staleness niet waard is. Dat was het zwakke argument. Het echte staat er nu: een cache-restore zou een sha256-geverifieerde download van een beveiligingsscanner vervangen door een artefact uit een eerdere run — en anders dan bij de toolchain in
linux-gate.yml, waarcheck-toolchainde herstelde boom opnieuw toetst, is er hier geen tweede controle. Cachen zou precies de eigenschap opeten waar #778 om begonnen is.make checkgroen.Twee keer op één middag stond de scanpoort rood zonder dat er iets gevonden was. De logs op de forge wijzen beide keren dezelfde oorzaak aan, een halve seconde na de checkout: curl: (22) The requested URL returned error: 504 [runner]: exitcode '22': failure Op precies die commits waren `make check-secrets` en `make sast` lokaal groen, en op de huidige main ook. Het was dus de download van een gepinde scanner die omviel, niet de repo. Dat is voor déze poort de duurste faalvorm die er is: een rood beveiligingsvinkje dat geen vondst is, leert je het volgende rode vinkje ook weg te klikken. Dan staat de poort er nog wel, maar werkt hij niet meer. Twee oorzaken, twee reparaties: * de downloads herhalen op 5xx met een oplopende wachttijd. Deze poort haalt drie scanners van het net bij élke PR en élke push; dat is even zo vaak een kans op een storing buiten deze repo. * een run die door een volgende opzij wordt gezet, breekt netjes af in plaats van zich als failure te melden (concurrency per ref). Afbreken kost hier niets, en dat is geen aanname over snelheid maar een eigenschap van de meting: beide historie-scans lezen de héle historie, dus de latere run dekt wat de afgebroken run zou hebben gezien. Bij een poort die alleen de wijziging bekijkt zou dit fout zijn. En een correctie op mezelf in CHECKS.md. Daar stond dat de scanners niet gecachet worden omdat drie minuten de staleness niet waard is. Dat was het zwakke argument. Het echte is dat een cache-restore een sha256-geverifieerde download *van een beveiligingsscanner* zou vervangen door een artefact uit een eerdere run — en anders dan bij de toolchain in linux-gate.yml is er geen check die het herstelde resultaat opnieuw toetst. Cachen zou hier precies de eigenschap opeten waar #778 om begonnen is. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>fix(scans): een opzijgezette run mag afbreken, niet rood wordento fix(scans): de poort wordt niet meer rood om iets wat geen vondst isDe vorige commit schreef `curl -fsSLo --retry 5 …`. Dat is stuk: `-o` neemt het volgende argument als bestandsnaam, dus curl schreef naar een bestand `--retry`, las `5` als URL (en probeerde 0.0.0.5 te bereiken), en dumpte de inhoud naar stdout. Het archief kwam daarmee nooit op `/tmp/$ARCHIVE` terecht en de sha256-controle erna zou op élke run omvallen — een poort die permanent rood staat om een reden die geen vondst is, precies wat deze tak juist wilde wegnemen. Gemeten in plaats van gelezen, in beide vormen: * `-fsSLo --retry 5 …` → geen bestand, `curl: (7) Failed to connect to 0.0.0.5`, inhoud op stdout; * `-fsSL --retry 5 … -o pad` → bestand aangemaakt, en de hele gitleaks-stap (download + manifest + `sha256sum -c`) loopt door tot "OK". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>66a2b65ff5dde666525c