Skip to content

Release guidance uses configurable default bumps - #196

Open
Marius Storhaug (MariusStorhaug) wants to merge 13 commits into
mainfrom
default-release-bump
Open

Marius Storhaug (MariusStorhaug) wants to merge 13 commits into
mainfrom
default-release-bump

Conversation

@MariusStorhaug

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented Aug 29, 2026 •

Copy link
Copy Markdown
Member

Release guidance uses .github/release.settings.yml and keys release branches by the type they publish. The configurable DefaultBump policy, supported caller overrides, and explicit owned-label precedence stay intact: a valid effective default supplies a compatible bump without a label on every PR.

This is documentation delivery, not a producer runtime upgrade. No live caller input, consumer installation, tag or artifact changes because of this PR. Authors and implementation owners adopt the protocol below through a verified compatible producer; an older implementation does not gain new settings or label support from these docs.

Changed: Default release policy and explicit overrides are unambiguous

DefaultBump accepts patch, minor or major, with shared patch as the documented default. Repository settings override it; explicitly supplied supported caller overrides win for the invocation; one owned bump label overrides the valid effective setting. Omitted inputs preserve repository policy. Invalid supplied values and conflicting signals fail before build even when another input supplies a level. The producer documents its actual caller surface; this PR does not approve an undecided runtime interface. This policy is retained from the reconciled main baseline; the remaining scoped changes are the keyed routes and filename described below.

The owned set is release:patch, release:minor, release:major, release:prerelease and release:skip. Prerelease uses the resolved bump; skip alone validates without a bump/publication. Multiple bumps and skip combined with another owned signal fail; bare/unrelated labels do not select a level. Only eligible artifact-affecting changes on managed routes publish, and authors verify compatibility against the complete change rather than treating a default as evidence.

Implementation owners replace the boolean patch-policy concept with a deliberate supported level. Do not translate a disabled boolean into false, null or an empty default. The compatible producer's record owns exact old-to-new input/label actions, prerequisites, ordering and verification. Consumers retain an older interface until those instructions and a compatible implementation or adapter exist. This documentation requires no executable migration of its own.

Verify actual managed routes, including native producers, and their immutable setting/label mapping. An ignored skip cannot pass finalization. Unmanaged routes have no decision block, release labels or missing-decision check; continuous delivery alone does not opt them in. This repository only deploys Pages without a versioned release artifact, so this PR has neither release metadata nor labels.

Technical details
Changed surface Standards checked Framework docs checked Result
Release Management spec/design/index Specification/design separation, Markdown Effective sources, eligible publication, source-bound evidence Aligned
PR Format and Automation Labels Canonical format, namespace ownership Actual routes and verified producer mapping Aligned
VS Code framework spec/design and Natural Language examples Owning framework/coding standards Shared resolver, mapped native build identity, actionable errors Aligned

Prior-candidate validation, not current-head evidence: e2e4b7d428badfce35e6511afd6aaedb77280613 passed Lint, Test, Build, Links and Cross-repository links, local complete Markdown/index/link validation, seven cross-repository links, all 64 Pester tests in six suites, the pinned Zensical build, and patch checks. The current candidate and its new validation are recorded in the filename section below.

Prior complete review disposition: 5723060562 is COMMENTED with no open issues/inline feedback but retains a generic human-assessment warning about skip/default paths. The full summary was read, not treated as approval. It names no reproducible location or counterexample after the concrete findings were fixed. Per the agreed non-actionable disposition, nineteen anonymous written-contract cases were checked on that prior candidate:

Cases checked Verified outcome
Omitted settings; each patch/minor/major effective default without labels Shared patch or the valid selected level; no bump label required.
Supported caller override and each explicit patch/minor/major label override Narrower supported input wins, then the single explicit label.
Skip alone Validation/no release; no bump required.
Skip with a bump or prerelease; multiple bump labels Conflicting-signal error.
Invalid default despite explicit bump, skip or a valid narrower caller Error before resolution; no masking or fallback.
Prerelease with default or explicit bump Resolved level in prerelease mode.
Bare/unrelated labels Ignored; they do not supply a bump.
Unmanaged route No decision metadata, release labels or missing-decision check.

The cases verify the written rule ordering, not a producer resolver implementation. No contradictory outcome was found, all concrete review threads had fix-linked replies and were resolved, and the generic allegation was recorded as non-actionable rather than guessed into code. The review's human-assessment caution remains for reviewers; no independent approval or governance waiver is claimed. A review of that older source is not a review of the new candidate.

Only the scoped delivery Task was fully satisfied by the prior convergence sweep covering releases/defaults, labels/types, framework, workflow, templates and consumer guidance. Producer/runtime migration, publication, date strategies and history/fleet cleanup remain outside scope. Native prerequisite #166 is completed; the current exact required-check rule remains enforced.

Related references

Changed: Keyed routes reuse the complete canonical authoring contract

ReleaseType is keyed by Stable, Prerelease and ReleaseCandidate, with one Branch per type. Stable defaults to the repository default branch; the others are optional. Unknown keys, duplicate assignments and a branch in several types fail. Candidate routing is a setting, not another release label. Preserve intended names and verify producer support before changing a live caller; this delivery executes no branch/runtime migration. A release candidate remains a prerelease publication, not a third semantic-version mode.

