Skip to content

Publish from release branch and promote to protected main through PRs - #7

Merged
d3cker merged 2 commits into
releasefrom
codex/release-notes-and-download-link
Sep 13, 2026
Merged

Publish from release branch and promote to protected main through PRs#7
d3cker merged 2 commits into
releasefrom
codex/release-notes-and-download-link

Conversation

@d3cker

@d3cker d3cker commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Feature work now reaches publication through the persistent release branch, and every change to main arrives 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:

  1. Open or update a feature PR into 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.
  2. After the maintainer merges the PR, create the next patch version on release, move Unreleased notes into its version section, and atomically push the version commit and tag.
  3. Build from the tag, verify the archive, upload the archive and checksum to a draft, and publish it with exact version notes.
  4. After confirmed publication, commit the versioned README link on release and open or update its single PR into main.
  5. Review and merge the promotion PR. Its lightweight Release ready check verifies published assets, tagged code, and README without building another package.

A manual npm version 1.0.0 and atomic push of release plus its tag uses the same publisher without another bump. Both v1.0.0 and 1.0.0 tags are supported; the following automatic patch becomes 1.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 release blocks 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, and Release 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.
  • Integration tests use real local Git repositories with a remote hook rejecting every push to main. They cover automatic patch, manual 1.0.0 followed by 1.0.1, interrupted packaging/upload/publication/PR creation, retry idempotence, and unpublished code rejection.
  • npm run package:check: isolated archive installation, postinstall registration, plugin/TUI loading, and CLI.
  • actionlint v1.7.12 passes for all three workflows; git diff --check passes.

Merging this PR into release starts 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.

@d3cker
d3cker changed the base branch from main to release September 13, 2026 12:21
@d3cker d3cker changed the title Fix release notes and versioned package downloads in README Publish from release branch and promote to protected main through PRs Sep 13, 2026
@d3cker
d3cker merged commit 0607dc7 into release Sep 13, 2026
4 checks passed
github-actions Bot added a commit that referenced this pull request Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant