Skip to content

Solution settings use canonical filenames - #233

Merged
Marius Storhaug (MariusStorhaug) merged 8 commits into
mainfrom
release-settings-filename
Nov 2, 2026
Merged

Marius Storhaug (MariusStorhaug) merged 8 commits into
mainfrom
release-settings-filename

Conversation

@MariusStorhaug

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Solution-owned settings use the conventional filename <name>.settings.yml. The release solution uses .github/release.settings.yml; module repositories retain .github/PSModule.yml through SettingsPath, including module release settings.

The documentation-content test file and CI documentation-index drift gate are removed. Functional tooling tests, linting, link validation, and site builds remain; no module migration or runtime loader is implemented here.

Removed: Tests that lock documentation content

tests/PR-Format.Tests.ps1 is deleted in full at the user's request, including its PR-format, filename, naming, and repository-policy assertions. No replacement tests of checked-in documentation or workflow content are added. The Naming standard no longer claims test coverage for its prose.

The follow-up audit covers all six remaining suites and both workflows. The remaining suites exercise scripts on temporary fixtures, PowerShell engine behavior, and plugin metadata/schema validity. They do not lock the actual documentation's wording or assert the actual workflows' contents. The user explicitly chose to retain these functional tool tests, together with linting, link validation, and site builds.

Technical details

The entire 329-line documentation suite is absent, including all 39 assertions it contained. Historical audit comments and earlier test totals describe preceding iterations, not tests present in this candidate. No replacement prose or workflow-content tests were introduced.

The complete scoped comparison is accepted main aa9b5cecc69f4cbe6aa04a5dd70ff9cdadeeac3d to candidate 8daf026a14036dee04786d371883e8871b5ec2f4. The latest bounded change removes drift enforcement without changing any test suite or index-generator logic.

Changed surface Standards checked Framework or domain docs checked Result
tests/PR-Format.Tests.ps1 (deleted) User-directed removal and test discovery Existing Pester suite discovery Aligned
Naming enforcement statement Naming, Natural Language, Markdown None (no framework-specific docs) Aligned

All 64 tests in the six retained functional suites pass on the current head, verified from the completed CI job. The six index-tool fixture cases also pass locally; these exercise optional diagnostics, regeneration, and line endings on temporary files, not drift in this repository's actual docs. No suite is rewritten to inspect the checked-in documentation or workflows.

The fresh exact-head review approves 8daf026a14036dee04786d371883e8871b5ec2f4 with zero new inline comments. All five required checks pass: Lint, Build, Links, Test, and Cross-repository links. The earlier consistency thread remains resolved. Publishing is intentionally skipped for this PR.

Related references

New: Solution-owned settings filenames identify their owner

Use the owning solution's name for its conventional settings filename. The Naming standard defines this once; repository, YAML, and release guidance link to it. The rule does not rename tool-mandated manifests, lockfiles, workflow filenames, or arbitrary YAML files, and it does not impose one directory on every solution. Supported explicit custom paths remain governed by each reader's existing input contract.

Module repositories keep .github/PSModule.yml through SettingsPath, including module release settings. The PSModule initiative records this supported exception and links to the framework's actual input and settings references. No module filename migration, second release settings file, or caller-input change is required here.

The VS Code framework design retains .github/vscode-extension.yml as an explicit supported naming exception. Its settings keys and interface are unchanged; a filename change requires a verified reader and separate template/caller migration.

Technical details
Changed surface Standards checked Framework or domain docs checked Result
src/docs/Coding-Standards/Naming.md Naming, Natural Language, Markdown, standard template None (no framework-specific docs) Aligned
src/docs/Coding-Standards/YAML.md YAML, Naming, Markdown None (no framework-specific docs) Aligned
src/docs/Ways-of-Working/Repository-Standard.md Repository Standard, Naming, Markdown Repository Governance required-files model Aligned
src/docs/Initiatives/PSModule.md Documentation Model, Natural Language, Markdown Process-PSModule workflow inputs and settings Aligned

Naming.md#solution-settings-files owns the rule; PSModule.md#module-settings and the VS Code configuration surface own the supported exceptions. Related guidance links to those owners rather than defining another rule. The directly related obsolete framework overview link is corrected to its actual canonical site route.

