Skip to content

feat(release): nx release pipeline with npm provenance for v1 packages#131

Closed
blove wants to merge 14 commits into
mainfrom
feat/release-infrastructure
Closed

feat(release): nx release pipeline with npm provenance for v1 packages#131
blove wants to merge 14 commits into
mainfrom
feat/release-infrastructure

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented Apr 19, 2026

Summary

Stands up the complete release pipeline for v1 publish of @cacheplane/angular, @cacheplane/render, @cacheplane/chat. Implements the plan at docs/superpowers/plans/2026-04-18-release-infrastructure.md.

What's in

  • Conventional commits enforced — commitlint + husky locally (.husky/commit-msg), CI check on PRs (.github/workflows/commitlint.yml). Scope is required and restricted to the repo's surface area.
  • Nx Release configured — independent per-package versioning, tag format <pkg>@v<version>, auto-update of internal peer dep ranges (preserveMatchingDependencyRanges: false + updateDependents: always), Keep-a-Changelog per library, GitHub Release creation.
  • Publishing pipeline — new .github/workflows/release.yml triggered on agent@v* / render@v* / chat@v* tags, publishes with npm provenance via OIDC. Old publish.yml removed.
  • Local smoke testscripts/verify-release-local.sh runs the full pipeline against a local Verdaccio registry in under a minute.
  • Operator runbookdocs/release-runbook.md with standard release flow, --first-release note, manual dispatch recovery path, troubleshooting, and version policy.

What's out of scope (follow-up plans)

  • License public-key embedding at build time + license-test fixtures in CI → licensing plan
  • @cacheplane/chat peer deps on the non-v1 @cacheplane/a2ui + @cacheplane/partial-json → chat stabilization plan

Notable implementation deviations from plan

  • Nx 22 schema placementpreserveMatchingDependencyRanges and updateDependents live at version.* level, not inside generatorOptions as the plan text suggested.
  • Build step on tag-push path — added explicit nx run-many -t build step in release.yml (caught in final review; plan had implicit build assumption).
  • scope-empty: 'never' — added to commitlint to match the "scope required" intent the comment claimed.
  • --first-release guidance — added to runbook step 2 after dry-runs surfaced the missing-tag warning.

Test plan

  • Local smoke (./scripts/verify-release-local.sh) passes end-to-end
  • nx release version --dry-run proposes correct bumps (0.0.1 → 0.1.0 for all three libs)
  • Commitlint hook rejects bad commits, accepts conventional ones
  • scope-empty: never rejects scope-less commits
  • PR-level commitlint CI run passes (will validate when this PR opens)
  • Manual workflow dispatch with `dry-run: true` succeeds on merge to main (post-merge validation)

🤖 Generated with Claude Code

blove and others added 14 commits April 19, 2026 10:07
Insert a build step for agent, render, and chat libs immediately before
the publish step on the tag-push path; dist/ dirs are not present without
it since preVersionCommand only runs during nx release version.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
scope-enum alone does not require a scope; it only validates when one is
present. Add scope-empty: [2, 'never'] so scope-less commits are rejected,
matching the intent of the existing comment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ORIGINAL_NPM_CONFIG_REGISTRY was captured but never referenced anywhere
in the script; remove it to eliminate dead code.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cacheplane Ready Ready Preview, Comment Apr 19, 2026 5:56pm

Request Review

@blove
Copy link
Copy Markdown
Contributor Author

blove commented May 7, 2026

Closing as obsolete. The npm scope rename @cacheplane@Ngaf, package restructure (libs/agent removed), and the publish.yml + nx release setup that landed via subsequent PRs together supersede the work in this PR. The release pipeline is now operational on main (currently shipping at @ngaf/* 0.0.28). If commitlint/husky or the verdaccio smoke harness become priorities, they can be revived from this PR's history as standalone changes.

@blove blove closed this May 7, 2026
@blove blove deleted the feat/release-infrastructure branch May 7, 2026 16:30
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