Repository navigation
🚀 [Feature]: Module repositories share one auditable baseline - #525
Marius Storhaug (MariusStorhaug) wants to merge 31 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Super-linter summary
All files and directories linted successfully For more information, see the GitHub Actions workflow run Powered by Super-linter |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates Process-PSModule’s plugin and documentation to support auditing module repositories against a single canonical Template-PSModule baseline, and aligns Zensical documentation behavior with folder-derived navigation and shared MSX presentation defaults.
Changes:
- Adds a new read-only plugin skill (
psmodule-repository-audit) to compare a repository against a recordedTemplate-PSModulecommit while classifying template-owned vs repository-owned paths. - Updates migration skills/docs to treat
Template-PSModule/.github/zensical.tomlas the canonical module-site configuration and to omit explicitnavin favor of Zensical’s folder-derived navigation. - Vendors Tablesort locally for the docs site and adjusts linting to exclude minified third-party assets.
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates docs-site configuration guidance to reference Template-owned .github/zensical.toml. |
| docs/zensical.toml | Removes manual nav/CSS and switches Tablesort dependency to a vendored local asset. |
| docs/overrides/assets/stylesheets/navigation.css | Removes obsolete navigation-hiding CSS as folder-derived navigation is now intended. |
| docs/overrides/assets/javascripts/tablesort.min.js | Adds vendored/minified Tablesort library used by the docs site. |
| docs/overrides/assets/javascripts/tablesort.js | Adds keyboard activation support (Enter/Space) for sortable table headers. |
| docs/content/reference/repository-standard.md | Documents template ownership/reconciliation and the canonical .github/zensical.toml/no-nav contract. |
| docs/content/reference/pipeline-stages.md | Updates docs-stage description to reflect resolving canonical .github/zensical.toml and native navigation. |
| docs/content/guides/structuring-your-module.md | Aligns module structure guidance with template-owned Zensical profile and no-nav behavior. |
| docs/content/guides/calling-the-workflow.md | Updates workflow guidance to reference canonical template Zensical config resolution. |
| docs/content/get-started/repository-setup.md | Updates setup guidance to keep the template .github/zensical.toml and rely on folder-derived navigation. |
| AGENTS.md | Adds explicit “template impact” guidance for Process-PSModule changes. |
| .github/zensical.toml | Removes the duplicate generated-module Zensical profile from this repo. |
| .github/workflows/Docs.yml | Excludes minified assets from linting scope for docs workflow runs. |
| .github/plugin/README.md | Documents the new psmodule-repository-audit skill. |
| .github/plugin/psmodule/skills/psmodule-zensical-migration/SKILL.md | Reframes Zensical migration around canonical template profile + MSX precedence and folder-derived nav. |
| .github/plugin/psmodule/skills/psmodule-v8-upgrade/SKILL.md | Updates v8 upgrade procedure to require repository audit + Pester migration subprocedures and template alignment. |
| .github/plugin/psmodule/skills/psmodule-repository-audit/SKILL.md | Introduces the new audit skill definition and procedure. |
| .github/plugin/psmodule/plugin.json | Bumps plugin version to 1.1.0 and adds a keyword. |
| .github/plugin/marketplace.json | Bumps marketplace/plugin version metadata to 1.1.0. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Module authors get direct, evergreen procedures for bootstrap, coordinated development, framework-test exceptions, validation, module tests, and plugin-skill authoring. Descriptions state supported facts; procedures use active instructions and explicit conditions. This change revises guidance only. It requires no module, workflow, configuration, or dependency migration. Executable examples and runtime/version constraints remain unchanged. <!-- ANNOUNCEMENT STOP --> ## Changed: Module guides state direct procedures and supported facts The six guides replace conversational, vague, and future-delivery wording with present-state descriptions and verifiable actions. The test guide names the v5.1.1 action contract that the workflow uses and states its unsupported optional-control limitation without a future implementation promise. Its Pester declaration keeps the exact minimum and maximum from the existing code block, without the misleading `6.1.x` prose label. The bootstrap version-policy conflict and OS-qualified shared-resource example conflict remain explicit follow-ups. This prose delivery does not choose a new version policy or change executable examples. <details> <summary>Technical details</summary> **Source comparison and delivery.** Base `64ffb1d87f86bd5d487891fdb140b78385a00531`; final pushed head `d33a7e1773f9bde2527ae94fea7a8ed2c22a4acf`. Six small commits are pushed. This draft opened immediately after the first coherent commit, `5f5062cca628831bc4f3de8864c84bb2759ed6f7`. It stays in draft by request. No merge, auto-merge, Agent merge, or additional child session is used. **Manual review and before/after evidence.** Every assigned file is read in full before edits and in the final review, including unchanged passages and examples. All six files change; no assigned guide is omitted or given an unverified no-change result. | Exact changed path | Before | After | | --- | --- | --- | | `docs/content/get-started/module-bootstrap.md` | "the piece(s) every other function will depend on"; "first real release" | "contains the components that all other module functions require"; "first release (`v1.0.0`)". | | `docs/content/guides/module-development-orchestration.md` | "a second place where the implementation is silently changed" | "The orchestrator does not change a child's implementation without a recorded scope decision." | | `docs/content/guides/skipping-framework-tests.md` | "will cause the framework to skip"; "will log a warning" | "The framework skips only the identified test for that file. It writes the supplied reason as a warning in the build output." | | `docs/content/guides/validating-before-review.md` | "current enough that generated documentation will stay accurate" | "public-function links resolve and usage examples match the implemented parameters and outputs". | | `docs/content/guides/writing-module-tests.md` | "will expose them after"; "current v5.1.0"; a `6.1.x` label for a broader declaration | The pinned v5.1.1 contract does not accept the optional controls; the reusable workflow does not expose them. The declaration is introduced as "this Pester requirement". | | `docs/content/guides/writing-plugin-skills.md` | "an operational entry point for an agent; shared process and policy belongs" | "A skill is an agent's entry point. Shared process and policy belong in the documentation". | **Meaning and protected content.** The immutable source comparison verifies 10 byte-identical fenced examples, 54 headings unchanged except sentence case, and all 85 distinct per-file inline technical tokens retained. Manual comparison preserves public inputs/defaults, paths, framework-test IDs, warning semantics, discovery precedence, bootstrap rules, caller-provided `TestData`, and normative requirement strength. No normative requirement is presented as proof of CI enforcement. No link repair requires another owner's file. **Writing sources.** The fixed writing baseline is `MSXOrg/docs@1b0d4893c8fefabe604d04393068a8ff6f848082`: [Natural Language](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Natural-Language.md), [Writing Guide](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Writing-Guide.md), [Markdown](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Markdown.md), [Documentation](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Documentation.md), [Documentation Model](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Ways-of-Working/Documentation-Model.md), and the [guide template](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Ways-of-Working/Spec-Driven-Development-Templates.md#guide). The review also uses the [STEMG description](https://www.asd-ste100.org/about_STE.html), [STEMG FAQ](https://www.asd-ste100.org/STE_faq.html), and [ASD-STE100 Issue 9](https://doi.org/10.5281/zenodo.23666006), including relevant writing rules and dictionary entries. The reference PDF and extraction stay local; the verified PDF MD5 is `9c720341c350ed77943b2c73d01c716f`. No required writing source is unavailable. Automated checks do not prove full STE conformance. | Changed surface | Standards checked | Framework/source evidence checked | Result | | --- | --- | --- | --- | | `module-bootstrap.md` | Fixed writing baseline and guide template | Existing bootstrap branch/release contract; versioning reference | Exception - #573 preserves the policy conflict. | | `module-development-orchestration.md` | Fixed writing baseline and guide template | Existing child scope, handoff, integration, and release-readiness contract | Fixed in this PR. | | `skipping-framework-tests.md` | Fixed writing baseline and guide template | Source-code `FunctionCount` skip handling and warning output | Fixed in this PR. | | `validating-before-review.md` | Fixed writing baseline and guide template | Module structure, native-help, and test reference requirements | Fixed in this PR. | | `writing-module-tests.md` | Fixed writing baseline and guide template | Discovery/settings source, test/setup/teardown workflows, and pinned action interface | Exception - #571 preserves the executable sample conflict. | | `writing-plugin-skills.md` | Fixed writing baseline and guide template | Existing plugin README, directory structure, plugin metadata, and marketplace registration | Fixed in this PR. | **Read-only inspections and justified no-change results.** Supporting files/sections: `README.md`; `AGENTS.md`; `.gitignore`; `.github/actions/Get-PSModuleSettings/src/main.ps1`; `.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1`; `.github/workflows/workflow.yml`; `.github/workflows/Test-ModuleLocal.yml`; `.github/workflows/BeforeAll-ModuleLocal.yml`; `.github/workflows/AfterAll-ModuleLocal.yml`; `.github/workflows/Docs.yml`; `.github/workflows/Linter.yml`; `.github/workflows/Release.yml`; `.github/linters/.markdown-lint.yml`; `.github/linters/.textlintrc`; `.github/plugin/README.md`; `.github/plugin/psmodule/plugin.json`; `.github/plugin/marketplace.json`; `docs/zensical.toml`; and the relevant sections of `docs/content/reference/{versioning,powershell-module-standard,test-specification}.md`. They need no edit because this delivery changes guide prose, not their contracts, implementation, native help, tests, metadata, or configuration. The remote [Invoke-Pester action contract](https://github.com/PSModule/Invoke-Pester/blob/c5494aba3c07d7bfd81bdbbc9f301e8fa4a729fb/action.yml) is read at exact SHA `c5494aba3c07d7bfd81bdbbc9f301e8fa4a729fb`. The v5.1.1 tag independently resolves to that commit. Its interface lacks `Run.Shuffle`, `Run.ShuffleSeed`, `Run.Parallel`, `Run.ParallelThrottleLimit`, and `Debug.ShowStartMarkers`. Neither workflow action references nor Pester/runtime constraints change. **Exclusions.** Every other repository path is excluded: other getting-started and guide pages, reference pages, indexes, specifications, dictionary pages, assets/site design, plugin skills/metadata, code, tests/assertions, and configuration. Reserved release/workflow/structure/configuration surfaces remain with #524, #525, #531, #535, #537, #541, #548, and #549. #551 changes no documentation or native help. Live open-PR path ownership is checked before every commit; no other PR owns an assigned path. **Checks on the final head.** | Command or review | Result | | --- | --- | | `git diff --check 64ffb1d` | Pass. | | `npx --no-install markdownlint-cli2 --config .github\linters\.markdown-lint.yml` with the six exact assigned paths | Pass: 6 files, 0 issues. | | `zensical build --clean` from `docs` | Pass: "No issues found", exit 0. | | Existing `rules.terminology` through `TextlintKernel.lintText` | Pass: 6 final guides, 0 issues; an intentional `Powershell` positive control reports the `PowerShell` correction. | | Standard-library scoped Markdown/generated-HTML link review | Pass: 33 relative links, 9 rendered fragments, 0 issues. | | Exact committed `git show` source comparisons | Pass: 10 byte-identical fences, 54 stable headings, 85 retained per-file inline technical tokens, exact six-file scope. | | Six original wording cases | Each fails on the original baseline and passes at the final head. The additional misleading Pester-range label is absent. | | `ConvertFrom-Json` on plugin and marketplace metadata | Pass; both files are unchanged. | The direct terminology CLI is absent; the cache-only attempt confirms missing packages before a session-local restore. Its Windows CLI loader does not load the configured rule. The successful kernel invocation loads the existing Markdown parser and exact `rules.terminology` options from `.github/linters/.textlintrc`, with an active positive control. No repository dependency, linter, or configuration is added. No standalone link-check script exists in this snapshot; the scoped check uses Python's standard library and actual generated HTML. It does not claim exhaustive external-site validation. Generated site output and the temporary checker restore are removed after verification; the worktree is clean and local/remote commit counts are `0 0`. **Hosted status on the final head.** `gh pr checks 565 --repo PSModule/Process-PSModule --json name,state,link` reports 22 successful checks, one skipped Publish check, and no pending or failed checks. Copilot approves `d33a7e1773f9bde2527ae94fea7a8ed2c22a4acf` with "No open issues" and no inline comments. Final-head Build, Lint, Lint code base, CodeQL, and Analyze (actions) pass. No new local failure or scope blocker remains. The PR stays in draft for the requested acceptance review; these results do not authorize readiness or merge. **Plan and convergence.** #559 contains the current Task plan, pre-edit evidence, final acceptance evidence, and check results. Its author-side implementation steps are complete; the issue stays open until the normal review/merge path completes. The scoped sweep examines campaign issue titles and declared paths, plus bootstrap/major, version-policy, and `RUNNER_OS` searches. Only #559 is fully covered. #571 and #573 remain non-closing follow-ups; other campaign issues name excluded surfaces. The docs-only path set does not invoke the release workflow, so no release-decision block or `release:*` label applies. </details> <details> <summary>Related references</summary> - Resolves #559 - References #571 - References #573 </details>
Entry pages describe the framework's reusable PowerShell modules, GitHub Actions workflows, and task automation in direct, present-tense English. The coverage example states its existing minimum of 80%, and the changed descriptive text uses en-US spelling. No consumer action is needed for these prose edits. <!-- ANNOUNCEMENT STOP --> ## Changed: Entry guidance describes existing automation directly The README and site index use direct descriptions instead of promotional or time-relative wording. The coverage example says `at least 80%` because the existing implementation rejects coverage only when it is below the target. The release guide changes only two descriptive uses of `labelled` to `labeled`. The edits preserve the documented capabilities, supported scope, destinations, examples, and obligations. They do not change the framework, caller interface, configuration, release behavior, or site design. The complete fixed-secret/TestData adoption section stays intact. Its separate source-bound decision remains open in #578. <details> <summary>Technical details</summary> ### Exact delivery source and plan | Item | Identity | | --- | --- | | Repository | `PSModule/Process-PSModule` | | Base | `main` at `64ffb1d87f86bd5d487891fdb140b78385a00531` | | Head | `entry-guidance-prose` at `79bac09b581e80b27bae5dad5d87adffac0ff219` | | Comparison | Four files, 10 insertions, 10 deletions | | First real commit | `93b95eb6935d43c3e350bcdd293e19c128dc7aa3`; this draft opened immediately after that push | | Final state | Five small commits pushed; draft; no auto-merge; no labels | This is a fresh main-based delivery, not an amendment to a proposal or first-pass PR. The owner handback includes the explicit extension for the two adjacent index statements at original lines 80-81. No other paragraph-rewrite permission is inferred from the spelling allowance. The issue plan covers the full ten-page read, pinned writing sources, pre-edit expectations, protection baselines, existing checks, early draft, small commits, live ownership checks before each commit, the source-backed threshold clarification, and the final acceptance record. All scoped implementation and verification work is complete. Merge and issue closure remain separate, future review actions. ### Before/after acceptance evidence [The original pre-edit record](#560 (comment)) records the source, expected edits, protection baseline, and existing checks before repository changes. [The threshold clarification record](#560 (comment)) records the parent review request and the below/equal/above experiment before that follow-up edit. All eight exact replacement expectations pass at the final head. They cover nine matches, including the two release-spelling matches. | Region | Before, at the exact base | After, at the exact head | | --- | --- | --- | | README opening | [Line 3](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/README.md#L3): `corner-stone` paragraph | [Line 3](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/README.md#L3): a direct core-workflow description; end-to-end GitHub Actions, all five lifecycle capabilities, and the Gallery destination remain. | | Index spelling | [Line 18](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/index.md#L18): `behaviour` | [Line 18](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/index.md#L18): `behavior`; the rest of the paragraph and `.github/PSModule.yml` remain unchanged. | | Released adjacent index statements | [Lines 80-81](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/index.md#L80-L81): `infuses GitHub ... fullest extent` and `DevOps functionality ... missing` | [Lines 80-81](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/index.md#L80-L81): reusable PowerShell modules, GitHub Actions workflows, and automated module delivery. No shipping, exclusivity, completeness, or enforcement claim is added. | | Index task automation | [Line 83](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/index.md#L83): `We empower ... effortlessly ... without distractions` | [Line 83](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/index.md#L83): repeated-task automation lets developers write code for PowerShell solutions; both consumers and contributors remain explicit. | | Index goal-setting link | [Line 85](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/index.md#L85): `Where we are headed ...` | [Line 85](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/index.md#L85): a neutral imperative link to the same goal-setting model; link text and destination remain unchanged. | | Index canonical guidance | [Line 89](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/index.md#L89): `are now canonical` | [Line 89](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/index.md#L89): `are canonical`; authority and destination remain unchanged. | | Coverage example | [Lines 17-23](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/guides/configuring-the-pipeline.md#L17-L23): `will require that code coverage is 80% before passing` | [Lines 17-23](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/guides/configuring-the-pipeline.md#L17-L23): `This example runs all steps and requires at least 80% code coverage to pass.` The exact YAML is unchanged. | | Release-guide spelling | [Lines 22 and 58](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/guides/versioning-and-releases.md#L22-L60): `labelled` twice | [Lines 22 and 58](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/guides/versioning-and-releases.md#L22-L60): `labeled` twice; all other release guidance is identical. | The complete changed-file comparison permits only these declared replacements. All other text in those four files remains unchanged, including the index introduction, the development-framework heading/anchor, and every configuration/release example. ### Ten-page review and no-change results All ten pages were read in full. The four changed paths and exact regions are listed above. The other six pages need no correction under the narrow spelling allowance. Their complete file bytes and Git blobs remain unchanged. This is a scoped no-change result, not a claim that every paragraph received an unrestricted rewrite or full STE certification. | Reviewed no-change path | Before and after | Identical blob | | --- | --- | --- | | `docs/content/get-started/index.md` | [Before](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/get-started/index.md) / [after](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/get-started/index.md); procedure and outcomes unchanged | `72cc182b8e790c4b5420277d69a61de934a02791` | | `docs/content/get-started/repository-setup.md` | [Before](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/get-started/repository-setup.md) / [after](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/get-started/repository-setup.md); setup, permissions, secrets, and caller YAML unchanged | `790cf5eafb2946cad7c61398e7f80c7fcf6cc8a5` | | `docs/content/get-started/your-first-release.md` | [Before](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/get-started/your-first-release.md) / [after](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/get-started/your-first-release.md); triggers, labels, and release conditions unchanged | `e8b00fb1c220108790517d151dc59b707d895928` | | `docs/content/guides/calling-the-workflow.md` | [Before](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/guides/calling-the-workflow.md) / [after](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/guides/calling-the-workflow.md); whole file unchanged, including the protected complete TestData adoption section | `8e18d7e18025b68a1abd318c115719607d3683c3` | | `docs/content/guides/github-app-authentication.md` | [Before](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/guides/github-app-authentication.md) / [after](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/guides/github-app-authentication.md); secret mapping, token scope, and permission ceilings unchanged | `cf35933a019eaf977a8ce39ad940ab809edfe9b5` | | `docs/content/guides/structuring-your-module.md` | [Before](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/guides/structuring-your-module.md) / [after](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/guides/structuring-your-module.md); layout, help URLs, dependency rules, and source-tree examples unchanged | `c4f36cf327b9e5f045a02b7d05bbb54e7bb39334` | | Changed path | Base blob | Head blob | | --- | --- | --- | | `README.md` | `c2d2257e3948184ebb8db36268f1c7490e0abcbc` | `924672d74ec5927a3bc4b0591b0311cbd9f4e038` | | `docs/content/index.md` | `02cc155fc51c96deba28eaf9ae1f9e899baf2d97` | `03a57bba4e97779ec2e35b9764f024fcb37ba454` | | `docs/content/guides/configuring-the-pipeline.md` | `b77d4cdf2272ad592234076eec0a48afd692a926` | `ae643ebc87483b2154091fa98a681be35416ae40` | | `docs/content/guides/versioning-and-releases.md` | `fe226002f077d1e0e7a01a01514d8112b3303317` | `7694d507ba5f6b0f1d47bb9f2cf04e23d68a9578` | ### Exact contract-preservation results The session-local, one-off comparison passes against the source tree. No comparison script, prose inventory, enforcement tool, test, or dependency is added to the repository. | Protected surface across the ten pages | Result | | --- | --- | | 25 complete fenced blocks | Byte-identical, including every YAML, command, JSON, tree, and example block | | 66 headings | Identical; no heading, anchor source, or navigation destination changes | | 234 inline-code spans | Identical technical names, paths, inputs, defaults, secrets, permissions, versions, labels, and expressions | | 79 extracted Markdown link/image targets and the HTML image target | Identical; no destination changes | | Nine front-matter blocks | Identical | | 75 normative modal tokens, in sequence | Identical; the complete replacement comparison also protects all other contract wording outside the released spans | | Other repository paths | No diff; workflows, implementation, tests, site configuration, assets, and design remain unchanged | The protected [fixed-secret/TestData section, lines 76-104](https://github.com/PSModule/Process-PSModule/blob/79bac09b581e80b27bae5dad5d87adffac0ff219/docs/content/guides/calling-the-workflow.md#L76-L104), including its heading, all seven old input names, mapping instructions, and complete adoption example, is byte-identical. Its source-LF region is 1,045 bytes with SHA-256 `96ac1034b74d2c76c8fc770d3f21a196b3d7cfd685210974d0a90d63bc61f54a` at both base and head. The existing CRLF worktree region is 1,074 bytes with SHA-256 `2a90ca000acc18720d4f281a8fb42e8b92206e9e968f9e70fc8dc3c39b37b05f` before and after. The entire calling-guide blob is unchanged. The coverage text retains this exact sample: ```yaml Test: CodeCoverage: PercentTarget: 80 ``` The [settings reference](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/docs/content/reference/settings.md#L53-L55) still defines the separate default as `0`. The [existing workflow mapping](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/.github/workflows/Get-CodeCoverage.yml#L27-L35) forwards that setting. The existing implementation [accepts coverage greater than or equal to its target](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/.github/actions/Get-PesterCodeCoverage/src/main.ps1#L157) and [fails only below target](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/.github/actions/Get-PesterCodeCoverage/src/main.ps1#L389-L396). The pre-edit experiment executes those extracted comparisons with target 80: 79.99 fails, 80 passes, and 80.01 passes. `At least 80%` clarifies this existing boundary; it does not change policy or behavior. The built-site comparison passes 12 explicit checks. It confirms the new prose, both reader roles, the existing development-framework anchor, the goal-setting and canonical-guidance destinations, both `labeled` sentences, the migration heading and all seven old input names, and the exact decoded coverage YAML. Code text is read without inserting whitespace between syntax-highlight spans. ### Existing checks and outcomes The existing Markdown configuration passes on all ten pages before and after the edits: markdownlint-cli2 0.24.0, markdownlint 0.42.0, 10 files, 0 issues. The existing codespell 2.4.2 CLI passes with the repository configuration. The existing Zensical 0.0.50 build passes before and after, reporting `No issues found`. The exact base-to-head whitespace check passes. These commands use the same ten-file set as the recorded runs: ```powershell $pages = @( 'README.md', 'docs\content\index.md', 'docs\content\get-started\index.md', 'docs\content\get-started\repository-setup.md', 'docs\content\get-started\your-first-release.md', 'docs\content\guides\calling-the-workflow.md', 'docs\content\guides\configuring-the-pipeline.md', 'docs\content\guides\github-app-authentication.md', 'docs\content\guides\structuring-your-module.md', 'docs\content\guides\versioning-and-releases.md' ) npx --no-install markdownlint-cli2 --config '.github\linters\.markdown-lint.yml' @pages codespell --config '.github\linters\.codespellrc' @pages Push-Location -LiteralPath 'docs' zensical build --clean Pop-Location git --no-pager diff --check 64ffb1d 79bac09 ``` No standalone link-check command exists in this repository. The existing site build reports no issues; separate exact link/heading comparisons and rendered destination checks confirm no link regression from these edits. This is not a new internet-wide link-validation claim. An initial `python -m codespell` invocation used the wrong entry point; the existing `codespell` CLI passes. No repository dependency is changed. Hosted snapshot at `2026-11-04T13:59:39Z`, for head `79bac09b581e80b27bae5dad5d87adffac0ff219`: | Hosted check | Result | | --- | --- | | [Docs Build](https://github.com/PSModule/Process-PSModule/actions/runs/41842493106/job/126617424058) | Success | | [Docs Lint](https://github.com/PSModule/Process-PSModule/actions/runs/41842493106/job/126617423266) | Success | | [Repository lint](https://github.com/PSModule/Process-PSModule/actions/runs/41842493216/job/126617425457) | Success | | [CodeQL](https://github.com/PSModule/Process-PSModule/runs/126617863969) | Success | | [Analyze (actions)](https://github.com/PSModule/Process-PSModule/actions/runs/41842487969/job/126617413004) | Success | | [Fresh Copilot review](#579 (review)) | Approved at the exact final head; no inline comments | | [Docs Publish](https://github.com/PSModule/Process-PSModule/actions/runs/41842493106/job/126617713362) | Skipped for the pull-request event | No hosted check or review remains pending at this snapshot. Earlier-head approval is not used as final-head evidence. The parent current-head content review also accepts `79bac09b581e80b27bae5dad5d87adffac0ff219` after independently checking the complete four-file diff and the protected structures across all ten pages. This content acceptance does not change draft or merge state. ### Standards, ownership, and scope alignment The fixed writing source is [MSXOrg/docs at `1b0d4893c8fefabe604d04393068a8ff6f848082`](https://github.com/MSXOrg/docs/tree/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs). The review covers Documentation Model; Natural Language; Writing Guide; Markdown; Documentation; the guide/reference templates; and the Task, PR, workflow, and commit formats. The official [STE overview](https://www.asd-ste100.org/about_STE.html), [FAQ](https://www.asd-ste100.org/STE_faq.html), and relevant Issue 9 rules/dictionary were consulted through the verified local manual. No manual material is republished. These edits apply STE writing practices; scans, counts, and lint do not establish full STE conformance. | Changed surface | Standards checked | Framework/source docs checked | Result | | --- | --- | --- | --- | | README opening | Pinned Natural Language, Writing Guide, Markdown, Documentation, Documentation Model | Existing README and site-index capabilities | Fixed in this PR | | Released site-index spans and spelling | Same pinned writing standards and artifact model | Source index and exact extended owner handback | Fixed in this PR | | Coverage-example description | Same pinned writing standards and guide format | Settings reference, workflow input mapping, source coverage comparison/failure boundary | Fixed in this PR | | Release-guide descriptive spelling | Pinned en-US and Markdown rules | Existing release paragraphs, examples, and settings references | Fixed in this PR | The source, issue scope, live owner heads, and intersecting paths are rechecked before each of the five commits and at final handoff. The source remains `64ffb1d87f86bd5d487891fdb140b78385a00531`. Active owner heads are unchanged: | Existing PR | Verified head | | --- | --- | | #524 | `0fb4234056b3bd4574c58cd4edd6dff2544d70f6` | | #525 | `03e24f359265b7a4106f8f71f769cba1ba12bf3c` | | #531 | `50f16425797ec67375d47262c8c79d3507fb2b21` | | #535 | `7204e1eb418f99848c396f7e3597152a70e362ff` | | #537 | `af22c475873b21b8afa5ba7ecb87cb2bf8efabd2` | | #548 | `eb3eb0cb8fb6f0b7822c79ad9b2781d17127dcd4` | | #549 | `663d87b9c11e7d5662a986f662e4f7499e816f55` | | #551 | `7a00cbb9cd72baddf14d990019cf5da3c9c3600e`; no intersection with the ten-page set | #565 through #570 retain disjoint paths and unchanged heads. No existing owner branch is awakened or edited. No new caller, release, compatibility, shipping, or enforcement contract is imported from a proposal. The issue-convergence search covers the open `documentation-writing-alignment` issues and the active owners intersecting this ten-page set. This diff resolves only #560. It does not resolve the reserved interface, source-contract, or TestData adoption work. No additional closing reference is added. No scoped wording decision remains. #578 retains the actual baseline/target, source-bound release-record, compatibility, and exact #535 / #537 owner decisions. This PR makes none of those decisions. The PR remains draft. No merge, ready transition, auto-merge, Agent merge, release-label, or publication action is performed. </details> <details> <summary>Related references</summary> - Resolves #560 - References #578; protected source-bound TestData adoption reconciliation remains separate and open. </details>
Keep no-file PR authoring and supported PSModule.yml/SettingsPath intact. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Two active documentation issues remain: the repository-standard supply-chain guidance conflicts with the new floating @v8 reference, and the audit skill duplicates shared policy instead of linking to the canonical documentation.
2 open issues
Review effort: Lite
Keep generated-site defaults in the shared standard and describe the controlled v8 caller consistently. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Human assessment is needed because the changes contain moderate documentation inconsistencies and a critical template requirement conflict that could mislead audits and prevent new repositories from satisfying the stated standard.
No open issues 🎉
2 resolved since last review
Review effort: Lite
Migration skill readers can distinguish the selected immutable template layout from the requested documentation layout. The v8 and Zensical framing uses explicit present-tense conditions instead of time-dependent or authoring-session statements. Consumer upgrade behavior does not change, and no consumer action is required. <!-- ANNOUNCEMENT STOP --> ## Fixed: Migration framing states its conditions The v8 anatomy tree applies only when the selected immutable template revision has that layout. The documentation framing states the selected-template condition and the requested-v8-upgrade condition directly. The Zensical starter configuration is conditional on the selected immutable template revision; a `docs/` tree remains possible or absent. All supported layouts, paths, migration actions, optional-versus-required distinctions, and preserve/report alternatives remain unchanged. Documentation moves only when the existing requested-migration condition applies. The Zensical procedure still requires a successful site build before removal of obsolete active configuration. This change does not perform or authorize a consumer upgrade. <details> <summary>Technical details</summary> ### Exact delivery and source evidence The scope is limited to the linguistic handback in #561. Both complete skills are reviewed. Before editing, exact source spans, expected replacements, and protected-content checks were recorded in the issue and in session-local JSON evidence. All three target statements were absent before editing and match their recorded replacements in the accepted source tree. | Released source | Before | After | | --- | --- | --- | | [v8 anatomy, source line 57](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/.github/plugin/psmodule/skills/psmodule-v8-upgrade/SKILL.md#L57) | `The current template's default repository anatomy is:` | `If the selected immutable template revision has this layout, its default repository anatomy is:` | | [v8 framing, source lines 127-133](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/.github/plugin/psmodule/skills/psmodule-v8-upgrade/SKILL.md#L127-L133) | `the current template uses` and `this v8 upgrade request uses` | `If the selected immutable template revision uses` the template configuration, and `If the requested v8 upgrade uses` the listed documentation paths. The optional asset distinction remains exact. | | [Zensical framing, source lines 79-83](https://github.com/PSModule/Process-PSModule/blob/64ffb1d87f86bd5d487891fdb140b78385a00531/.github/plugin/psmodule/skills/psmodule-zensical-migration/SKILL.md#L79-L83) | `The current ... repository historically stores` | `If the selected immutable ... revision contains` the starter configuration. The requested-layout and build-before-removal conditions remain exact. | Scoped comparison: base `main` at `64ffb1d87f86bd5d487891fdb140b78385a00531`; accepted source head `21cc8b3c5f6f5bce6fe245ffd181fea5d0c496c4` on `migration-framing-prose`. The two source commits are `c43c36e1012859388d378a838c27e318893d933c` for the two v8 framing spans, then `21cc8b3c5f6f5bce6fe245ffd181fea5d0c496c4` for the two-line Zensical framing. This PR opened as a draft immediately after the first commit. Live issue ownership and unchanged main source blobs were rechecked before each source commit. The preparation head is `3b7f435d5db009740fb32686652fefb5663ddf06`. Its immediate parent is the accepted source head, and both full trees are `37516ee1cda57797e1de094ea8078a3cace927c6`. This one ordinary empty commit refreshes native PR evidence without a source change. Local, origin, remote commit, and live PR identities match; the worktree is clean. Only these two files differ from the base, with 11 insertions and 8 deletions: | File | Base blob | Head blob | | --- | --- | --- | | `.github/plugin/psmodule/skills/psmodule-v8-upgrade/SKILL.md` | `0c27e026a451cccb60196bee04e398486d86aa0d` | `be52d02d835f639786cff51122c3ecd873f98eb0` | | `.github/plugin/psmodule/skills/psmodule-zensical-migration/SKILL.md` | `b6e19feffb3afa6420b499f0166097c648d5ce2a` | `c0f49052a8b25dde9be6f3cf60e45ed30926ca11` | ### Protected content A one-off comparison reverses only the three recorded framing replacements and compares every other source text byte exactly, with CRLF normalized to LF. All ordered front matter, headings, fenced blocks, inline literals, and links also compare exactly. | Skill | Front matter | Headings | Fenced blocks | Inline literals | Links | | --- | --- | --- | --- | --- | --- | | v8 upgrade | 1 | 11 | 6 | 62 | 13 | | Zensical migration | 1 | 8 | 2 | 73 | 7 | This protects the exact caller YAML, triggers, permissions, concurrency, v8 reference, secrets, TestData examples, template/version selection, anatomy tree, layout alternatives, optional source directories and test phases, optional assets, migration actions, validation procedures, stop conditions, and normative force. No example becomes universal. All other skills, proposal branches, metadata, site design, runtime, repository tests, and dependencies remain unchanged. No migration command runs. Full-tree equality transfers this accepted source proof to the preparation head without another source audit or tool installation. ### Existing local checks and limits The source-delivery checks pass on both files: repository Markdown configuration with zero issues (`markdownlint-cli2` 0.24.0, `markdownlint` 0.42.0), repository spelling configuration, and `git diff --check`. The existing YAML parser accepts both unchanged front-matter maps; both unchanged plugin metadata JSON files parse. The one relative skill target resolves. All 20 links remain exact. No standalone plugin link/front-matter checker exists in this checkout; unchanged external URLs are not claimed as network-checked. The plain textlint CLI reports no rules before source edits and cannot resolve its configured rule packages on this host. After the actual missing-package failure during source delivery, those tools were restored only in the npm cache. The existing `textlint` 15.8.0, `terminology` 5.2.16, and `comments` 1.3.0 rules pass through their installed API with the unchanged repository options and Markdown plugin: zero messages on both immutable source files and both final files. An anonymous incorrect-term probe confirms rule execution, and a comment probe confirms the existing filter. No repository tooling or dependency is added. No tool was installed for the source-identical refresh. ### Fresh native review on 2026-11-11 Before the refresh, exact accepted-head inventories contain zero check runs, zero check suites, zero status contexts, and zero `pull_request` workflow runs. The November 4 checks are no longer retained. This confirmed absence permits the single normal empty trigger commit; no existing run or suite is available to rerun. No reset, rebase, amend, force push, workflow dispatch, or second trigger commit occurs. The one explicit native Copilot review request is sent at `2026-11-11T14:58:07.633Z` for `3b7f435d5db009740fb32686652fefb5663ddf06`. Timeline event `35811053045` records the request at `14:58:10Z`. Native review run `43043642020` has event `dynamic`, exact head/base association with PR 581, and a successful `copilot-pull-request-reviewer` job `130601746030`. Fresh [review `5860764388`](#581 (review)) approves that exact head at `14:59:40Z`; the author is `copilot-pull-request-reviewer[bot]` with association `CONTRIBUTOR`. Participant associations are read before feedback. Complete post-review thread pagination reports zero threads and zero unresolved threads. No finding or prose fix is required, and no second review is requested. Historical review `5769461963` is dismissed and retains its November 4 submission time, even though GitHub reports its commit association on the new head. It is not counted as fresh approval. The source-identical diagnostic retry below does not require another review. ### Actual PR CI and both Linter attempts | Actual native evidence | Event and source association | Result | | --- | --- | --- | | [Linter run `43043526453`, attempt 1, job `130601329239`](https://github.com/PSModule/Process-PSModule/actions/runs/43043526453/job/130601329239) | `pull_request`; PR 581; head `3b7f435d5db009740fb32686652fefb5663ddf06`; base `64ffb1d87f86bd5d487891fdb140b78385a00531` | Failure at `2026-11-11T15:01:30Z`; POWERSHELL validator process crash. | | [Same Linter run, attempt 2, job `130606199466`](https://github.com/PSModule/Process-PSModule/actions/runs/43043526453/job/130606199466) | Original `pull_request` event; same PR, head, base, and merge source; failed-job diagnostic retry only | Success at `15:09:31Z`; actual POWERSHELL validator success is verified below. | | [CodeQL run `43043522362`](https://github.com/PSModule/Process-PSModule/actions/runs/43043522362), job `130601319547` (`Analyze (actions)`) | Native `dynamic` CodeQL route; exact head; `refs/pull/581/head` | Success. `CodeQL` check `130601595792` also succeeds on the exact head. | | [Native review run `43043642020`](https://github.com/PSModule/Process-PSModule/actions/runs/43043642020), job `130601746030` | `dynamic/agents/copilot-pull-request-reviewer`; exact head/base and PR 581 | Success; fresh exact-head approval above. | The skill-only paths do not match Docs workflow path filters, so no Docs/Pages run is expected. No version, release, publication, consumer-upgrade, or dispatch-only check is required or manufactured by this refresh. ### Attempt 1: observed runtime failure and source boundary The failed job runs pinned Super-linter `4ce20838b8ab83717e78138c5b3a1407148e0918` / container `v8.7.0`, reporting PowerShell `7.6.2`. The POWERSHELL validator exits with `Unhandled exception. System.ArgumentException: String cannot have zero length.` The stack contains `System.Reflection.AssemblyNameParser..ctor`, `AssemblyNameParser.Parse`, and `AssemblyName.ParseAsAssemblySpec`. No PowerShell file/line lint defect is reported. The sole check annotation is the Ubuntu-latest migration notice, not this failure cause. The complete failure log, version, exception, job metadata, and source-boundary evidence are retained locally and in the leaf audit. The available log does not establish a lower-level cause. The actual PR merge ref is `ed067cb166fecee7058b7a296d04063dee28314c`, with base and preparation-head parents. Its full tree is also `37516ee1cda57797e1de094ea8078a3cace927c6`. The reviewed-parent-to-head delta is empty, and the base-to-head PowerShell/workflow/linter-configuration delta is empty. The only source changes remain the three released Markdown framing spans. On attempt 1, all 13 other Super-linter contexts succeed, including MARKDOWN, NATURAL_LANGUAGE, SPELL_CODESPELL, and YAML. Only `--> Linted: POWERSHELL`, status `58640569011`, is `error`. Those child passes do not make attempt 1 pass. No introduced or directly coupled three-span prose correction is demonstrated, and no source, workflow, runtime, dependency, tooling, or policy change is made to force green. ### One authorized diagnostic retry: same source, successful result The root coordinator explicitly authorizes one bounded same-event/head failed-job diagnostic retry despite unproven transience. The sole native `gh run rerun 43043526453 --failed` request is sent at `2026-11-11T15:05:52.347Z` and succeeds at `15:05:54.227Z`. It reruns only the failed job on the original PR event. No new trigger, dispatch, installation, suppression, source/configuration/runtime change, lifecycle change, or review re-request occurs. A bounded read-only observer completes within its six-minute limit. Attempt 2 runs job `130606199466` from `15:06:01Z` to `15:09:31Z`. Its checkout log identifies the same merge ref `ed067cb166fecee7058b7a296d04063dee28314c`. It reports the same `pwsh: 7.6.2` and `Successfully linted POWERSHELL` at `15:09:24Z`. New POWERSHELL status `58641300307` is `success`, and all 14 latest merge-ref status contexts are success. The four latest head checks are also success: Linter, native reviewer, CodeQL, and Analyze (actions). The runtime crash does not reproduce on this single diagnostic attempt. No source fix is made, and the successful retry is not proof of the original root cause. Attempt 1 remains recorded as failed; it is not rewritten or hidden. No further retry is requested. No preparation blocker remains in the current native gates; the root alone decides any later merge/publication. ### Standards and completion boundary The fixed [MSX writing source](https://github.com/MSXOrg/docs/tree/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs) supplies the Documentation Model, Natural Language, Writing Guide, Markdown, Documentation, guide template, and Task/PR formats. The official STE overview and FAQ, relevant Issue 9 rules and dictionary entries, and en-US inform only the released wording. The [Issue 9](https://doi.org/10.5281/zenodo.23666006) manual stays local; its PDF checksum matches the official record. No certified or full STE conformance is claimed. | Changed surface | Standards checked | Framework docs checked | Result | | --- | --- | --- | --- | | Released v8 framing | Fixed MSX writing/documentation sources; relevant STE guidance; en-US | README, complete skill, plugin guide, and exact issue handback | Fixed in this PR | | Released Zensical framing | Same fixed writing sources and applicable guide format | Complete skill, plugin guide, and exact issue handback | Fixed in this PR | The README, plugin structure, shared guides, headings, anchors, and metadata need no change for this bounded framing correction. Independent content review accepts source head `21cc8b3c5f6f5bce6fe245ffd181fea5d0c496c4`; the preparation head has the identical full tree. Both skill diffs stay within the exact framing handback and preserve templates, paths, optional/required distinctions, scope, and procedure. The PR remains open and non-draft under the user's later lifecycle decision. Agent merge stays enabled for `address_reviews`, `fix_ci`, and `resolve_conflicts`, with `merge_pr=false`; GitHub `auto_merge` remains null. This preparation changes none of those settings, labels, or schedules. The root coordinator alone controls the later global merge/publication sequence. The issue stays open; no merge or publication is authorized here. Issue-convergence scope remains the exact handback and open migration-title issues. No additional issue is fully resolved by this two-file diff. Only #561 has a closing reference. </details> <details> <summary>Related references</summary> - Resolves #561 - References #525, #535, and #537 for unchanged template/caller/authoring ownership. </details> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retain the template-backed baseline and no-file policy while preserving explicitly requested documentation layouts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep the duplicate generated-module profile removed while retaining main documentation-site wording. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Two active documentation issues remain: the upgrade skill references an unsupported audit mode, and the repository standard ambiguously identifies the required CONTRIBUTING.md path.
1 open issue
1 resolved since last review
Review effort: Lite
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Human assessment is needed because unresolved plugin skill-discovery and marketplace-schema compatibility concerns could affect whether schema-validating clients can discover or install the plugin.
No open issues 🎉
1 resolved since last review
Review effort: Lite
There was a problem hiding this comment.
🔵 Needs a closer look
Human assessment is needed because the change combines a critical plugin-manifest compatibility risk with moderate keyboard-accessibility and marketplace-schema concerns that may affect strict clients and users.
No open issues 🎉
Review effort: Lite

