managing-archestra-releases
GitHub管理 Archestra 版本发布,包括回修、稳定版切分及分支配置。通过 git 和 GitHub API 执行发布流程,处理预检、合并队列监控及状态验证,确保发布合规与安全。
Trigger Scenarios
Install
npx skills add archestra-ai/archestra --skill managing-archestra-releases -g -y
SKILL.md
Frontmatter
{
"name": "managing-archestra-releases",
"description": "Runs rolling beta releases, stable patches, and complete stable-line cutovers. Use when backporting fixes, cutting or retiring release branches, configuring release protections, testing artifacts, recovering failed runs, or approving releases."
}
Managing Archestra Releases
Always read platform/dev/RELEASE.md first. It is the authoritative release checklist.
Do not assume release/1.3 is always the active branch. Check current branches, tags, and settings before acting.
This is an execution skill, not only a guide. Use git, gh, and the GitHub API to complete every applicable step, create the configuration PRs, monitor them through the merge queue, and verify the resulting state. Do not hand routine steps back to the operator.
Publication Paths
- Beta (
main): Merging a release PR onmainautomatically publishes a beta release. It does not move the Dockerlatesttag. - Stable (
release/X.Y): Merging a release PR onrelease/X.Ybuilds stable artifacts. Publication pauses for manualstable-releaseenvironment approval. Once approved, the workflow publishes the release and updateslatest.
Starting a new stable branch adds configuration steps. It uses the same stable publication pipeline.
Backporting Fixes
- Land fixes on
mainfirst. Fixes onmainship automatically in the next beta release. - Backport fixes to the active stable branch (
release/X.Y):- Branch from
origin/release/X.Y. - Use
git cherry-pick -x <main-commit-sha>. - Include only necessary bug fixes. Do not include features, refactors, or schema changes.
- Branch from
- If an unreleased candidate branch also needs the fix, open a separate backport PR targeting that branch.
- Never merge
maindirectly intorelease/X.Yor candidate branches.
Cutting A New Stable Line End To End
Derive X.Y, the previous stable line, and the next beta line from live branches, tags, releases, and Release Please manifests. Never substitute a remembered version.
1. Preflight And Stable-Cut Approval
- Fetch branches and tags. Confirm the selected
platform-vX.Y.0-beta.Nis a published prerelease, points to a commit onmain, and passed the agreed qualification. - Reconcile, rather than overwrite, any existing
release/X.Y,platform-vX.Y.0, draft release, release PR, exact queue ruleset, or candidate workflow. Fetch every relevant ref and read the release, PR, workflow, ruleset, and environment state. Resume only when each existing object belongs to this selected beta commit and the recorded stage has all of its required protections and artifacts; never recreate an existing branch, tag, release, or PR. A missing, stale, or contradictory object is a recovery stop, not a reason to delete or replace it. - Confirm releases are not frozen, the current stable release is older than
X.Y.0, and no previous-line release workflow is running, queued, or waiting for approval. A busy or stale previous-line candidate must be resolved under the recovery rules before a new cut can proceed. - Inspect the live
release/*core ruleset, the exact-branch merge-queue ruleset for the active stable line, and thestable-releaseenvironment. Fail closed if they cannot be read. Before a new branch is created, the core ruleset must be active and have its normaldo_not_enforce_on_createvalue; an unexpected pre-existing exemption is ruleset drift and must not be reset without its saved original payload. - Present one approval containing the beta tag, new stable version and branch, previous line that will become EOL, planned repository-setting changes, the detected resume stage (if any), and the PRs that will be created and merged. Do not create the branch, modify settings, or merge a release PR until the operator explicitly authorizes this stable cut.
That authorization covers the mechanical preparation and release-PR merge described below. It does not replace the independent stable-release environment approval after artifact qualification.
2. Create And Protect The Branch
- Inspect
do_not_enforce_on_createin therelease/*core ruleset's required checks. If it is false and the release automation's bypass identity cannot create the branch, update only that field to true under the stable-cut authorization. Preserve the complete original ruleset payload for restoration and arrange cleanup before making the update. - Create
release/X.Yat the exact verified beta tag and push it. Never create it frommain. Restore the original core ruleset and read it back whether creation succeeds, fails, or the process is interrupted; do not leave branch creation exempted. If creation or restoration fails, stop after the readback. Do not create the queue ruleset or any PR until restoration is verified. - Confirm the repository's active
release/*core ruleset applies to the new branch and matchesmainfor pull requests, required checks, deletion, non-fast-forward protection, and bypass actors. - Before any PR can merge, create an exact-branch merge-queue ruleset for
release/X.Y. GitHub rejects merge queues on wildcard rulesets. Clone the live active stable line's queue rule and bypass actors through the rulesets API, changing only its name and included ref. Read the created ruleset back and compare its queue parameters withmain. - Verify
stable-releasehas required reviewers,prevent_self_review: true, andcan_admins_bypass: false. Configure these fields through the environments API as part of the authorized setting changes; GitHub acceptscan_admins_bypassin the update payload although its public REST schema omits the field. If GitHub rejects it, change the environment setting with browser automation instead of asking the operator to click through the UI. Read the environment back and never continue with a bypassable or unprotected stable environment. - Replace wildcard deployment access with exact custom branch policies. During candidate qualification, allow only the current stable branch and
release/X.Y; after cutover, allow onlyrelease/X.Y.
Do not hard-code ruleset IDs, check names, integration IDs, reviewer IDs, or queue parameters in the skill. Discover and clone current settings so future changes on main are preserved. If no unambiguous current setting or reviewer team can be derived, include that choice in the stable-cut approval instead of guessing.
3. Prepare And Cut X.Y.0
- Branch from
release/X.Yand changepackages.platformin.github/release-please/release-please-config.jsonto:versioning: always-bump-patchprerelease: false- remove
prerelease-type - temporary
release-as: X.Y.0 draft: true
- Open the release-configuration PR against
release/X.Y, monitor its required checks, and merge it through the new queue. - Inventory open PRs against the previous stable line. Recreate every still-required fix that already landed on
mainas acherry-pick -xbackport torelease/X.Yand merge it before the initial release. Wait for Release Please to update the release PR. - Wait for Release Please to create or update the
X.Y.0PR. Verify its base, manifest version, changelog, and release configuration, then merge it through the queue under the stable-cut authorization. - Wait for every build job. Download and qualify the exact
release-helm-chartandrelease-image-*artifacts. Never qualify retagged beta artifacts.
4. Commit The Cutover And Publish
Only continue after the candidate artifacts pass qualification. The old line stays supported until this point.
- Confirm no previous-line release workflow is running or waiting for approval. Close its remaining PRs with an EOL explanation, including its generated release PR.
- Remove
release/A.Bfromstable-releasedeployment policies. Delete its exact merge-queue ruleset, then create an active exact-branch EOL ruleset with anupdaterule, no bypass actors, andupdate_allows_fetch_and_merge: false. Keep the branch, tags, releases, images, and charts for reproducibility. - Read everything back. Verify
release/A.Brejects all updates,release/X.Yhas its queue, and onlyrelease/X.Ycan enterstable-release. - A different eligible maintainer approves the waiting
stable-releasedeployment after reviewing the sanitized test summary. Confirm publication completed: the GitHub release is stable and latest, the chart exists, every image version exists, and alllatestimage tags resolve to the approved digests. - Open and queue a PR on
release/X.Ythat removes only the temporaryrelease-as. Leavealways-bump-patch,prerelease: false, anddraft: true. Future fixes now produceX.Y.1,X.Y.2, and so on. - Report that
X.Yis the sole supported stable line.
5. Start The Next Beta Line
The next beta is a separate consequential release. Stop and present a second approval with the intended X.(Y+1).0-beta.1 version, current main SHA, configuration PR, and generated release PR. Do not change main or merge the beta release PR until explicitly authorized.
After authorization:
- Open a PR to
mainsettingpackages.platformtoversioning: prerelease,prerelease: true,prerelease-type: beta, temporaryrelease-as: X.(Y+1).0-beta.1, anddraft: true. - Merge it through the
mainqueue. Wait for and verify the generatedX.(Y+1).0-beta.1release PR, then merge it through the queue. - Confirm the beta release and versioned artifacts published and Docker
latestdid not move. - Open and queue a cleanup PR on
mainremoving onlyrelease-as. Confirm Release Please resumes its rolling beta PR for.2and later.
The initial migration from stable 1.3.x started 1.4.0-beta.1; do not use that historical exception when deriving later versions.
Safety And Recovery Rules
- Testing gate: Verify the exact saved build artifacts (
release-helm-chartandrelease-image-*) before approvingstable-release. - Workflow owns publication: The GitHub Actions workflow handles container image pushes, chart publication, and git tags. Never push release images, publish Helm charts, or update
latesttags manually. - Failed build: Re-run failed jobs in the same workflow run.
- Failed qualification: Before the old-line lock, cancel the run and delete the GitHub draft release with authorization, but keep its tag. Fix on
main, backport torelease/X.Y, set temporaryrelease-asto the next patch (for example,X.Y.1after a rejectedX.Y.0), merge the new release PR, and qualify the new artifacts. Never reuse a failed version number. - Cutover failure before publication: If the old line was locked but the new deployment was rejected or cannot begin publication, stop. With explicit recovery authorization, cancel the new run, delete its blocking draft but keep its tag, restore the old exact deployment policy and merge queue, and remove its EOL rule before accepting old-line changes. When the cut resumes, fix and backport the cause and use the next patch version; never recreate the tagged candidate.
- Partial publication: Keep the draft release and tag. Re-run failed jobs in the original run using the saved artifacts. Never rebuild already published versions or move
latestbackward. - Fresh approval: A rerun or new candidate needs fresh artifact verification and explicit authorization before any new
stable-releaseapproval. - Explicit authorization: Stable and next-beta cut approvals may cover their stated branch pushes, configuration PRs, release PR merges, and repository-setting changes. Approving release environments, deleting draft releases, and any action outside the approved plan still require explicit authorization.
- No hidden handoffs: Create PRs, queue them, monitor checks, configure rules, and verify releases directly. Ask a human only for the two cut approvals, the independent stable-environment approval, a reviewer identity that cannot be derived safely, or an exceptional recovery decision.
Version History
- 0de0287 Current 2026-09-08 19:41


