v8.0.0
馃専 [Major]: Publish stable releases from default-branch pushes (#512)
Process-PSModule now authorizes stable module publication from an important push to the default branch rather than from a merged pull_request event. An associated merged pull request supplies labels and release notes only when its merge commit exactly matches the pushed SHA; direct pushes and default-branch manual dispatches release a Patch version with commit-based notes.
Breaking Changes
Caller workflows must add a push trigger for their default branch to receive stable releases. The canonical caller templates now use non-cancelling per-pull-request-or-ref concurrency so pull-request cleanup and the resulting default-branch release remain independent while all release mutations queue safely. The consumer-repository rollout remains tracked in #438.
Changed: Stable release lifecycle
- Open labelled pull requests can publish prereleases; closed pull requests run prerelease cleanup only.
- Important default-branch pushes run the full pipeline and publish a stable release only after PowerShell Gallery publication succeeds.
- GitHub releases and tags target the exact tested pushed commit.
- Direct default-branch pushes and manual dispatches default to Patch regardless of
AutoPatching; pull-request prereleases retain their configuredAutoPatchingbehavior. - First pushes are evaluated from the complete Git tree, and truncated trees fail explicitly rather than producing an unsafe release decision.
- Only a real
pull_request.closedevent can enter cleanup; a label change on an already closed PR runs no build, prerelease, or cleanup path. - Release workflow concurrency uses
cancel-in-progress: falseto preserve serialized artifact and tag mutation.
Dogfood and documentation
- The default and manifest dogfood callers now receive the complete PR event contract, including label changes and closure, and do not cancel release-capable runs.
- Fixture roots are important, fixture sites build, and
Publish.Site.Skipprevents deployment to the Process-PSModule Pages environment. - Caller, first-release, scenario, stage, settings, specification, and module-standard documentation now define default-branch push authority, cleanup-only closed PRs, direct-push behavior, and non-cancelling concurrency.
Scope boundary
Release-GHRepository@v2.0.3, which releases Process-PSModule itself, only supports pull-request event payloads. This PR therefore does not install a push trigger that would succeed without producing that repository release. Push-capable repository releases and moving workflow-consumer tags are tracked separately in PSModule/Release-GHRepository#108.
Technical Details
- The Plan settings action normalizes PR, push, and manual-dispatch state into a shared context.
- Push-to-PR association uses
GET /repos/{owner}/{repo}/commits/{sha}/pullsand requires an exact merged commit match on the default branch. - Version-label conflicts remain blocking for release decisions but cannot block closed-PR cleanup.
- Publishing, GitHub release creation, and cleanup receive the normalized PR context explicitly, so direct releases never attempt PR comments.
Publish.Site.Skipseparates site build from deployment; dogfood callers mark their fixture roots as important, build site artifacts, and skip real Pages publication.
Related issues
- Fixes #390
- Related: #438
- Dependency: PSModule/Release-GHRepository#108