feat(release): two-stage release - gate-green main promotes to a queued release branch #1126

Merged
coilysiren merged 1 commit from feat/two-stage-release into main 2026-07-12 06:19:21 +00:00
Owner

Implements ward#1117 for ward, matching the aos half (aos PR #475).

  • promote.yml (stage 1) - every main push re-runs vet/test/lint; green gates fast-forward release using CI_RELEASE_TOKEN (already set on this repo). Fails loud when the secret is missing.
  • release.yml (stage 2) - triggers on release pushes only, under concurrency: release-pipeline / cancel-in-progress: false (Forgejo v14+ queue): promoted shas release in sequence, never overlap-and-cancel. Adds workflow_dispatch for enqueue-miss recovery.
  • test.yml stays PR-only; race rationale updated in both mirror copies. check_workflow_mirror classifies promote.yml Forgejo-only.

Note: ward still has no TELEGRAM_* Actions secrets, so the failure-alert steps stay dead until ward exec sync-actions-secrets (ships in aos PR #475) runs once.

Closes #1117

Implements ward#1117 for ward, matching the aos half (aos PR #475). * **promote.yml (stage 1)** - every main push re-runs vet/test/lint; green gates fast-forward `release` using `CI_RELEASE_TOKEN` (already set on this repo). Fails loud when the secret is missing. * **release.yml (stage 2)** - triggers on `release` pushes only, under `concurrency: release-pipeline / cancel-in-progress: false` (Forgejo v14+ queue): promoted shas release in sequence, never overlap-and-cancel. Adds `workflow_dispatch` for enqueue-miss recovery. * test.yml stays PR-only; race rationale updated in both mirror copies. `check_workflow_mirror` classifies promote.yml Forgejo-only. Note: ward still has no TELEGRAM_* Actions secrets, so the failure-alert steps stay dead until `ward exec sync-actions-secrets` (ships in aos PR #475) runs once. Closes https://forgejo.coilysiren.me/coilyco-flight-deck/ward/issues/1117
feat(release): two-stage release - gate-green main promotes to a queued release branch
All checks were successful
test / test (pull_request) Successful in 34s
35f1262311
Implements ward#1117 for ward, matching the aos half:

* promote.yml (stage 1): every main push re-runs vet/test/lint and, only
  when green, fast-forwards `release` to that sha using CI_RELEASE_TOKEN
  (real-user PAT, so the push reliably enqueues release.yml). Fails loud
  when the secret is missing. Bursts collapse to the newest sha.
* release.yml (stage 2): triggers on `release` pushes only, under
  concurrency group release-pipeline with cancel-in-progress: false -
  promoted shas release in sequence, never overlap-and-cancel. Adds
  workflow_dispatch for enqueue-miss recovery. Alert conditions follow
  the branch move.
* test.yml stays PR-only; its race rationale now names promote.yml.
* check_workflow_mirror classifies promote.yml as Forgejo-only.

Refs #1117

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Cym37PsLtA61parAQyeAw
Sign in to join this conversation.
No description provided.