All overlapping format/routing pages reuse the complete landed canonical content. Authors use a reader-facing title, one summary boundary, ordered non-empty classifiers, result-scoped actions/evidence/references and actual-route conditional decisions. Internal-only work retains its summary/supporting-block exception. Convergence scope/outcome and implementation progress remain required; resource docs show current usage while release records own transitions. Contribution guidance and thin skills point to the actual PR-record procedure and complete description example; no PR-template file is stored, inherited, distributed, or generated.

# .github/release.settings.yml
DefaultBump: patch
ReleaseType:
  Stable:
    Branch: main
  Prerelease:
    Branch: dev
  ReleaseCandidate:
    Branch: rc
Technical details
Changed surface Standards checked Framework docs checked Result
Keyed routes and candidate paths YAML examples, documented validation Release Management stable authority Aligned
Contribution guide; contribution/workflow, Implement/Review, readiness, repository, README and branching Ways of Working, PR Format, Markdown Shared finalization/routing Aligned
Fleet, Documentation Model and Ways of Working index Native linking, ownership, generated indexes Sufficient source-bound history Aligned
Dependency/Actions guidance; Dependency Updates spec/design; Merge Automation design Owning standards/capabilities Conditional decisions Aligned
VS Code framework references; Continuous Delivery and Release Owning framework/process Authoritative resolver and managed effective policy Aligned

The complete PR-record contract and native/manual link discovery remain aligned. Discovery combines fully paginated closing references and current connect/disconnect associations, deduplicates by PR node ID and retains merged records. Prior live schema/queries and anonymous folding cases passed. Canonical/native versions resolve before Build; the mapped native version is stamped, the same VSIX stays unchanged, and its canonical release records the mapping.

Landed #209 was incorporated from actual main aa9b5cecc69f4cbe6aa04a5dd70ff9cdadeeac3d in ordinary merge commit ce9ca5134d2cd19847cb46c40ee42a6d8062fc0c; none of its complete release-range-first, PR-record, or no-template-file contracts was replaced with an older scaffold. The original keyed-branch and prerelease/candidate sections remain unchanged from this branch's filename commit. #208 and the canonical filename delivery #233 remain separate. Remaining proposals land one at a time, with each surviving branch reconciled against actual advanced main and CI/full review repeated. No PR merge, retarget, replacement, history amendment, or auto-merge was performed.

Changed: Release settings guidance has one canonical filename

Use .github/release.settings.yml when authoring optional repository settings under the canonical Release Management protocol. The .github directory, setting names and values, shared defaults, supported caller overrides, explicit-label precedence, applicability, and required decision validation are unchanged by this filename revision. Current rendered guidance teaches only the requested filename.

No matching settings file or runtime loader exists in this documentation repository, so no real configuration file, alias, or fallback loader is created. Released producer interfaces remain unchanged, including ConfigurationFile / .github/auto-release.yml and SettingsPath / PSModule.yml. Verify a compatible producer's declared contract before changing an actual consumer configuration; this documentation does not grant an older producer support for a different path.

Technical details

Current candidate: ce9ca5134d2cd19847cb46c40ee42a6d8062fc0c, pushed on default-release-bump targeting main. Its parents are filename-only commit 89456f4d4c771232e1d3d4d0b9c1b7f674357dd4 and actual main aa9b5cecc69f4cbe6aa04a5dd70ff9cdadeeac3d. The branch contains that latest base, has no unresolved conflicts, and is zero commits behind it.

The regression-first filename commit changes exactly 16 references across five owned pages, with all other normalized documentation content identical to its e2e4b7d predecessor. Mainline reconciliation adds one already-landed applicability reference, producing the canonical 17-reference composition. Read-only verification against #233's immutable e65b9e0125d418852a993282e2b4cd5125f16d3a confirms all 17 substitutions; PR Format and Automation Labels match exactly, the complete release-note and release-evidence sections match exactly, and the remaining release/framework differences are this delivery's retained default-bump/keyed-route scope. No unmerged change from that separate delivery was imported.

Changed surface Filename references Standards checked Framework docs checked Result
Release Management design 9 Documentation Model, Natural Language, Markdown Settings/default/override and keyed-route contract Aligned
Release Management spec 3 Specification separation, Natural Language, Markdown Applicability, effective defaults, complete release evidence Aligned
VS Code framework design 2 Documentation Model, Natural Language, Markdown Shared resolver and configuration surface Aligned
Automation Labels 1 Namespace ownership, Natural Language, Markdown Effective release applicability Aligned
PR Format 2 PR-record procedure, Natural Language, Markdown Release-range-first and conditional decisions Aligned
Release settings regression suite 5 cases PowerShell, Testing, repository analyzer settings Canonical documentation filename Aligned

All five new filename cases failed before documentation edits and pass after the revision. The reconciled candidate passes all 85 Pester tests in eight suites, PowerShell lint for the new suite, explicit Markdown lint across all 128 rendered/contribution pages, documentation index validation, relative links across 127 pages, all seven cross-repository links, patch checks, and a clean build with pinned Zensical 0.0.59. The pinned build tool was restored only in an isolated session environment; the shared 0.0.50 installation and dependency manifests were not changed.

