Skip to content

🌟 [Major]: Module releases use owned label defaults - #524

Draft
Marius Storhaug (MariusStorhaug) wants to merge 7 commits into
mainfrom
namespaced-release-labels
Draft

🌟 [Major]: Module releases use owned label defaults#524
Marius Storhaug (MariusStorhaug) wants to merge 7 commits into
mainfrom
namespaced-release-labels

Conversation

@MariusStorhaug

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Process-PSModule defaults module release decisions to the owned release: namespace, preventing dependency metadata from being interpreted as this repository's release intent.

Breaking Changes

The default mappings change to release:major, release:minor, release:patch, release:pre-release, and release:skip. Repositories adopting the next major must provision and apply those labels before removing their legacy labels.

AutoPatching remains enabled by default. MajorLabels, MinorLabels, PatchLabels, PrereleaseLabels, and IgnoreLabels remain supported and consumer-configurable, so repositories with an intentional custom contract can override every new default.

Changed: Default labels have one namespace

Resolve-PSModuleVersion continues to consume the mappings from settings and remains the independent module-version authority. Plan behavior, direct-push Patch behavior, workflow inputs, cleanup, and publication routing are unchanged.


Technical details
  • Resolve-PSModulePublishSetting owns the emitted defaults so production output and Pester assertions use one source.
  • The settings schema publishes the same defaults, including unchanged AutoPatching: true.
  • Resolver tests cover each canonical default and prove custom bump and ignore mappings remain authoritative.
  • The five canonical repository labels are provisioned alongside legacy labels. Fleet deletion is explicitly deferred.
  • The earlier strict-removal implementation was reverted through ordinary commits; the net diff contains no ReleaseDecision input, strict missing-label enforcement, or removed settings.
  • Current-head validation: 68 focused settings/resolver tests and 81 full action tests passed; PowerShell analysis, YAML structure checks, and the Zensical build passed; hosted CI completed with 71 successful and 8 intentionally skipped checks.
  • Copilot reviewed all 15 changed files in a clean round at 2026-08-28T22:42:09Z, submitted no inline comments, and left zero unresolved threads.
  • The draft remains blocked for publication on a stable immutable Release-GHRepository v3 reference from 🌟 [Major]: Release decisions use owned labels Release-GHRepository#109. Its draft branch/SHA is evidence only and is not a production dependency.
  • The released v8 reference remains unchanged, and caller documentation continues to reference it until the next major exists.
  • Implementation plan progress: the producer defaults, schema, tests, documentation, draft PR, hosted validation, and Copilot review loop are complete. Publishing and fleet migration remain separate blocked work.
  • Issue convergence sweep: Default module release decisions to namespaced labels #359 is fully satisfied by this net diff and is the only closing issue.
Changed surface Standards checked Framework docs checked Result
.github/actions/Get-PSModuleSettings/** PowerShell, Testing, JSON Settings and versioning Aligned
.github/actions/Resolve-PSModuleVersion/tests/** PowerShell, Pester Version resolution Aligned
.github/workflows/workflow.yml GitHub Actions, YAML Process workflow contract Aligned
docs/content/** Markdown, Natural Language Process-PSModule release contract Aligned
Relevant issues (or links)

Related work

@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title 🌟 [Major]: Module release decisions fail closed 🌟 [Major]: Module releases use owned label defaults Aug 28, 2026
@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
CSS Pass ✅
CSS_PRETTIER Pass ✅
GITHUB_ACTIONS Pass ✅
GITHUB_ACTIONS_ZIZMOR Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
HTML Pass ✅
JAVASCRIPT_ES Pass ✅
JAVASCRIPT_PRETTIER Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Process-PSModule’s default release-intent label contract to use an owned release: namespace (and documents that contract), so downstream release/version decisions default to repository-owned labels instead of potentially colliding dependency metadata.

Changes:

  • Switch default publish/version label mappings to release:major|minor|patch|pre-release|skip (while preserving consumer overrides via .github/PSModule.yml).
  • Centralize publish-default resolution in Resolve-PSModulePublishSetting, and publish the same defaults in the settings JSON schema.
  • Update docs and Pester coverage to reflect and validate the new canonical defaults and override behavior.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated no comments.

Show a summary per file
File Description
docs/content/specification/spec.md Updates the FR5 contract and Gherkin scenarios to use release:* default labels.
docs/content/specification/principles-and-practices.md Updates guidance for prerelease flows using the configured prerelease label (default release:pre-release).
docs/content/specification/design.md Aligns design text with the new canonical default label set and override location.
docs/content/reference/settings.md Updates documented settings defaults to the release:* namespace and adds prerelease defaults.
docs/content/reference/scenario-matrix.md Updates prerelease requirements text to reference the configured prerelease label and resolved bump.
docs/content/reference/repository-standard.md Updates repository expectations to the new default label namespace and override guidance.
docs/content/reference/powershell-module-standard.md Updates label tables/examples and prerelease behavior documentation to release:* defaults.
docs/content/guides/versioning-and-releases.md Updates the versioning guide to the new label namespace and clarifies conflict-handling behavior.
docs/content/get-started/your-first-release.md Updates “first release” walkthrough tables/text to the new default labels and conflict semantics.
.github/workflows/workflow.yml Adjusts workflow commentary to describe prerelease conditions in terms of intent + resolved bump.
.github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.ps1 Updates version-resolution tests to use release:* defaults and adds coverage for canonical/overridden mappings.
.github/actions/Get-PSModuleSettings/tests/Get-PSModuleSettings.Helpers.Tests.ps1 Adds tests asserting canonical defaults, consumer override preservation, and schema defaults parity.
.github/actions/Get-PSModuleSettings/src/Settings.schema.json Publishes schema defaults for AutoPatching and the label mapping settings.
.github/actions/Get-PSModuleSettings/src/main.ps1 Uses the new publish-settings resolver when constructing normalized settings output.
.github/actions/Get-PSModuleSettings/src/Get-PSModuleSettings.Helpers.psm1 Introduces Resolve-PSModulePublishSetting to own and centralize canonical defaults.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release:major Publish a major release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Default module release decisions to namespaced labels

2 participants