You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a Pair maintainer I want the release pipeline streamlined to changeset-per-PR + a 2-workflow (version.yml → release.yml) workflow_dispatch model with open-source changelogs So that releases are maintainer-controlled, reproducible, and the changelog follows open-source conventions
Parent Epic: #68 (Platform Hardening & Enterprise Readiness) Builds on: the release-tooling consolidation delivered in #148 / PR #333 (release scripts + tested determine-version).
Context
Split from #148: the tooling slice shipped (#333, #148 closed); this story carries the remaining pipeline rewrite. The current workflows are still the pre-rewrite form (tag-on-changeset-merge.yml still present; version.yml/release.yml not yet workflow_dispatch-only).
Acceptance Criteria (to refine — re-verify vs current CI first)
Given-When-Then (from the original #148 scope; confirm each still applies):
Changeset-per-PR check in ci.yml: fails if no .changeset/*.md in the PR; escape-hatch label passes without one.
release.yml (workflow_dispatch + version input): no tag-push/release-event triggers.
Delete tag-on-changeset-merge.yml: a non-changeset PR merged to main triggers NO release workflow; exactly 2 runs per release (one version, one release).
Story Statement (DRAFT — to refine)
As a Pair maintainer
I want the release pipeline streamlined to changeset-per-PR + a 2-workflow (
version.yml→release.yml)workflow_dispatchmodel with open-source changelogsSo that releases are maintainer-controlled, reproducible, and the changelog follows open-source conventions
Parent Epic: #68 (Platform Hardening & Enterprise Readiness)
Builds on: the release-tooling consolidation delivered in #148 / PR #333 (release scripts + tested
determine-version).Context
Split from #148: the tooling slice shipped (#333, #148 closed); this story carries the remaining pipeline rewrite. The current workflows are still the pre-rewrite form (
tag-on-changeset-merge.ymlstill present;version.yml/release.ymlnot yet workflow_dispatch-only).Acceptance Criteria (to refine — re-verify vs current CI first)
Given-When-Then (from the original #148 scope; confirm each still applies):
ci.yml: fails if no.changeset/*.mdin the PR; escape-hatch label passes without one.version.yml(workflow_dispatch-only): consumes accumulated changesets, bumps fixed-group package versions atomically, syncs rootpackage.json, generates CHANGELOGs (PR-linked, type-grouped) via@changesets/changelog-github, commits, pushes tagv{X.Y.Z}, triggersrelease.yml.release.yml(workflow_dispatch+ version input): no tag-push/release-event triggers.tag-on-changeset-merge.yml: a non-changeset PR merged to main triggers NO release workflow; exactly 2 runs per release (one version, one release).ci.ymlfix: remove|| echofallbacks masking failures.GITHUB_TOKEN(dropGH_RELEASE_TOKEN)./implementbump-type: the skill infers patch/minor/major from the story/commit convention when creating the changeset.process/implementSKILL.md → skill-layer mutex (coordinate with Wire template-override resolution into skills (docs already claim it works — it doesn't) #314/tech-debt: relocate skill-conventions/ into guidelines (technical-standards/ai-development) #365).Business rules
@changesets/changelog-github(Radix/Turborepo convention).@foomakers/pair-clito npm — verify the publish path end-to-end (dry-run) before merge..github/workflows/.changeset/release-tools) EXCEPT the/implementbump-type touch (skill-layer).Status
Draft — NOT refined. Refine with
/pair-process-refine-story(grill), reconciling ACs against the current CI.