The module default was verified from Process-PSModule source 105e4dcefe1946782066aa50a5c7d3658319895a and the published workflow-input reference. The settings reference owns module keys and defaults. Neither the workflow, its input, schema, nor enriched runtime settings object changes here.

The earlier VS Code consistency finding remains addressed by its owning-guide exception, independently of the deleted assertion. The scoped issue-convergence search finds no additional complete ask satisfied by this naming slice; broader default-bump/keyed-route and lifecycle work stays separate.

Changed: Release settings use the release solution's canonical filename

The optional release-solution file is .github/release.settings.yml, replacing the documented release.config.yml convention. Its .github location, settings keys, schema, defaults, precedence, omission behavior, applicability, and required decision validation are unchanged. All 17 original current-guidance substitutions remain. This repository has no settings file or runtime loader to rename.

The former .github/auto-release.yml is migration evidence for the separately owned Release-GHRepository reader change, not a current alternative convention. ConfigurationFile remains the public input, distinct from its conventional default filename. This documentation PR does not deliver or release that reader. Consumers verify their producer revision and its migration record before adopting a changed default; module release settings remain under the supported PSModule.yml interface.

Technical details
Changed surface Standards checked Framework or domain docs checked Result
Release Management spec and design Documentation Model, Naming, Markdown Applicability, defaults, overrides, and decision validation Aligned
VS Code framework design Documentation Model, Naming, Markdown Existing extension interface and release configuration Aligned
Automation Labels and PR Format Natural Language, Markdown, owning standards Release-route applicability and complete-record ownership Aligned

The accepted release-range-first analysis, complete description example with one summary boundary, conditional release/default rules, Task/Bug planning, and repository-owned no-PR-template policy are preserved without tests of their prose. Runtime default/migration work belongs to PSModule/Release-GHRepository#109, not this source. No module file, loader, public input, Build/metadata/runtime schema, publisher, pin, permission, ruleset, marketplace, or consumer fleet change is included.

Related references

Changed: Documentation builds regenerate indexes without a drift gate

CI generates documentation indexes before building the site instead of rejecting an out-of-date generated table. A documentation edit no longer needs to satisfy an index-drift gate. The generator updates only the build checkout; this change adds no bot commit or source synchronization.

Optional local -Check diagnostics and functional tests of the generator remain available. Linting, link validation, and site builds still run. The contribution guide and script help describe this distinction; no tests inspect the actual workflow to enforce its contents.

Technical details
Changed surface Standards checked Framework or domain docs checked Result
.github/workflows/Docs.yml GitHub Actions, YAML Existing documentation build pipeline Aligned
.github/scripts/Update-DocumentationIndex.ps1 (help only) PowerShell, Natural Language Existing index generator interface Aligned
.github/CONTRIBUTING.md Markdown, contribution guidance Documentation authoring and build flow Aligned

The index step runs normal generation with no -Check flag. The index-generator implementation and all functional test suites are unchanged. The local generation-then-build path succeeds with repository-pinned Zensical 0.0.59; the changed contribution guidance is lint-clean and the scoped diff has no whitespace errors. The exact-head CI Build job also successfully executes Generate documentation indexes followed by the site build. Temporary build environments and output are cleaned without changing shared dependencies.

The Task records the audit, the user's selected boundary, and the completed verification. Its implementation and review gates are complete; the Task remains open for reviewed integration. This PR remains draft; native maintenance has merge_pr=false, GitHub auto-merge is off, and no live publication or merge is authorized. A later main change requires a refreshed comparison and exact-head validation.

Copilot AI previously approved these changes Nov 1, 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.

🟢 Approved

There are no active review issues blocking the documentation filename standardization.

No open issues 🎉

What changed in this PR

Standardizes the optional Release Management settings filename as .github/release.settings.yml across canonical guidance. This is a documentation change; released producers’ inputs and runtime loading behavior remain unchanged.

Changes:

  • Updates 17 filename references across five documentation pages.
  • Adds five filename checks and four semantic guards covering existing settings and release-decision requirements.