All five required current-head contexts succeed in Docs and Cross-repository links: Lint, Build, Test, Links, and Cross-repository links. The PR-only Publish job is skipped as intended; no documentation deployment or release publication was triggered.

Current complete review disposition: 5728271684 is COMMENTED on ce9ca5134d2cd19847cb46c40ee42a6d8062fc0c, with one inline allegation that Windows-style paths make every filename case fail on Ubuntu. Both its complete summary and inline text were read. The exact-head Ubuntu 24.04 Test job discovers this suite and shows all five filename cases passing, with 85 total tests and none skipped. The provider-backed Join-Path/Get-Content implementation was retained; the evidence-linked reply explains the false positive and resolves it. A complete native read-back finds no unresolved review threads. This is convergence on substance after an evidence-based dismissal, not a zero-comment or approving review; the prior human-assessment caution remains.

The Task #225 filename plan records the regression-first edit, completed mainline/shared-page reconciliation, exact-head validation, and review disposition. The final scoped convergence search covered open issues naming the filename and DefaultBump: #225 is this delivery; #232 remains the separate canonical filename Task; #203 remains the broader consumer-upgrade procedure/gate delivery. No additional closing link or issue-body change is claimed for those separate scopes.

Existing human/source/lineage/prerequisite holds remain in force. Native Agent merge is maintenance-only: enabled=true, address_reviews=true, fix_ci=true, resolve_conflicts=true, merge_pr=false; GitHub autoMergeRequest is null. PR draft state and target are unchanged. This revision authorizes no runtime, publishing, package, governance, label, or pin mutation.

Related references

@MariusStorhaug Marius Storhaug (MariusStorhaug) added the release:skip Validate the change without publishing a release. label Aug 29, 2026

Copilot AI left a comment

Copy link
Copy Markdown

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 the MSX documentation set to introduce a configurable repository-wide default semantic version bump (DefaultBump) for release automation, while keeping owned release:* labels as explicit overrides and updating prerelease semantics to reuse the resolved bump.

Changes:

  • Define DefaultBump (defaulting to patch) and the override / conflict rules in Release Management spec + design.
  • Update Ways of Working guidance (PR format, CD/release, branching/promotion, automation labels) to reflect “policy-first” bump selection and prerelease behavior.
  • Align the VS Code Extension Framework spec/design with the Release Management contract.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/docs/Ways-of-Working/PR-Format.md Documents how release:pre-release interacts with DefaultBump and owned bump-label overrides.
src/docs/Ways-of-Working/Continuous-Delivery-And-Release.md Updates CD/release “decision at the gate” language to reference resolved release policy and DefaultBump.
src/docs/Ways-of-Working/Branching-and-Merging.md Updates promotion-model guidance to use the resolved policy / DefaultBump with explicit overrides.
src/docs/Ways-of-Working/Automation-Labels.md Reframes label meanings around DefaultBump + owned label overrides and conflict handling.
src/docs/Coding-Standards/Natural-Language.md Updates example language/error-message guidance to reflect conflicting owned bump labels and DefaultBump.
src/docs/Capabilities/vscode-extension-framework/spec.md Updates framework requirements/success criteria to match policy-driven bump selection.
src/docs/Capabilities/vscode-extension-framework/design.md Updates pipeline/design narrative to reference release policy and DefaultBump in version resolution.
src/docs/Capabilities/release-management/spec.md Defines the normative DefaultBump rules, override precedence, prerelease behavior, and label conflict handling.
src/docs/Capabilities/release-management/index.md Updates the section index descriptions to match the refreshed spec/design framing.
src/docs/Capabilities/release-management/design.md Documents configuration surface and pipeline behavior for resolving DefaultBump + owned label overrides.

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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

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

@MariusStorhaug
Marius Storhaug (MariusStorhaug) marked this pull request as ready for review August 29, 2026 12:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟢 Approval recommended

The documentation updates appear internally consistent across all touched pages and align with the stated DefaultBump/owned-label override/prerelease/skip contract.

Review details
  • Files reviewed: 10/10 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟢 Approval recommended

The changes are documentation-only and appear internally consistent with the new DefaultBump/ReleaseType contract, with only a minor wording nit noted.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

src/docs/Capabilities/release-management/spec.md:3

  • The front-matter description repeats “driven” twice (“policy-driven … releases driven …”), which reads awkwardly in generated index tables and summaries. Consider rephrasing the second instance (and then regenerating the affected INDEX tables).
  • Files reviewed: 10/10 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@MariusStorhaug

Copy link
Copy Markdown
Member Author

Coordination for #202: I am adding incremental consumer evidence and complete-note publication rules in PR Format and the release-management spec/design. This work leaves version selection, label names, DefaultBump, and ReleaseType ownership with this PR. The release-impact record reports the effective resolver decision and its source, so it remains compatible with either merge order. I will reference this PR and will not edit its branch or description.

@MariusStorhaug

Copy link
Copy Markdown
Member Author

Coordination from #204: the user confirmed that a release level can come from an explicit owned bump label or a repository-configured DefaultBump, but chose to fail when both are absent. The missing-decision error must also fail a required pre-merge CI check. This differs from the implicit patch fallback proposed here. I am aligning the release evidence contract and its dependent guidance in #204 with that confirmed rule, reusing the DefaultBump setting name. I am not changing this branch, its ReleaseType redesign, or its label rename; the default-fallback portion here needs reconciliation before merge to avoid restoring a conflicting rule.

