chore(ci): de berichtenbox-pin komt als PR in plaats van als melding - #326
Merged
Merged
Conversation
Dependabot kan de bump van de berichtenbox niet meer aanbieden. Hij houdt de op 3 september gesloten, niet-gemergde PR #271 vast als bestaande PR voor `minbzk/moza-poc` op versie `latest`, en omdat elke volgende bump van dat image opnieuw `latest` heet, matcht die vastlegging altijd. Zijn joblog eindigt dan op `Pull request #271 already exists`; `@dependabot recreate` en een handmatige run vanaf de Dependency graph lopen op hetzelfde vast, en de vastlegging is niet op te ruimen zolang die PR bestaat. Het vangnet ernaast plaatste bij een achterlopende pin een melding op elke openstaande PR. Hun main loopt door, dus die melding verscheen binnen enkele uren op PR's die niets met de demo te maken hebben — deze week op vijf tegelijk. Een eigen workflow biedt de bump nu aan zoals `fuzz-basis-pin.sh` dat voor het fuzz-basis-image doet: één PR op een vaste branch, elke run opnieuw op de huidige stand gezet, en gesloten zodra de pin buiten die PR om bij is. Mergen blijft een oordeel, want hun main draagt ook halfaf werk. De controle zelf verandert niet van oordeel: `pin-consistency.yml` blokkeert nog steeds een pin die niet te trekken is, en verliest alleen de comment-stap en `pull-requests: write`. `dependabot.yml` negeert dit image expliciet, zodat er geen ecosysteem-regel staat die stilzwijgend niets doet. De workflow vraagt de secret PROEFTUIN_PIN_TOKEN; tot die er is, faalt de dagelijkse run met een melding die precies dat zegt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PmbxFoxhA5ooJYi2NVj5Jh
Contributor
JaCoCo coverage
|
Een eigen secret vraagt een aanvraag bij MinBZK, en FUZZ_PIN_TOKEN draagt al precies de rechten die deze workflow nodig heeft: fine-grained op deze repo, Contents: write en Pull requests: write. De naam dekt die bredere rol niet meer en een rotatie raakt voortaan twee workflows; dat staat bij beide genoteerd. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PmbxFoxhA5ooJYi2NVj5Jh
fuzz-basis-pin.sh en proeftuin-pin-pr.sh deden hetzelfde werk: het token eisen, de eigen PR vinden zonder een fork-PR te raken, de branch als één commit bovenop main neerzetten, en de PR opruimen zodra hij niets meer verandert. Gemeten kwamen 41 niet-commentaarregels in beide scripts letterlijk voor, en 99 in de twee suites — vooral de gh- en git-stubs met hun faal-schakelaars. Die twee delen staan nu in pin-pr-lib.sh en pin-pr-teststubs.sh. Wat "verouderd" betekent en welke regelvorm vervangen wordt, blijft per pad: daar zit het oordeel, en dat hoort niet gedeeld te worden. Dit is het eerste gesourcete bestand onder .github/scripts/. shellcheck draait daar met -x en volgt `source`, dus de dekking blijft. Het harnas heet bewust niet test-*.sh: ci-scripts.yml draait elk bestand met die naam als suite en eist er een ASSERTIES-regel van. Beide suites toetsen onveranderd wat ze toetsten: 59 asserties voor het fuzz-pad, 87 voor de proeftuin. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PmbxFoxhA5ooJYi2NVj5Jh
De review bracht drie fouten aan het licht en een reeks gaten in de dekking. De workflow miste een branch-guard. Bij een `workflow_dispatch` vanaf een feature branch zou de force-push die hele branch op chore/proeftuin-pin zetten en als PR naar main aanbieden. fuzz-base-image.yml dekte dat al af; bij het overnemen van de gedeelde functie bleef de guard eromheen liggen. `grep -c ... || true` faalde open: exitcode 2 betekent "kon niet zoeken", en die ging als lege telling door, waarna de toets op precies één image-regel werd overgeslagen — juist wanneer er niets gemeten was. Beide pin-scripts onderscheiden die uitkomst nu. De vervanging sloeg de regel plat. Inspringing, aanhalingstekens en een toelichting achter de pin gingen verloren, en een geciteerde regel brak de bump hard terwijl proeftuin-image.sh die vorm juist ondersteunt. Alleen de referentie zelf wordt nu vervangen, via een tijdelijk bestand met een expliciete awk-controle in plaats van een redirect die compose.yaml al had afgekapt. Verder: `oncontroleerbaar` maakt de geplande run nu rood (op een PR blijft het een waarschuwing — daar is het een tijdelijke hik, hier het enige signaal), het opruimen van de pin-branch hangt niet meer aan een open PR, de aangeboden regel moet naar hetzelfde image wijzen als de pin die er staat, en een lege of afgekapte commit-sha uit de GitHub-API levert `oncontroleerbaar` in plaats van het geruststellende `ontbreekt`. Nieuwe dekking: test-proeftuin-pin.sh (139 asserties) voor het script dat de acht statussen bepaalt, met een contracttest die de aangeboden regel langs `regel_is_welgevormd` haalt; test-pin-pr-teststubs.sh (40) voor de gedeelde harness, waar één regel beide pin-suites betekenisloos kon maken zonder dat een telling daalde; en in de twee pin-suites de ontbrekende gevallen — commit-vorm, falende `pr close`/`pr edit`/`commit`, twee eigen PR's, fork bij een verouderde pin, meerregelige waarden, en de vormen van de image-regel. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PmbxFoxhA5ooJYi2NVj5Jh
ericwout-overheid
marked this pull request as ready for review
September 16, 2026 14:52
ericwout-overheid
enabled auto-merge (squash)
September 16, 2026 15:08
Han3008
approved these changes
Sep 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Waarom
De pin van de berichtenbox (
MinBZK/moza-poc) incompose.yamlwerd bijgehouden door Dependabot, met een melding op openstaande PR's als vangnet. Beide helften werken niet meer zoals bedoeld.Dependabot is structureel geblokkeerd. Uit de joblog van vandaag (runs
35069928159en35077434391):De job-definitie van diezelfde run draagt
"existing-pull-requests":[{"pr-number":271,"dependencies":[{"dependency-name":"minbzk/moza-poc","dependency-version":"latest",...}]}]met"ignore-conditions":[]. PR #271 is op 3 september gesloten zonder merge (de bump ging via #276). Omdat de "versie" van dit image altijdlatestheet, matcht die vastlegging elke volgende bump.@dependabot recreateantwoordt dat de branch verwijderd is, de knop "Check for updates" loopt op hetzelfde vast, er is geenignore-conditie om op te heffen, en een PR is niet te verwijderen.De melding stond in de weg. Hun main loopt door, dus hij verscheen binnen enkele uren op élke openstaande PR — deze week op vijf tegelijk, ook op PR's die niets met de demo te maken hebben.
Wat er verandert
.github/workflows/proeftuin-pin.yml(werkdagen23 14 * * 1-5+workflow_dispatch) en.github/scripts/proeftuin-pin-pr.sh: bijverouderdéén PR opchore/proeftuin-pin, elke run opnieuw op de huidige stand; bijoksluit die PR zichzelf en gaat de branch weg; bijpreview/ontbreekt/oncontroleerbaargebeurt er niets en blijft een openstaande PR staan;pin-onvindbaar/bron-weg/geen-pinmaken de run rood.pin-consistency.ymlverliest de comment-stap, demelding-opbouw enpull-requests: write; het statusoordeel blijft ongewijzigd.deploy.ymlgeeftchecks-pinsdaarmee alleen nogcontents: read.dependabot.ymlnegeertminbzk/moza-pocexpliciet, met de reden erbij.wijzigingsfilter.shdeelt de nieuwe workflow in bijGEEN_PREVIEW_WORKFLOWS.compose.yaml,docs/ontwikkelen.md,demo/environment/zad-demo/README.md,CLAUDE.md, plusdocs/plans/2026-09-16-proeftuin-pin-als-pr.md.Na de review
/review-prmet vier reviewers vond drie fouten, die hier zijn opgelost:workflow_dispatchmiste een branch-guard. Vanaf een feature branch zou de force-push die hele branch opchore/proeftuin-pinzetten en als PR naar main aanbieden.fuzz-base-image.ymldekte dat af; bij het overnemen van de gedeelde functie bleef de guard eromheen liggen.grep -c … || truefaalde open. Exitcode 2 ("kon niet zoeken") ging als lege telling door, waarna de toets op precies één image-regel werd overgeslagen — juist wanneer er niets gemeten was.proeftuin-image.shdie vorm ondersteunt. Alleen de referentie zelf wordt nu vervangen.Verder naar aanleiding van de review:
oncontroleerbaarmaakt de geplande run rood (op een PR blijft het een waarschuwing), het opruimen van de pin-branch hangt niet meer aan een open PR, de aangeboden regel moet naar hetzelfde image wijzen als de pin die er staat, en een lege of afgekapte commit-sha uit de GitHub-API levertoncontroleerbaarin plaats van het geruststellendeontbreekt.Op jouw aanwijzing géén melding meer op PR's, ook niet bij
preview. Het restrisico staat in het plan: wie een preview-pin zet ziet de waarschuwing alleen in de job-log.Verificatie
test-proeftuin-pin.sh(nieuw, 139 asserties) dekt het script dat de acht statussen bepaalt — het stuurt zowel de PR-blokkade als deze workflow aan en had geen enkele test. Inclusief een contracttest die de aangeboden regel langsregel_is_welgevormdhaalt, zodat drift tussen de twee scripts opvalt.test-pin-pr-teststubs.sh(nieuw, 40 asserties) legt de gedeelde harness vast. Zonder die suite maakte één regel (bevat() { ok "$1"; }) beide pin-suites betekenisloos terwijl elke telling op zijn ondergrens bleef.test-proeftuin-pin-pr.sh: 87 → 128 asserties,test-fuzz-basis-pin.sh: 59 → 74. Nieuw gedekt: de volledige commit-vorm, falendepr close/pr edit/commit, twee eigen PR's, een fork-PR bij een verouderde pin, meerregelige waarden, een verhuisd image-pad, en de vormen van de image-regel (toelichting erachter, aanhalingstekens, afwijkende inspringing).shellcheck -x -S warningschoon; alle gewijzigde YAML parseert.ci-scripts.ymlvergelijkt de geteldeOK:-regels nu met wat de suite zélf rapporteert in plaats van met de ondergrens.Nodig vóór dit werkt
FUZZ_PIN_TOKEN: fine-grained op deze repo,Contents: writeenPull requests: write— precies wat nodig is. NietGITHUB_TOKEN, want een PR daarvan krijgt zijn verplichte checks nooit. De naam dekt de bredere rol niet meer, en een rotatie raakt voortaan ookfuzz-base-image.yml; dat staat bij beide workflows genoteerd.workflow_dispatchom te zien dat de PR verschijnt.<!-- proeftuin-pin -->-meldingen op open PR's opruimen; de stap die ze wiste verdwijnt hiermee.🤖 Generated with Claude Code
https://claude.ai/code/session_01PmbxFoxhA5ooJYi2NVj5Jh