Module maintainers and agents can audit repositories against one executable
Template-PSModulebaseline while preserving repository-owned code and content. Standard module sites use the shared MSX presentation profile, native folder-derived navigation, and no cookie-consent prompt.Removed: PR-template files from the module baseline
Pull requests use canonical MSX PR Format guidance, not repository-local or centrally inherited automatic template files. Audits treat their absence as intentional and report existing files as stale drift for separate removal work. Upgrades must not add, recreate, copy, or generate a PR-template file from an older template snapshot or restore a central fallback.
Authors keep the complete release record in the PR body and follow the canonical release-range-first method for release-bound changes. This bounded correction needs no caller-input, TestData, Pester-dependency, module-asset, or documentation-configuration changes; the other standardization work below is preserved.
Technical details
The user-directed correction is committed at
d2786d5e974e2430f756612cd66fe9dde6603756, based on the verified #525 candidate9c41fb1cce0a846af994100ead738b2e2ed5a84f. Its scoped implementation comparison changes only these three files, with 44 insertions and two deleted baseline rows:docs/content/reference/repository-standard.mdTest-first assertions failed nine of 14 checks on the assigned candidate; physical-file absence and the four preservation/scope checks passed. All 14 pass after the correction. Exact content comparisons preserve every unrelated paragraph and every other tracked path, including CONTRIBUTING, legal/ownership/client routes, community-policy defaults, caller/TestData/Pester contracts, Zensical configuration, navigation, consent and assets. No consumer repository or other owner's workspace was edited.
Targeted Markdown lint passes all three files; both plugin manifests parse and their identity/version agrees; all four skill YAML headers and relative skill links validate. Site TOML parses, both JavaScript syntax checks pass, the repository analyzer reports zero regression-script diagnostics, and
zensical build --clean --strictcompletes without issues. The generated authoring section and seven reference tables were checked before task-created build output was removed.Immutable source correspondence: Template-PSModule default commit
ff935a5745db222c5f28e59df45931b617c2c50bhas a complete 20-file inventory and no PR-template file; this correction therefore needs no new template PR. The separately owned stale PSModule/Template-PSModule#42 removal remains separate. The canonical owner froze MSXOrg/docs#209 atbc03a5992615f65d1d5346dc48e7506e80b8b6ca. The complete description example, release-first procedure, no-file repository policy and defaults source guidance are the current correspondence; old template-scaffold links are not current evidence. The source's five hosted checks and automated approval 5725019918 were independently verified on that exact source head. This does not approve #525, merge the canonical source, or complete other owners' removals.Actual #525 readiness hold: GitHub reports this producer head unmergeable against current
main64ffb1d87f86bd5d487891fdb140b78385a00531(mergeable_state: dirty). Docs and Linter are active workflows but no PR runs/checks exist on this head; only dynamic CodeQL/Actions analysis and the reviewer checks succeeded. Copilot review 5725014128 is COMMENTED ond2786d5e974e2430f756612cd66fe9dde6603756, with zero new inline comments but an explicit keyboard-sorting human-assessment flag. The unchanged vendor source assigns lowercasetabindex, while the initializer assumes focusable headers. That wider Zensical concern is outside the bounded no-file correction. The review's "No open issues" line and successful reviewer check are not clean approval. Current-main composition and full actual-head checks/review remain required. Keep #525 draft; no merge/rebase or auto-merge was performed or is authorized by this revision.Additional declared-schema checks expose unchanged composition gaps: the plugin's declared schema rejects its existing
/skillsproperty, and the marketplace's declared schema URL returns HTTP 404. Their manifest blobs exactly match the assigned candidate. The local Copilot command is an unavailable installation shim, so installed-plugin validation is also blocked. These were not repaired by widening the no-file revision.Related references
New: Read-only module repository audits
The PSModule plugin gains
psmodule-repository-audit, a read-only comparison skill for one repository or a fleet campaign. It records the template commit, classifies template-owned and repository-owned paths, reports drift, and leaves remediation to separate delivery work.Changed: Migration skills consume the template
The v8 and Zensical migration skills use
Template-PSModulerather than embedding another copy of standard files. The v8 upgrade now requires the dedicated Pester 6.1.0 procedure to inventory and validate every test set instead of treating a declared dependency or one green workflow as sufficient.Changed: Documentation follows folders
Process-PSModule no longer maintains an explicit Zensical navigation array or hides the Dictionary from the generated tree. Zensical derives navigation from folders, places index pages first, and orders remaining pages alphabetically. The site uses the MSX vendored table sorter and keyboard-accessible initializer.
Changed: Community and release defaults follow their owners
Process-PSModule keeps its repository-specific contribution guide under
.github/. The standard Code of Conduct, security policy, and support guidance are provided byPSModule/.github; local copies are needed only for repository-specific overrides..github/release.ymlis not part of the baseline because Process-PSModule does not use GitHub's built-in release configuration. The coordinated template update reflects the same contract for new module repositories.Technical details
Template-PSModule; the audit skill does not maintain or edit either repository..github/zensical.tomlfrom Process-PSModule. The executable module profile lives in Template-PSModule; this repository's hand-authored site keepsdocs/zensical.toml.[project.extra.consent]is not part of the generated-module template because that profile enables no cookie-based measurement.@v8major reference..githuband points to organization-owned Code of Conduct and support guidance; the documentation standard records the inherited community-policy exception and excludesrelease.ymlfrom the baseline.node --check,docs/zensical.tomlparses, explicitnavis absent, the vendored scripts match the pinned MSX sources after line-ending normalization, the local contribution path exists without root duplicates, the organization-owned policy files exist, andzensical build --cleancompletes without warnings..github/plugin/**.github/workflows/Docs.yml.github/*.mddocs/**Relevant issues (or links)
Related work