Marius Storhaug (MariusStorhaug) added a commit that referenced this pull request Sep 6, 2026
Release-bound pull requests classify changes for their declared
user/integrator audience and describe the incremental actions that
audience needs to adopt them. Release levels come from an explicit
decision or an opt-in repository default; missing decisions must block
merge in CI. Published notes preserve the complete authored record and
its source/template evidence.

## Changed: Change type follows the target audience

Each initiative describes its audience and supported jobs; each
repository README states its audience or explicitly adopts that
definition and records any specialization. Users and integrators can be
the same people: PSModule module users integrate commands into their
work, and Process-PSModule users integrate the delivery workflow into
their module repositories.

Change type follows the highest impact on supported uses, not file
location, edit size, or the reviewer's perspective. An incompatible
output, runtime requirement, or caller interface remains breaking even
when an interactive command still works or only a manifest or `.github/`
file changes.

## Changed: Repository defaults are explicit policy decisions

For PR-driven releases, an owned bump label overrides the optional
`DefaultBump` in `.github/release.config.yml`. The setting accepts
`patch`, `minor`, or `major`. If neither supplies a level and no valid
`release:skip` is selected, the decision is missing: there is no
implicit patch fallback. Prerelease mode can use an explicit or
configured bump, but the mode alone is not a level. Invalid defaults and
conflicting owned labels fail rather than selecting a convenient
fallback.

The declared default is not evidence of compatibility: authors still
assess the audience impact and override the default when needed.
Release-label names, SemVer arithmetic, and pre-1.0 mapping remain
unchanged. The optional ad hoc dispatch keeps its existing explicit-bump
requirement.

## Changed: Missing decisions block merge, not only publication

The release contract requires a named PR decision-validation check,
enforced by the target branch's ruleset or protection. Missing, invalid,
or conflicting decisions fail it before merge. The check re-evaluates
source, release-label, and settings changes; a failed, pending, or
absent required result prevents manual and automatic merge. A valid skip
passes with a no-release outcome instead of skipping validation.
Publication validates its actual inputs again.

This PR documents that contract; it does not implement producer CI
workflows or change repository rulesets.

## Changed: Consumer adoption and publication evidence are complete

PR descriptions include Adopting this release and Release impact
sections, an applicability-aware consumer change record, and a verified
immutable template baseline where applicable. Public interfaces belong
in user-facing prose, and breaking behavior remains explicit
independently of version classification.

The release-management contract preserves the release-bound title and
complete description. Actual coordinates and provenance remain separate
from authored prose, and version-computation and consumer-change
baselines remain distinct. Bundled, optional ad hoc, and source-specific
prerelease records retain equivalent evidence. Metadata corrections
preserve an audit without changing artifacts or historical behavior.
Release filters reflect product contracts, not directory names alone.

## Adopting this release

1. Initiative owners declare their audience and supported jobs.
Repository maintainers state the audience, jobs, and interfaces in the
README, or explicitly adopt the initiative definition and record any
specialization. Detailed users and jobs stay in the linked capability
specification.
2. For each PR release decision, select an owned level or intentionally
configure `DefaultBump` in the release settings. An explicit level wins;
neither source is an error, not a patch default. Select `release:skip`
for a no-release decision. Verify the resolved level against the
audience impact.
3. Use the PR Format structure: ordered adoption or an explicit
no-action outcome, effective release impact and its source without
predicting a final version, and each changed surface's before/after
behavior, applicability, exact action, and verification. Include a
verified immutable template baseline where applicable, or explain why
none applies.
4. Producer CI maintainers run the same decision resolver during PR
validation, make its named check required in branch protection/rulesets,
and cover relevant source and metadata changes. Missing, invalid,
conflicting, pending, and absent results must not permit merge; a valid
skip must produce an explicit successful result.
5. Publisher maintainers preserve the complete source-bound record,
resolve actual publication coordinates, audit metadata corrections, and
keep consumer-facing interfaces in release filters. Implementation and
governance changes remain separately scoped in their owning
repositories.

## Release impact

| Field | Value |
| --- | --- |
| Effective decision | `release:skip`, documentation only. |
| Semantic effect | No versioned artifact release. The documented PR
decision contract permits an opt-in default and requires a
merge-blocking CI gate; it does not install that gate in producers. |
| Release/base coordinates | No version is produced by this PR. |

---
<details>
<summary>Technical details</summary>

### Consumer change record

