DiagramPilot v0.2.1
DiagramPilot v0.2.1
Issue: Release ops foundation and GitHub Releases
Issue Version: 0.2.1
Tag: v0.2.1
npm: https://www.npmjs.com/package/diagrampilot/v/0.2.1
Public Website: https://diagrampilot.com
Summary
Make each clean main implementation merge publish as an Issue Release with
its own Issue Version, npm latest publish, Git tag, GitHub Release, and
reviewed release notes. Release notes should be generated from local issue
closeout fields into a GitHub Release draft, not stored as committed files or
under .scratch/.
Nightly publishes must keep avoiding GitHub Releases. CI must complete before
any CD side effect, and GitHub Release publication must happen only after npm
latest succeeds for the same version.
Implementation Notes
- Split
.github/workflows/release.ymlinto validation, package publish,
GitHub Release draft preparation, and reviewed GitHub Release publication
jobs. The package publish job needsvalidate-release, checks out the same
${{ github.sha }}commit, verifies the intended Issue Version, rebuilds
package artifacts, reruns package readiness, and then publishes the Public
Package Set. - Added latest-only GitHub Release handling after npm package publish succeeds:
prepare-github-release-draftverifies the Issue Version, creates or
verifiesvX.Y.Zfor the release commit, generates draft release notes from
local issue closeout fields, creates or updates the GitHub Release draft, and
validates the generated draft shape. - Added the protected
publish-github-releasejob with
environment: github-release-publicationso maintainers can review the
GitHub Release draft body before publication. The job revalidates the
reviewed draft and publishes it only for npmlatestreleases. - Kept nightly branch publishes on npm
nightlyonly. Nightly paths still run
validation and package publish dry-runs, and they never create Git tags or
GitHub Releases. - Added
scripts/generate-release-notes.mjsto derive a GitHub Release body
from completed local issue closeout fields. It can take an explicit issue
path or discover the completed issue byIssue Version, writes only to
stdout, and includes the npm version URL and Public Website URL. - Added
scripts/validate-github-release-draft.mjsto validate the JSON shape
returned bygh release view --json tagName,name,body,isDraft,isPrerelease.
It fails for missing or empty bodies, wrong tags, wrong Issue Versions,
non-draft releases, and prerelease-marked drafts. - Updated release maintainer docs with Issue Release rules, release-note draft
generation, draft review through the protected GitHub environment, nightly
GitHub Release exclusion, and CI-before-CD workflow ordering. - Bumped shared DiagramPilot release metadata to Issue Version
0.2.1and
refresheddemo-projects/checkout/docs/architecture.svgprovenance at
0.2.1.
Validation Results
node scripts/bump-release-version.mjs 0.2.1passed.npm run buildpassed.cd demo-projects/checkout && node ../../packages/cli/dist/index.js render docs/architecture.dp.yaml --out docs/architecture.svg
passed.cd demo-projects/checkout && node ../../packages/cli/dist/index.js check
passed: 1 DiagramPilot Source File fresh.node --test --test-concurrency=1 test/github-actions-release.test.mjs test/release-version-tooling.test.mjs test/release-notes.test.mjs
passed: 17 tests.npm testpassed: 166 tests.npm run check:release-versionpassed at0.2.1.npm run check:package-readinesspassed for 6 public packages.node scripts/generate-release-notes.mjs --version 0.2.1 --tag v0.2.1
generated the expected GitHub Release draft body from this completed issue.git diff --checkpassed.