File Description
tests/​PR-Format.Tests.ps1 Adds canonical filename checks and guards for unchanged release semantics.
src/​docs/​Ways-of-Working/​PR-Format.md Updates settings references in PR authoring guidance.
src/​docs/​Ways-of-Working/​Automation-Labels.md Updates the optional settings path in release-label guidance.
src/​docs/​Capabilities/​vscode-extension-framework/​design.md Updates configuration and template-layout references.
src/​docs/​Capabilities/​release-management/​spec.md Updates settings references without changing applicability requirements.
src/​docs/​Capabilities/​release-management/​design.md Updates settings paths in examples, precedence guidance, and configuration tables.

Review effort: Balanced

@MariusStorhaug
Marius Storhaug (MariusStorhaug) marked this pull request as ready for review November 1, 2026 13:28
@MariusStorhaug
Marius Storhaug (MariusStorhaug) marked this pull request as draft November 1, 2026 21:49
@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title Release settings guidance uses release.settings.yml Solution settings use canonical filenames Nov 1, 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.

🟡 Changes recommended

The new mandatory naming rule conflicts with the extension framework guide’s prescribed .github/vscode-extension.yml filename, without a documented exception or verified filename migration.

1 open issue

Review effort: Balanced

Comment thread src/docs/Coding-Standards/Naming.md Resolved
Copilot AI previously approved these changes Nov 1, 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.

🟢 Approved

No active review issues block the settings-naming and release-guidance documentation changes.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

Copilot AI previously approved these changes Nov 2, 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.

🟢 Approved

No active review issues were identified for the settings-filename documentation changes.

No open issues 🎉

Review effort: Balanced

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.

🟢 Approved

No active review issues were identified for the settings-filename documentation and CI updates.

No open issues 🎉

Review effort: Balanced

Marius Storhaug (MariusStorhaug) added a commit that referenced this pull request Nov 2, 2026
Testing guidance prioritizes observable supported behavior, real
implementations, and safe actual APIs instead of assertions that merely
detect implementation edits. A fast credential-free local loop remains
available; protected live checks carry explicit prerequisites,
authorization, isolation, cleanup, and honest coverage evidence.

The shared plugin adds a thin testing-skill pointer. This is a
standards/plugin-source delivery, not a test-suite migration or consumer
rollout: existing installations are unchanged, and the focused skill
requires updating the shared `msx` plugin after this source is merged
and available.

<!-- ANNOUNCEMENT STOP -->

## New: A focused skill routes test work to the canonical policy