| Identifier / surface | Before | After | Applicability / prerequisites
| Consumer action | Verification |
| --- | --- | --- | --- | --- | --- |
| AUDIENCE-CONTEXT / initiative docs and READMEs | Audience context is
not required as an input to classification. | Explicit audience, jobs,
and interfaces anchor classification; user/integrator roles may overlap.
| Initiative owners, maintainers, and PR authors. | Adoption steps 1-2.
| Readers identify supported uses without inferring them from ownership
or filenames. |
| RELEASE-DECISION / release settings and PR CI | The spec forbids
defaults while PR evidence permits configured policy; missing decisions
lack an explicit required pre-merge check contract. | An explicit bump
overrides optional `DefaultBump`; neither source fails. Required CI
validates the decision and blocks merge on missing/invalid/conflicting
input. | Producers implementing Release Management and consuming
frameworks. | Adoption steps 2 and 4. |
Explicit/default/override/skip/mode/error cases agree; the decision
check is required, not merely advisory. |
| PR-EVIDENCE / release-bound PR bodies | Adoption may be scattered and
path/size heuristics can obscure impact. | Ordered adoption, resolved
release impact, consumer/template evidence, and highest-impact
classification are required. | Authors following MSX PR Format. |
Adoption steps 2-3. | Every changed surface records applicability,
action, and result; no-action and breaking cases stay explicit. |
| NOTE-PUBLICATION / publication contract | Complete-body,
source-snapshot, correction, and product-aware filter obligations are
not explicit. | Full authored records retain actual coordinates and
source identity; corrections preserve artifacts; filters include shipped
interfaces. | Publisher maintainers. | Adoption step 5. | Published
content matches its source-bound snapshot, and metadata corrections
leave artifact/source identities intact. |

### Template baseline

Not applicable: this PR changes shared standards, not a versioned
framework integration or its template. The PR-format skill remains an
unchanged thin pointer; no plugin metadata or version change is needed.

### Maintainer evidence

- Delivery: #202, refined to a native Task and updated with
the user's audience, opt-in default, and pre-merge CI requirements. The
initial contract is in `6c07314` / `354dd8c`, audience clarification in
`b1a8262` / `e55c80b`, and decision/gate correction in `fd32b41`.
- Copilot review `5124988102` identified the default-policy
contradiction in its suppressed summary. The earlier zero-inline-comment
verdict missed that concern. Review now includes the complete summary,
including suppressed comments; zero inline comments alone is not a clean
round.
- The shared resolver is defined in Release Management. PR Format,
Automation Labels, readiness/Implement wording,
promotion/continuous-delivery guidance, Natural Language error examples,
and the VS Code framework agree with it. Generated release navigation is
current.
- `DefaultBump` reuses the setting name from #196, but the
user explicitly rejected that PR's implicit patch fallback. Coordination
is recorded there. Its branch, release-type redesign, and label rename
remain untouched and need reconciliation before merge.
- The existing index, relative-link, and targeted Markdown checks pass.
CI uses the existing cross-repository-link and Pester jobs; no
validation toolchain or publisher implementation was added.
- Convergence: release/adoption/PR-format and audience issues were
inspected. #67 still needs repository-standard files,
#143 still needs downstream-artifact mapping/enforcement, and
#203 owns the common consumer procedure. No additional issue
is fully satisfied.
- **Repository gate:** #166 remains a native prerequisite of
#202 and tracks missing required CI enforcement. The user
marked this PR ready; this session preserves that state and leaves
auto-merge disabled rather than changing governance or bypassing the
prerequisite.
- Delivery B remains prepared as #203, with a native
dependency on #202. The PSModule pilot, fleet README rollout,
and historical backfill remain outside this delivery.

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| PR Format and related workflow/gate guidance | Natural Language,
Markdown, Documentation Model, standard template, issue/PR conventions |
Release Management; Merge Automation; audience contract | Aligned |
| Release Management spec/design/index | Natural Language, Markdown,
Documentation Model, spec/design templates | PR Format; Merge Automation
| Aligned |
| VS Code framework spec/design | Natural Language, Markdown,
Documentation Model, spec/design templates | Shared Release Management
contract | Aligned |
| README/organization/repository standards and audience examples |
Natural Language, Markdown, README-Driven Context | MSX documentation
purpose; PSModule initiative boundary | Aligned |
| Natural Language error examples | Natural Language, Markdown |
Release-decision validation contract | Aligned |

The walkthroughs below assess the documentation contract, not a running
producer or the PSModule pilot:

| Case group | Reconciled outcome |
| --- | --- |
| No-action patch; pre-1.0 break | No-action is explicit; Minor mapping
does not hide breaking behavior or required actions. |
| Skipped releases; prerelease; non-latest target | Each applicable
delta and source/template identity remains recoverable; latest metadata
does not replace historical evidence. |
| Shared user/integrator roles; path/size; mixed changes; missing
audience | Supported audience impact controls classification; absent
audience context is resolved rather than guessed. |
| Explicit level; configured default; override | A valid explicit label
wins; a configured default supplies a missing bump and is recorded as
the source. |
| Missing/invalid/conflicting decisions | The required PR check fails
and merge is blocked. No built-in patch or conflict fallback is
permitted. |
| Skip; prerelease; unowned labels | Valid skip passes without a bump; a
mode needs a resolved bump; unowned labels never supply a decision. |
| Changed labels/settings/source | Validation re-evaluates the candidate
inputs; publication revalidates its actual inputs too. |

</details>

<details>
<summary>Relevant issues (or links)</summary>

- Resolves #202

### Related work

- Depends on #166
- Followed by #203
- References #196
- References #143
- References #67
- References PSModule/Process-PSModule#537

