De linux-gate: één nachtrun, de claims rechtgezet, en een poort die de volgende ziet verrotten #1944
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!1944
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/poort-gedateerde-beweringen"
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?
Samenvatting
Een bewering over een gemeten grootheid verrot terwijl de boom stilstaat.
docs/CHECKS.mdbeloofde op twee plekken dat een rodemainzich ruim binnen de tijd meldt die het werkelijk kost; gemeten op 2026-09-03 was de mediaan van merge tot oordeel 54 minuten. De claim was juist toen hij werd opgeschreven en stapte rond 2026-08-23 omhoog zonder dat er iets aan die werkstroom veranderde. Geen poort zag het, en geen poort kón het zien: er stond geen datum bij.Dat is een eigen klasse. De poorten op de code zijn sterk, en
docs_claims_match_code_test.darthoudt de getallen vast die een constante achter zich hebben. Een looptijd heeft die niet — dit is de documentatie-tegenhanger vancheck_reference_data.dart: dezelfde vraag, gesteld over onze eigen metingen in plaats van over andermans releases.Twee helften, en de tweede houdt de eerste eerlijk
Het register (
gemetenBeweringen) noemt per levende meting waar ze staat, wat gemeten is, wanneer, en waarmee je hermeet. Elk anker draagt de meetdatum, zodat het document en het register niet uiteen kunnen lopen op precies het getal waar het om gaat. Verdwijnt een anker, dan is de bewering herschreven zonder dat het register meebewoog — dat is een faal, geen stilte.De basislijn (
looptijdBasislijn) telt élke looptijduitdrukking indocs/CHECKS.md,CONTRIBUTING.mdendocs/BUILD.md. Zonder die helft bewaakt het register alleen wat iemand eraan heeft toegevoegd, en is de volgende ongedateerde belofte net zo onzichtbaar als de vorige. Komt er een uitdrukking bij, dan valt de poort om met een keuze: meet hem en registreer hem, of zet hem op de basislijn omdat het geschiedenis is.Verreweg het meeste dat er nu in staat is geschiedenis (
#790 zette hem uit omdat hij 17,5 minuten kostte), en dat hoeft niet hermeten te worden. De basislijn is een teller, geen dekking.Twee momenten
De structurele helft is van de boom af te lezen en zit in
STATIC_GATES— dus inmake check,check-no-coverageen de statische poort per PR.De houdbaarheid hoort daar juist niet: die verandert van uitkomst zonder dat er een commit aan te pas komt, en draait dagelijks in
time-degrading-checks.ymlnaast de CVE's, licenties, pins en referentiedata. Zat ze in de PR-poort, dan viel op een dag een willekeurige PR om op een bewering waar de indiener niets mee te maken heeft — en dan wordt de poort uitgezet in plaats van gevolgd.Twee dingen die anders stil verkeerd gaan
Woordvormen tellen mee. De claim die dit veroorzaakte droeg geen cijfer. Een patroon dat alleen op
\d+ minuteslet had hem nooit gezien, dushalf an hour,about an hour,an hour or soena few minutesstaan met naam in het patroon.Tekst tussen backticks telt niet mee. Een uitdrukking in code-opmaak is een geciteerd woord, geen belofte — de documentatie van deze poort noemt de patronen zelf. Zonder die regel valt de poort om op zijn eigen beschrijving. Dezelfde afweging als in
check_comment_language.dart, dat om dezelfde reden backticks laat vallen.Wat hij niet ziet, hardop
De basislijn is een multiset van uitdrukkingen, geen plaatsbepaling. Wie in hetzelfde bestand één
22 minutesweghaalt en er elders een neerzet, komt er stil doorheen. Dat is de prijs van een teller die niet op regelnummers vastzit — die zou bij elke herwikkeling van een alinea omvallen en binnen een week uitgezet worden. De grens staat in de kop van het gereedschap én in CHECKS.md, want een poort waarvan niemand de blinde vlek kent wordt voor meer bewijs gehouden dan hij levert.Beweringen zonder tijdseenheid (dekkingspercentages, testaantallen) blijven bij
docs_claims_match_code_test.dart; die hebben wél een constante in de code.Over de frictie
In 30 dagen raakten 63 commits die drie bestanden, maar slechts 11 diffregels een looptijduitdrukking. De basislijn schudt dus een handvol keer per maand — telkens op het moment dat je er iemand naar wilt laten kijken.
Testplan
make check-staticgroen (exitcode 0, zonder pipe gemeten), met de nieuwe poort op zijn plek in de ketenflutter test test/check_dated_claims_tool_test.dart test/docs_claims_match_code_test.dart test/docs_registration_test.dart— 32 tests groenflutter analyze --fatal-infosschoon op beide nieuwe bestanden8 minutesaan CONTRIBUTING.md → exitcode 1 met de uitdrukking bij naam; hersteld → exitcode 0make checkniet volledig gedraaid: de wijziging raakt geenlib/, en de volledige suite is op deze runner de duurste stap. De drie tests die deze wijziging kunnen breken zijn wel gedraaid.Waarom dit één PR is en niet twee
Dit begon als #1941 (alleen de twee verrotte claims rechtzetten) met deze poort erachteraan. #1941 was groen, maar liep bij het mergen op
The head branch is behind the base branch— en een rebase betekent een volledige nieuwe CI-ronde.Op een runner die op dit moment de flessenhals is, zijn drie CI-rondes voor drie commits die elkaar toch al opvolgen niet te verdedigen. De commits blijven apart in de historie: eerst de correctie, dan het gereedschap, dan de bedrading. #1941 is gesloten ten gunste van deze.
De looptijdclaim rechtgezet, en een poort die de volgende ziet verrottento De linux-gate: één nachtrun, de claims rechtgezet, en een poort die de volgende ziet verrottenTwee commits erbij, na akkoord op de cadencevraag.
ci(linux-gate)— de poort draait niet meer oppush: [main]maar op eenscheduleom 02:11 UTC, plusworkflow_dispatch. Van ~6,5 uur runnertijd per dag naar ~50 minuten. De onderbouwing staat in de kop van de werkstroom: over 24 dagen leverde de per-merge-run nul productregressies op, één echte rodemaindie ook op macOS en Windows faalde (dus lokaal net zo goed te vangen), en twaalf alarmen over tijdgokkende tests — een klasse die #1911 inmiddels bij de bron stopt. Wat we inleveren is de toewijzing van rood aan één merge; de detectie blijft.docs— vier plekken in CHECKS.md beschreven de oude trigger, plus README.md, COMPLIANCE.md en security-insights.yml. Die laatste twee zijn verantwoording aan derden. Eén alinea die nu weg is was al fout vóór deze PR: CHECKS.md beloofde dat snelle merges elkaars run opzij zetten, terwijlcancel-in-progresssinds #1890 opfalsestaat — ze stapelden juist op, drie tegelijk vanochtend.De poort uit deze tak ving zijn eigen documentatiewijziging met zes afwijkingen, waaronder een "29" waar ik de eenheid had laten vallen. Basislijn en register zijn bijgewerkt in dezelfde commit als de tekst die ze verschoof.
make check-staticgroen (exitcode 0), 57 tests groen inclusiefsecurity_insights,compliance_attestation, de README-linkcontroles enweb_gate_triggers.