fix(release): herstartbare release_auto.sh + royale poort-wachttijd #1361

Merged
brenno merged 1 commit from ci/release-auto-restartable into main 2026-08-08 07:16:41 +00:00
Owner

De 0.4.0-release liep vast op een time-out in fase 2 (de poort-wacht), niet op een echte fout — de poort werd daarna gewoon groen. Twee reparaties:

1. De time-out (de directe fout). wait_gate wachtte 90×20s = 30 min op de gecombineerde poortstatus, maar sinds #1347 draait linux-gate de volledige suite per-PR op een capacity-1 serial-runner (~27 min, langer als er iets vóór staat). De gecombineerde status wordt pas groen als álle drie de checks groen zijn, dus 30 min was structureel te krap. Nu: OCIDECK_GATE_TIMEOUT_MIN (default 75 min) mét voortgang — het toont welke context nog loopt, zodat "wachten" niet als "vastgelopen" leest.

2. Herstartbaar. --resume vX.Y.Z deed voorheen alléén fase 3 en eiste dat de tag al gepusht was. Nu hervat het vanaf elk punt: het leest wat er op de forge staat (tag? gemergede PR? open PR? branch?) en doet alleen wat resteert — de dure fase 1 (bouwen/notariseren) wordt nooit overgedaan. Fase 2 is opgesplitst in idempotente helpers.

Details:

  • PR wordt op titel gevonden (overleeft de branch-verwijdering na merge; head.ref wordt dan refs/pull/N/head).
  • Tag komt op de exacte merge-commit (merge_commit_sha), niet op origin/main dat verder kan staan.
  • Merge gebruikt nu head_commit_id (schone 200, nooit een stale head).
  • Een verse run baseert de bump op origin/main, zodat opnieuw draaien vanaf een achtergebleven release-branch de versie niet fout berekent. --print-version blijft hermetisch (guard-test ongemoeid).
  • docs/BUILD.md bijgewerkt; stale "via expect" → stdin-pipe gecorrigeerd.

Getoetst: bash -n, shellcheck schoon, test/release_auto_version_test.dart groen (5/5), en de resume-detectie tegen de echte forge-API (vindt de gemergede v0.4.0-PR #1352 met de juiste merge-commit).

🤖 Generated with Claude Code

De 0.4.0-release liep vast op een time-out in fase 2 (de poort-wacht), niet op een echte fout — de poort werd daarna gewoon groen. Twee reparaties: **1. De time-out (de directe fout).** `wait_gate` wachtte 90×20s = 30 min op de gecombineerde poortstatus, maar sinds #1347 draait `linux-gate` de volledige suite per-PR op een capacity-1 serial-runner (~27 min, langer als er iets vóór staat). De gecombineerde status wordt pas groen als álle drie de checks groen zijn, dus 30 min was structureel te krap. Nu: `OCIDECK_GATE_TIMEOUT_MIN` (default **75 min**) mét voortgang — het toont welke context nog loopt, zodat "wachten" niet als "vastgelopen" leest. **2. Herstartbaar.** `--resume vX.Y.Z` deed voorheen alléén fase 3 en eiste dat de tag al gepusht was. Nu hervat het vanaf **elk** punt: het leest wat er op de forge staat (tag? gemergede PR? open PR? branch?) en doet alleen wat resteert — de dure fase 1 (bouwen/notariseren) wordt nooit overgedaan. Fase 2 is opgesplitst in idempotente helpers. Details: - PR wordt op **titel** gevonden (overleeft de branch-verwijdering na merge; `head.ref` wordt dan `refs/pull/N/head`). - Tag komt op de **exacte merge-commit** (`merge_commit_sha`), niet op `origin/main` dat verder kan staan. - Merge gebruikt nu `head_commit_id` (schone 200, nooit een stale head). - Een verse run baseert de bump op `origin/main`, zodat opnieuw draaien vanaf een achtergebleven release-branch de versie niet fout berekent. `--print-version` blijft hermetisch (guard-test ongemoeid). - `docs/BUILD.md` bijgewerkt; stale "via expect" → stdin-pipe gecorrigeerd. Getoetst: `bash -n`, `shellcheck` schoon, `test/release_auto_version_test.dart` groen (5/5), en de resume-detectie tegen de echte forge-API (vindt de gemergede v0.4.0-PR #1352 met de juiste merge-commit). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(release): herstartbare release_auto.sh + royale poort-wachttijd
All checks were successful
scans / scans (pull_request) Successful in 1m36s
static-gate / static-gate (pull_request) Successful in 3m53s
5bf2236ed4
De onbewaakte release-keten liep vast op een time-out: de fase-2 poort-wacht was
30 min, maar linux-gate draait sinds #1347 per-PR de volledige suite op een
capacity-1 serial-runner (~27 min, langer in de wachtrij) — precies waar v0.4.0
op strandde terwijl de poort daarna gewoon groen werd.

- wait_gate: begroting naar OCIDECK_GATE_TIMEOUT_MIN (default 75 min) mét
  voortgang (welke context nog loopt) i.p.v. stil aftellen en opgeven.
- --resume vX.Y.Z hervat nu vanaf ELK punt, niet alleen na de tag-push: het leest
  wat er op de forge staat (tag / gemergede PR / open PR / branch) en doet alleen
  de rest; fase 1 (bouwen/notariseren) wordt niet overgedaan. Fase 2 is opgesplitst
  in idempotente helpers. De PR wordt op TITEL gevonden (overleeft de
  branch-verwijdering na merge) en de tag komt op de exacte merge-commit
  (merge_commit_sha, niet origin/main).
- merge gebruikt nu head_commit_id (schone 200, nooit een stale head).
- verse run baseert de bump op origin/main, zodat opnieuw draaien vanaf een
  achtergebleven release-branch de versie niet fout berekent; --print-version
  blijft hermetisch (guard-test ongemoeid).
- docs/BUILD.md bijgewerkt; stale 'via expect' → stdin-pipe gecorrigeerd.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit ea24cdbef4 into main 2026-08-08 07:16:41 +00:00
brenno deleted branch ci/release-auto-restartable 2026-08-08 07:16:41 +00:00
Sign in to join this conversation.
No description provided.