</details>
@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title 📖 [Docs]: Release bumps now have a configurable default Release guidance uses configurable default bumps Oct 31, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Human assessment is needed because the documentation contains cross-document ambiguities and contradictions about effective defaults and whether unmanaged routes may or must use release:skip.

No open issues 🎉

4 resolved since last review

Review effort: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

The dashboard logic omits manually linked Development pull requests, causing existing links to be reported as missing until the retrieval limitation is addressed or documented.

1 open issue

Review effort: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

An active documentation inconsistency remains: the new rules are stated universally even though unmanaged routes do not use release-decision metadata, so the scope and no-metadata behavior must be clarified.

1 open issue
1 resolved since last review

Review effort: Lite

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Human assessment is needed because the documentation contains subtle contract contradictions around release skips and no-label default paths that affect how managed decisions are interpreted.

No open issues 🎉

1 resolved since last review

Review effort: Lite

@MariusStorhaug
Marius Storhaug (MariusStorhaug) marked this pull request as ready for review October 31, 2026 14:28
Marius Storhaug (MariusStorhaug) added a commit that referenced this pull request Nov 1, 2026
PR Format describes the actual title and complete body: audience-first
results, release-range-first analysis, complete adoption/compatibility
evidence, one announcement boundary and conditional release decisions.
Repository file policy is owned separately by
Repository/Organization/Governance guidance, not by the PR Format page.

Authors use canonical guidance for the resulting record. Repository
standards exclude GitHub PR-template files from ordinary and
central-default sources, while retaining other community defaults,
genuine repository-specific contribution instructions and supported
product-integration contracts. This delivery changes guidance and checks
in MSXOrg/docs; separate owners remove their actual source/consumer
files. No publisher, live caller, artifact, tag, governance setting or
release history is changed here.

<!-- ANNOUNCEMENT STOP -->

## Changed: PR Format focuses on the complete authored record

Use one short reader-facing title and an audience-first summary, then
ordered non-empty Breaking, Removed, New, Changed and Fixed results.
Explain what changed, why, affected supported uses, compatibility and
complete adoption actions or a justified no-action result in each
result's prose. Keep prerequisites, ordering, verification and mandatory
intermediate operations in the record itself, with supporting evidence
and references scoped to the result they verify.

The complete in-document example is named **Complete description
example**. Its anchor is now `#complete-description-example`, replacing
`#copy-the-complete-template`. The single announcement boundary and full
body remain unchanged in purpose; announcements do not truncate the
published note. Maintained links adopt the new anchor. Existing skills
still route to the same canonical PR Format page and its
release-coverage analysis; no additional skill, file distributor or
plugin installation is required for this correction.

PR Format contains no repository PR-template-file discussion: no file
locations, copying/inheritance, local exceptions, presence/absence
policy or deletion history. Those rules belong to the repository
standards below. Product integration-template compatibility evidence
remains distinct and required where a delivered result affects a
supported integration.

<details>
<summary>Technical details</summary>

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| PR Format complete example, record evidence and anchors | Natural
Language, Markdown, Documentation Model, PR Format | Complete consumer
record and source-range authoring | Aligned |
| Release Management result evidence | Specification/design separation,
Markdown | Actual title/body/source coverage, retained
product-integration compatibility | Aligned |
| Repository-specific contribution PR-format links | Markdown, canonical
ownership | Full description example; existing local build/index/link
instructions | Aligned |
| Record-format regression block | PowerShell/Pester, shared analyzer,
testing baseline | Required structure, one boundary, five
classifiers/evidence prompts and release-first order | Aligned |

The tests separate record quality from repository file policy. Record
tests verify the complete example and ordered classifiers, marker count,
publication/candidate identity fields, five scoped release-evidence
prompts, release-first analysis, and five affected-product integration
prompts. They also reject GitHub PR-template-file discussion on this
page without rejecting legitimate product integration contracts.
File-policy tests inspect the owning repository/organization/governance
pages, not PR Format. Five ownership/naming cases failed before the
refinement and pass after it.

The old example link is a documentation-anchor transition, not a runtime
migration. Required old-to-new consumer actions still belong in the
relevant release record; product docs retain supported target-state
usage rather than a migration hierarchy or changelog.

</details>

## Changed: Repository standards require canonical adherence without
PR-template files

Repository Standard owns the no-file rule for every MSX repository type
and the special `MSXOrg/.github` and `PSModule/.github` sources. GitHub
PR-template files, multiple-template directories, generated copies and
local exceptions are not part of this contract. Organization Standard
and Repository Governance reference that one owner; their former
mandatory default-file rows and local PR-template exception are removed.

Authors and validators verify the actual title, complete body, source
coverage, compatibility/adoption evidence and normal review gates. An
inherited scaffold, file-presence check or similarity to a central copy
does not prove adherence. The complete canonical record example remains
in the docs. Other
code-of-conduct/security/support/contribution/issue-intake defaults and
genuine repository-specific contribution instructions are unaffected;
this is not an organization-wide community-file cleanup.

Separate source and consumer owners remove existing PR-template files
and revise their source docs/check expectations. This PR introduces no
distributor, physically edits none of their workspaces and claims no
pending deletion is merged. A missing file never substitutes for
Markdown/source/head/containment validation or complete PR record
quality.