`msx-coding-testing` routes test design, authoring, and review to the
single [Testing
standard](https://github.com/MSXOrg/docs/blob/main/src/docs/Coding-Standards/Testing.md).
The skill copies no policy. Consumers can continue using their existing
general coding route; to gain the focused trigger, update their shared
`msx` plugin after the source is available. This PR does not install it
for them.

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

The actual plugin and marketplace entry advance together from `0.1.1` to
`0.1.2`. The independently managed marketplace metadata stays `0.1.0`.
Existing plugin tests pass (4 tests, 49 skill directories), both changed
plugin Markdown files lint cleanly, and the new pointer resolves when
explicitly passed to the existing link tool (1 target in 1 file).

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| `.github/plugin/msx/skills/msx-coding-testing/SKILL.md` |
Documentation Model, Natural Language, Markdown | Agent Plugin
Marketplaces design; sibling thin-skill pattern | Aligned |
| `.github/plugin/msx/plugin.json` and `.github/plugin/marketplace.json`
| Manifest identity and synchronized versions | Agent Plugin
Marketplaces design; plugin README | Aligned |
| `.github/plugin/README.md` | Documentation Model, Natural Language,
Markdown | Agent Plugin Marketplaces design | Aligned |

</details>

## Changed: Testing policy distinguishes functional evidence from edit
detection

Contributors and agents choose tests around supported functions,
commands, and APIs without an arbitrary mocked-unit-test ratio or
unnecessary remote calls for pure logic. Mocks and fakes are justified
exceptions with explicit limits; a fake or an unexecuted live check does
not prove that an external API works. A behavior-preserving refactor
must not fail tests solely because implementation text changed.

The engineering principle links to the owning policy instead of
requiring a cloud-free full suite. Independent expected results,
meaningful examined-unit counts, regression intent, linting, formatting,
static analysis, link checks, builds, and temporary-fixture tooling
checks remain valid. Production writes and unsafe, destructive, or paid
calls gain no authorization from this standard. No runtime, CI, or
existing-suite migration is included.

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

Scoped comparison: `MSXOrg/docs` base
`aa9b5cecc69f4cbe6aa04a5dd70ff9cdadeeac3d` to immutable candidate
`607cca0010fa08b9fee43c6f5b07c17c5a051253`, in two focused ordinary
commits. The complete diff contains seven files; no tests, scripts,
workflows, runtime dependencies, or settings-delivery changes are
imported. The worktree is clean.

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| `src/docs/Coding-Standards/Testing.md` | Existing standard shape,
Documentation Model, Natural Language, Markdown | None (no
framework-specific docs) | Fixed in this PR |
| `src/docs/Ways-of-Working/Principles/Engineering-Practices.md` |
Documentation Model, Natural Language, Markdown | Owning Testing policy
| Fixed in this PR |
| `src/docs/Coding-Standards/index.md` | Generated index and
recursive-navigation conventions | Repository README and contribution
instructions | Aligned |

Validation on the committed tree:

- Existing Pester runner: 80 passed in 7 suites; zero failed, skipped,
inconclusive, or unexecuted.
- Markdown lint: all 5 changed Markdown files, zero issues.
- Internal links: 127 documentation files scanned, all resolve.
- Cross-repository links: 7 targets in 131 files, all resolve; the new
skill pointer was checked separately as recorded above.
- Generated index verification and diff whitespace checks pass.
- Clean site build: repository-pinned Zensical `0.0.59`, restored in an
isolated environment, no issues. The global `0.0.50` mismatch was
detected and is not the pinned build evidence; no repository dependency
or shared tool was changed.
- Exact-head [Docs
CI](https://github.com/MSXOrg/docs/actions/runs/41501467382): Test,
Lint, Build, and Links passed; Publish skipped for the PR. Exact-head
[cross-repository
CI](https://github.com/MSXOrg/docs/actions/runs/41501467414) passed.
- Exact-head [Copilot
review](#235 (review)):
approved at `2026-11-02T18:38:24Z`, covering all seven changed files.
The explicit review loop returned clean with zero new comments; complete
review-thread pagination returned no threads.

The scoped Task records baseline/scenario reasoning, both commits, local
checks, CI/review evidence, and completed standards/convergence review.
Every implementation-plan item is complete; the Task remains open for
its normal reviewed-merge completion path. Targeted open issue/PR
searches for testing, mocks, and functional tests found no additional
fully convergent issue; the settings and release deliveries remain
separate. No policy-wording or structural-content tests were added, and
no existing suites were changed or deleted.

Native Agent merge was verified before enabling and read back afterward:
`enabled=true`, `address_reviews=true`, `fix_ci=true`,
`resolve_conflicts=true`, `merge_pr=false`. This is maintenance-only
authorization. The PR remains draft by request with GitHub auto-merge
unset; advancing readiness and any later merge require the appropriate
user/owner decision. No merge, enqueue, service publication,
permission/rule/label change, or consumer rollout was performed or
authorized. No protected live-API experiment campaign was run or
claimed. The inspected Docs route only publishes Pages on non-PR events
and does not invoke Release Management; no release-decision block or
labels are applied.

</details>

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

- Resolves #234
- References #233 (separate settings delivery; unchanged)

</details>
@MariusStorhaug
Marius Storhaug (MariusStorhaug) marked this pull request as ready for review November 2, 2026 19:52
@MariusStorhaug
Marius Storhaug (MariusStorhaug) merged commit 9453587 into main Nov 2, 2026
21 checks passed
@MariusStorhaug
Marius Storhaug (MariusStorhaug) deleted the release-settings-filename branch November 2, 2026 19:59
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.

Standardize solution-owned settings filenames

2 participants