feat(release): release_auto robuuster — pre-flight, --resume, webdemo-ontkoppeling (1/3) #1313

Merged
brenno merged 2 commits from harden/release-auto-robuustheid into main 2026-08-07 00:23:19 +00:00
Owner

Deel 1/3 van het releaseketen-verhardingsplan (na het v0.3.6-incident: windows-ophalen faalde → publiceren skipped → release_auto Fase 3 struikelde op curl 404 vóór make deploy-web, dus de webdemo bleef op de oude versie).

Deze PR raakt alleen scripts/release_auto.sh (release-tooling) + test + docs.

Maatregelen

  • #7 pre-flight — ná het wachtwoord, vóór elke mutatie: forge-token, mirror-remote, deploy-host (ssh) en een minisign proef-tekening. Faalt vroeg i.p.v. pas ná de onherroepelijke tag-push.
  • #9 --resume vX.Y.Z — een al-gepushte tag maakt alleen Fase 3 af (pre-flight + deploy-web + tekenen), zonder fase 1/2 en zonder her-tag. De ontworpen herstelroute wanneer de keten ná de tag struikelt.
  • #10 deploy-web ontkoppeld — de webdemo gaat nu eerst in Fase 3 (hangt alleen aan de web-bundel), plus een begrensde wacht op SHA256SUMS i.p.v. direct 404.
  • ERR-trap + fase 2-faalmelding wijzen nu naar --resume.

Toetsing

  • bash -n + shellcheck -x schoon.
  • 2 nieuwe hermetische tests (arg-validatie), volledige release_auto_version_test.dart groen (5/5).
  • dart format + dart analyze schoon; --print-version en --help handmatig geverifieerd.

Nog volgend (aparte PR's)

  • PR 2release.yml + GitHub-workflow_dispatch (#1/#2/#3/#5/#6). Vergt een GitHub-PAT als Forgejo-secret.
  • PR 3 — glue-jobs op het voorgebakken CI-image (#11).

🤖 Generated with Claude Code

Deel **1/3** van het releaseketen-verhardingsplan (na het v0.3.6-incident: `windows-ophalen` faalde → `publiceren` skipped → `release_auto` Fase 3 struikelde op `curl 404` vóór `make deploy-web`, dus de webdemo bleef op de oude versie). Deze PR raakt alleen `scripts/release_auto.sh` (release-tooling) + test + docs. ### Maatregelen - **#7 pre-flight** — ná het wachtwoord, vóór elke mutatie: forge-token, `mirror`-remote, deploy-host (ssh) en een minisign proef-tekening. Faalt vroeg i.p.v. pas ná de onherroepelijke tag-push. - **#9 `--resume vX.Y.Z`** — een al-gepushte tag maakt alleen Fase 3 af (pre-flight + deploy-web + tekenen), zonder fase 1/2 en zonder her-tag. De ontworpen herstelroute wanneer de keten ná de tag struikelt. - **#10 deploy-web ontkoppeld** — de webdemo gaat nu **eerst** in Fase 3 (hangt alleen aan de web-bundel), plus een begrensde wacht op `SHA256SUMS` i.p.v. direct 404. - ERR-trap + fase 2-faalmelding wijzen nu naar `--resume`. ### Toetsing - `bash -n` + `shellcheck -x` schoon. - 2 nieuwe hermetische tests (arg-validatie), volledige `release_auto_version_test.dart` groen (5/5). - `dart format` + `dart analyze` schoon; `--print-version` en `--help` handmatig geverifieerd. ### Nog volgend (aparte PR's) - **PR 2** — `release.yml` + GitHub-`workflow_dispatch` (#1/#2/#3/#5/#6). Vergt een GitHub-PAT als Forgejo-secret. - **PR 3** — glue-jobs op het voorgebakken CI-image (#11). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Verhardt de onbewaakte releaseketen na het v0.3.6-incident (windows-ophalen
faalde → publiceren skipped → Fase 3 struikelde op curl 404 vóór make deploy-web,
zodat de webdemo op de oude versie bleef):

- #7 pre-flight ná het wachtwoord, vóór elke mutatie: forge-token, mirror-remote,
  deploy-host (ssh) en een minisign proef-tekening. Faalt vroeg i.p.v. pas ná de
  onherroepelijke tag-push.
- #9 --resume vX.Y.Z: een al-gepushte tag maakt alleen Fase 3 af (pre-flight +
  deploy-web + tekenen), zonder fase 1/2 en zonder her-tag. De ontworpen
  herstelroute wanneer de keten ná de tag struikelt.
- #10 deploy-web ontkoppeld: de webdemo gaat nu EERST in Fase 3 (hangt alleen aan
  de web-bundel), zodat een teken- of platformfout de demo nooit op de oude
  versie laat staan. Plus een begrensde wacht op SHA256SUMS i.p.v. direct 404.
- ERR-trap en de fase 2-faalmelding wijzen nu naar --resume i.p.v. alleen "snijd
  de volgende tag".

Fase 3 is nu een gedeelde functie phase3(), aangeroepen door de normale keten en
--resume. Deel 1/3 van het releaseketen-verhardingsplan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
test(release): dek --resume-argumentvalidatie; docs voor pre-flight/resume/Fase 3
All checks were successful
scans / scans (pull_request) Successful in 2m30s
static-gate / static-gate (pull_request) Successful in 9m22s
582d0347e3
- Twee hermetische tests: --resume zonder tag weigert, en een losse tag zonder
  --resume weigert (typfout-vangnet). Blijven git-/netwerkvrij zoals de bestaande
  --print-version-toetsen.
- docs/BUILD.md: pre-flight beschreven, Fase 3-volgorde omgedraaid (deploy-web
  eerst), en de fail-safe verwijst naar --resume vX.Y.Z.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 6c87870a39 into main 2026-08-07 00:23:19 +00:00
brenno deleted branch harden/release-auto-robuustheid 2026-08-07 00:23:21 +00:00
Sign in to join this conversation.
No description provided.