Publish from release branch and promote to protected main through PRs - #7
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Feature work now reaches publication through the persistent
releasebranch, and every change tomainarrives through a promotion PR. Release descriptions use the exact tagged changelog section instead of GitHub's PR-merge-based generated notes.The implemented flow is:
release; run CI on Node 22 and 24, including manifest/changelog validation, lint, typecheck, tests, build, and isolated package installation. Ordinary branch pushes do not run CI.release, moveUnreleasednotes into its version section, and atomically push the version commit and tag.releaseand open or update its single PR intomain.Release readycheck verifies published assets, tagged code, and README without building another package.A manual
npm version 1.0.0and atomic push ofreleaseplus its tag uses the same publisher without another bump. Bothv1.0.0and1.0.0tags are supported; the following automatic patch becomes1.0.1. Publication does not depend on a bot-created tag triggering another workflow, and metadata commits cannot recursively start releases.Retries reuse the recorded PR/version/tag, repair draft uploads, and reuse already-published assets. They do not move tags, force-push branches, republish completed packages, or create duplicate README commits/PRs. Concurrent untagged code on
releaseblocks stale publication/promotion; merge features one at a time while a publication is active.docs/releases.md, README, installation guidance, and AGENTS.md document automatic/manual releases, protection, bot workflow approval, and recovery. The release branch has been created and this PR targets it. Main protection now requires a PR, current review, andRelease ready, including for administrators; direct/force pushes are blocked. Actions PR creation is enabled while default token permissions remain read-only.Validation:
npm run check: lint, typecheck, 139 passing tests, and build.npm run package:check: isolated archive installation, postinstall registration, plugin/TUI loading, and CLI.actionlintv1.7.12 passes for all three workflows;git diff --checkpasses.Merging this PR into
releasestarts the first automatic patch publication (currently 0.6.2 → 0.6.3) and then opens the promotion PR to main. Live publication itself awaits that merge.