<details>
<summary>Technical details</summary>

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| Repository Standard no-file policy and PR/contribution guidance |
Standard ownership, Markdown, Natural Language | One policy owner;
canonical actual-record verification | Aligned |
| Organization Standard community/review/default rows | Standard
ownership, Markdown | Other community defaults preserved; PR-file
requirements/exceptions removed | Aligned |
| Repository Governance defaults and reconciliation evidence | Design
ownership, Markdown | Required-source row removed without changing live
controls | Aligned |
| Markdown linter comment | YAML/Markdown standards | Only obsolete
PR-template commentary changed; parsed configuration values are
identical | Aligned |
| Repository-policy regression block | PowerShell/Pester, source
inventory | Own-policy links, no tracked PR file,
case/extension/directory detection, unaffected issue forms | Aligned |

The corrected regression checks were run against exported frozen
guidance with no commits: five actual policy cases failed while eleven
preservation/path cases passed. Current source checks recognize
uppercase/lowercase PR file names, alternate extensions and
multiple-template directories, while leaving issue forms and canonical
PR Format docs unaffected. MSXOrg/docs contains no tracked GitHub
PR-template file.

Independent full, non-truncated default-source reads confirmed these
**still-present** files at the measured immutable sources:

| Repository | Source | File |
| --- | --- | --- |
| MSXOrg/.github | `0c67251812ea306543f3a14ab473ae357cfb76ac` |
`.github/pull_request_template.md` |
| PSModule/.github | `f424237c98b5b020f80e8c9563dbc37256fc1ec0` |
`.github/pull_request_template.md` |
| PSModule/Yml | `93d2656563a719d99416b9e13a05e65f6f815498` |
`.github/pull_request_template.md` |
| PSModule/PSSemVer | `1a621b14286331569f4d1ffd4643999c2a2a6ca8` |
`.github/pull_request_template.md` |

