Skip to content

feat(release): nightly-gated rc-cutting and promotion with a dispatch test vector#380

Merged
joshua-temple merged 1 commit into
mainfrom
feat/nightly-gated-release
Jun 26, 2026
Merged

feat(release): nightly-gated rc-cutting and promotion with a dispatch test vector#380
joshua-temple merged 1 commit into
mainfrom
feat/nightly-gated-release

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

What

Moves cascade's release cadence off per-merge and onto a green nightly, with an on-demand test vector.

  • Generator (opt-in): new release_trigger=dispatch manifest field makes the generated orchestrate omit its push: trigger. Example repos keep push (opt-in; only cascade sets it). TDD unit tests + e2e scenario 40; orchestrate regenerated (drift clean).
  • nightly-release.yaml: scheduled gate that runs only when code or requisite manifest files changed since the last final release (path-aware diff, manifest checked excluding the ci.state subtree); cuts the candidate rc; the staged fleet and auto-promote publish only on green. Exposes a workflow_dispatch vector with force (bypass the change-skip) and dry_run (cut a -dryrun.N prerelease that runs the full fleet but is frozen out of publication).
  • fleet-e2e: resolve gate broadened to accept -rc. OR -dryrun. so a dry-run runs the full staged fleet.
  • auto-promote: unchanged; its -rc.-only publish gate rejects -dryrun., so dry-run never publishes.

Notes

  • Dry-run cuts the -dryrun.N tag directly (the design's sanctioned equivalent) because cascade manage-release parses only -rc. versions; dry-run exercises cut to Release to fleet to promote-gate, the new wiring, not orchestrate's own jobs (unchanged).
  • Preserves the version-under-test + full-run.txt handoff, the CASCADE_STATE_TOKEN PAT trigger chain, and the W1 full_run guard.

Proof before trust: a force=true dry_run=true dispatch cuts a dryrun prerelease, runs all 11 repos staged, and auto-promote no-ops (no final release). Part of #373; closes #375.

… test vector

Move cascade's release cadence off per-merge and onto a green nightly. Add an opt-in release_trigger=dispatch manifest field so the generated orchestrate omits its push trigger (example repos keep push; only cascade opts in). Add nightly-release.yaml: a scheduled gate that runs only when code or requisite manifest files changed since the last final release, cuts the candidate rc, and lets the staged fleet and auto-promote publish only on green. It also exposes a workflow_dispatch vector with force (bypass the change-skip) and dry_run (cut a dryrun-tagged prerelease that runs the full fleet but is frozen out of publication by auto-promote's rc-only gate) so the whole path is testable on demand. Part of #373; closes #375.

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple joshua-temple force-pushed the feat/nightly-gated-release branch from aeda554 to 05248e5 Compare June 26, 2026 19:54
@joshua-temple joshua-temple merged commit ead75ad into main Jun 26, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

release: nightly-gated rc-cutting and promotion with change-skip and a dispatch vector

1 participant