These are measured source/consumer counterexamples with separate removal
owners, not evidence that the new no-file state has already landed. The
Project's complete 71-repository inventory additionally identified the
stale
[PSModule/Template-PSModule#42](PSModule/Template-PSModule#42)
candidate as separately owned reconciliation.
[PSModule/Process-PSModule#525](PSModule/Process-PSModule#525)
tracks the bounded producer anatomy/audit requirement reconciliation;
central/default validators have separate owners. Their
publisher/Build/runtime behavior remains outside this documentation
revision.

The [#231](#231) owner
confirmed its clean frozen branch and no pending overlapping edits. The
exact community composition boundary is the PR-template rows/paragraphs
only: preserve its conditional local-contribution rule and all other
inherited defaults while adopting the new no-file policy links. No
#196/#208/#230/#231 tracked branch was edited here.

</details>

<details>
<summary>Related references</summary>

- Resolves [#226](#226)
- References [#231](#231)
- References
[PSModule/Process-PSModule#525](PSModule/Process-PSModule#525)

</details>

## Changed: Release-bound authoring starts from actual artifact
publication

Before drafting the title, results, adoption actions or compatibility
decision, resolve the actual latest successful artifact publication for
the same product, target and channel and verify its immutable source.
Pin that artifact/source and the exact candidate PR source, verify
intended lineage and compare those source trees. The complete delivered
range includes earlier merged, skipped or unshipped changes; the
ordinary PR-base diff remains separate implementation/reviewer evidence,
not the note boundary.

A GitHub Latest hint, moving tag, assumed highest version or overall
failed run is not publication-baseline proof. Module publication to
Gallery counts even when later GitHub completion fails: the next module
record starts from its already-published source. Completing that older
GitHub record does not make module changes new again. Multiple artifact
targets/channels have independently pinned consumer baselines and
applicability.

Resolve missing/unverifiable evidence, ambiguous scope and diverged
lineage explicitly. A verified initial publication has reviewed
whole-candidate coverage and initial adoption instructions, not a
fabricated predecessor or no-action/patch assumption. Re-read
publication and candidate identities before readiness/snapshot capture
and refresh comparison, actions and compatibility when either changes.
This is the preserved authoring procedure, not a new publisher/version
resolver or Build/artifact-promotion design.

<details>
<summary>Technical details</summary>

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| Publication-baseline-first procedure, five result prompts and
readiness | PR Format, Markdown | Exact publication/candidate
identities, complete range and scoped PR diff | Aligned |
| Release Management source binding and note evidence |
Specification/design ownership | Actual artifact publication versus
version/completion baselines | Aligned |
| Thin PR-format skill and paired plugin metadata | Plugin
granularity/versioning, manifest tests | Prior 0.1.1 canonical
entrypoint retained | Aligned |

The anonymous Git experiment remains exact source-tree evidence:
published A-to-candidate C includes earlier unshipped B and current C,
while scoped B-to-C includes only the current PR. Simulated
Gallery-success/GitHub-failure evidence for B keeps module coverage at
B-to-C even after older GitHub completion. Changed candidate/publication
pairs change coverage, and unrelated lineage is rejected. Receipts were
simulated inputs, not a live publish or historical repair.

**Final committed/pushed head:**
`bc03a5992615f65d1d5346dc48e7506e80b8b6ca`. This ordinary commit refines
the previous `be8c340...` authoring correspondence without amendment or
history discard. Canonical anchors are [release-first
analysis](https://github.com/MSXOrg/docs/blob/bc03a5992615f65d1d5346dc48e7506e80b8b6ca/src/docs/Ways-of-Working/PR-Format.md#resolve-release-coverage-first),
[complete description
example](https://github.com/MSXOrg/docs/blob/bc03a5992615f65d1d5346dc48e7506e80b8b6ca/src/docs/Ways-of-Working/PR-Format.md#complete-description-example),
[repository file
policy](https://github.com/MSXOrg/docs/blob/bc03a5992615f65d1d5346dc48e7506e80b8b6ca/src/docs/Ways-of-Working/Repository-Standard.md#no-pr-template-files),
and [defaults source
guidance](https://github.com/MSXOrg/docs/blob/bc03a5992615f65d1d5346dc48e7506e80b8b6ca/src/docs/Capabilities/repository-governance/design.md#organization-defaults-repository).

Local validation passes: all 80 Pester tests in seven suites, 127
documentation pages plus contribution-guide lint, indexes/relative
anchors, seven cross-repository links, actual pinned Zensical 0.0.59
build and rendered new-anchor checks, zero PowerShell analyzer
diagnostics, existing plugin-manifest validation, and patch checks. The
parsed linter configuration remains unchanged. All five required hosted
checks succeed on this exact head:
[Lint](https://github.com/MSXOrg/docs/actions/runs/41243884162/job/124663205698),
[Build](https://github.com/MSXOrg/docs/actions/runs/41243884162/job/124663205920),
[Test](https://github.com/MSXOrg/docs/actions/runs/41243884162/job/124663205851),
[Links](https://github.com/MSXOrg/docs/actions/runs/41243884162/job/124663205928),
and [Cross-repository
links](https://github.com/MSXOrg/docs/actions/runs/41243883939/job/124663204724).
Both completed `pull_request` runs identify this source head.

**Complete current-head review:**
[5725019918](#209 (review))
is APPROVED on `bc03a5992615f65d1d5346dc48e7506e80b8b6ca`. The full
summary records no active/open or suppressed concerns; all review
threads are resolved and thread pagination is complete. The prior
be8c340 approval was not used as approval of this correction. This is
the automated author-side pass, not independent human approval or
permission to merge.

All five existing Task #226 plan items are fulfilled:
verified state/cases, bounded canonical authoring, directly coupled
policy/evidence/link reconciliation, native checks/current-head full
review, and final acceptance/immutable handoff. The scoped sweep covered
PR authoring, source/default validation, release/consumer and community
guidance; only Task #226 is the closing delivery leaf. The
existing native prerequisite
[#166](#166) is
completed. Its five-context required-check rule and the existing
approval/thread constraints remain unchanged; no live merge attempt,
injected failure or bypass was used.

</details>

## Changed: Effective decisions and release-history ownership are
preserved

`DefaultBump` still accepts patch/minor/major with documented shared
patch, repository settings, explicitly supplied supported caller
overrides and one explicit owned bump override in that order. Omitted
inputs inherit valid policy; invalid supplied settings and conflicting
owned signals fail even when another source supplies a level. An
effective default removes the need for a per-PR bump label, not the need
for compatibility evidence. The exact owned set remains `release:patch`,
`release:minor`, `release:major`, `release:prerelease` and
`release:skip`.

Verify actual native/shared producer controls or a supported adapter
before using signals. Prerelease uses the resolved bump; skip combines
with no other owned signal. Unmanaged routes omit all release
metadata/labels; this repository deploys Pages without a versioned
release artifact, so this PR retains neither a Release decisions block
nor a release label. No undecided caller-override interface, allocator,
publisher or live input is approved or implemented here.

Complete PR/release records remain the sufficient version-specific
upgrade history; resource docs describe supported target-state usage.
Mandatory intermediate operations and superseded actions remain
explicit. Campaign/native associations and completion-aware issue links
retain their established ownership. No migration-guide/changelog
duplication, date strategy, native dependency mutation, publication,
historical backfill, label/permission/rules edit, merge or auto-merge is
performed.

<details>
<summary>Technical details</summary>

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| Automation Labels, settings/decision rules, VS Code and
continuous-delivery guidance | Owning standards/capabilities | Accepted
default/signal, source validation and native mapping retained | Aligned
|
| Documentation Model, Fleet, workflow/readiness and Task/Bug planning |
Ways of Working, issue hierarchy, PR Format | Actual scoped
implementation evidence and sufficient consumer record preserved |
Aligned |

The existing PRs stay separate on main. Eventual landing is one at a
time with every remaining overlapping branch reconciled against advanced
main and CI/full review repeated. Other owners must consume the
refreshed immutable correspondence; their prior frozen example/file
expectations are not claimed current. This PR does not edit their
tracked candidates or waive their independent prerequisites.

</details>

<details>
<summary>Related references</summary>

- References [#196](#196)
- References [#208](#208)
- References [#230](#230)
- References [#205](#205)
- References
[#166](#166)

</details>

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

The critical documentation test suite uses backslashes that are treated literally on Ubuntu, causing every case to fail before validating filenames.

1 open issue

Review effort: Lite

This branch has not been deployed

No deployments
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.

Define settings-driven default release bumps

3 participants