Repository navigation
Description
Context and request
Align MSXOrg/docs tests with the existing Testing standard. Keep supported tool behavior and legitimate package quality. Remove assertions that freeze source structure, fixed skill inventories, or implementation-only call counts. Deliver one independent pull request without policy changes, merge, or auto-merge.
#240 now meets the review-readiness gates. It is not merged. The Task stays open for its normal merge closure. The user-approved narrow heading defect fix also resolves #241.
Acceptance criteria
- Every discovered suite, assertion group, runner, and validation entry point has a source-bound disposition, real entry point, observed result, and policy reason.
- Remove source-function extraction, fixed catalog-name/count assertions, and the pin updater's exact transport-call count. Do not add equivalent snapshots, regex source guards, copied schemas, or inventory tests.
- Preserve real checker, generator, updater, and PowerShell dependency behavior on controlled inputs, with independent expected results and demonstrated red-green checks.
- Retain format/static-analysis/link/package/build/pin/security controls. Do not invent a plugin validator, runtime, framework, or production feature to retain a source assertion.
- Keep production behavior unchanged except for the user-approved narrow heading-rendering fix. Preserve supported formatting and GitHub's literal underscore/attribute text.
- Keep the accepted removal of documentation-content suites and checked-in index-drift enforcement intact. Complete exact-head CI and full review, then hand off without merge automation.
Source identity and technical decisions
| Source | Verified identity |
|---|---|
| Initial live main and clean worktree | 33ccfaae6d905150f104dd763e34bf36cb2de1f9 |
| Current default-branch baseline | 1b0d4893c8fefabe604d04393068a8ff6f848082 |
| Reviewed candidate | ee3c17855cb282cdf236fc764df3f45502f4c057 |
| Unchanged Testing policy blob | fd153feef3ddac71c587eb2c547623a01379379f |
Both complete recursive tree responses report truncated=false and the same six suite files. The original 64 tests pass at the initial baseline. #237 merged into default-branch commit 1b0d489 during the audit and added two fixed catalog assertions. This branch was refreshed from that merged main commit with an ordinary merge; no open PR branch was imported. Its writing/skill/manifest changes remain baseline context, not this PR's delta.
The scoped candidate diff changes exactly four files: .github/scripts/Test-CrossRepositoryLink.ps1, tests/PluginMarketplace.Tests.ps1, tests/Test-CrossRepositoryLink.Tests.ps1, and tests/Update-GitHubActionPin.Tests.ps1. The executable production change stays inside the existing heading-rendering helper; related help and source-provenance text match that change. No workflow, pin, security setting, policy page, unrelated script, or repository notes file changed. The worktree is clean.
The user approved the narrow heading fix after the real command exposed an underscore defect hidden by the AST-loaded unit cases. The final helper reuses PowerShell's bundled Markdig.Signed assembly with CommonMark plus GitHub autolinks/strikethrough, not site-only generic attributes. It does not install a parser or use generated renderer IDs. The existing GitHub slug algorithm and all 14 original expected anchors stay unchanged. PowerShell v7.0.0 ships Markdig.Signed 0.18.1; the selected public APIs were verified at immutable renderer source dd6418d108c6cb66f2196ad04fad5d59a231e72e. The PowerShell 7.0 minimum is unchanged. This is source/API compatibility evidence, not a claim that PowerShell 7.0 was executed.
The repository owns no plugin installer or separate production manifest validator. Retain four existing static package-quality checks, not a claim of runtime or complete schema coverage. Their public format basis is the package profile, marketplace contract, Agent Plugins manifest contract, and Agent Skills specification. A fixed skill-directory inventory does not exercise client discovery, so remove both such groups and their setup.
Implementation plan
- Verify repository instructions, live source identities, policy, complete tree inventory, and focused baselines.
- Remove the pin-updater call-count assertion, repeat the 4-test run, commit, and open the linked draft immediately.
- Audit every suite group and invoked implementation; classify package quality separately from behavioral coverage.
- Rewrite all 14 internal slug cases through the real checker command, preserve independent expected results, and prove the replacement checks fail.
- Apply the user-approved narrow heading fix with command-level regression coverage.
- Refresh from merged default-branch source and remove its two fixed catalog assertions without changing the product catalog.
- Read both non-clean review summaries fully; fix all 5 valid findings with red-green cases, specific replies, and resolved threads.
- Run focused and combined local tests, independent oracles, negative package controls, static analysis, and checkout link validation.
- Verify all final-head CI checks and meaningful executed-unit counts.
- Read the full exact-head approving review, complete the standards pass and scoped issue-convergence sweep, and verify all threads and native closing references.
- Publish the review-ready PR and deliver the final handoff without merge automation.
Evidence inventory
| Suite or group | Disposition, real entry point, observed result, and policy reason |
|---|---|
| Marketplace uniqueness and source resolution | Retain 2 static quality cases through the existing Pester gate, JSON reader, and filesystem checks. The current package and an anonymous positive fixture pass; duplicate identities fail. No specific plugin name or count is required. |
| Manifest identity/version/schema selector | Retain the existing public package-profile check. The canonical selector is required by Agent Plugins; matching advertised identity/version is the marketplace contract. This is not full-schema or installer coverage. |
| Agent Skills metadata | Retain the required-file/frontmatter/name/description checks; rename the group to state its limited scope. All 4 package-quality cases pass. No instruction phrase is checked. |
| Writing skill inventory | Remove the count-of-one and fixed writing-skill directory assertions from the newly merged baseline. They read checkout composition without invoking a client or owned discovery implementation. |
| Issue/PR/workflow skill inventory | Remove the three hard-coded directory requirements and the unused enumeration setup. Do not replace them with another list, source search, snapshot, or validator. |
| Requires-Modules ranges | Retain all 3 real child-PowerShell resolution cases; all pass. |
| Requires-Modules exact versions | Retain both installed/missing-version cases through real child scripts; both pass. |
| Requires-Modules GUIDs | Retain all 3 matching, wrong, and omitted identity cases through the real engine; all pass. |
| Requires-Modules exits | Retain all 3 actual process exit-code cases, with proof that the child body ran; all pass. |
| Cross-link broken targets | Retain 4 actual checker-command cases for missing file, anchor, checkout target, and branch; all pass on isolated repositories and loopback HTTP. |
| Cross-link resolving targets | Retain 5 actual command cases for remote/local/branch/README resolution and repeated-target caching; all pass. One-request assertions measure the documented network/quota contract, not an arbitrary call sequence. |
| Cross-link GitHub/site distinctions | Retain the 3 actual command cases for GitHub punctuation, rejection of the site slug, and duplicate-heading suffixes; all pass. |
| Cross-link internal slug cases | Rewrite all 14 AST-extracted cases through the complete checker command, with the original expected anchors unchanged. Add 17 positive formatting/literal-underscore cases and 2 incorrect-anchor cases. All 33 pass; no source-function extraction remains. |
| Cross-link zero-work/scope | Retain all 3 empty/inapplicable-scope failures through the command; all pass. |
| Cross-link unavailable service/quota | Retain all 4 quota, stop-requesting, HTTP failure, and unreadable-repository cases. They distinguish unavailable service from broken targets; all pass. |
| Documentation link checker | Retain all 6 real-command footnote/reference/inline-link cases on temporary pages, with independent exit codes and diagnostics; all pass. |
| Index generator unchanged inputs | Retain both LF/CRLF byte-preservation cases through supported -Check; both pass. |
| Index generator stale inputs/repair | Retain 2 rejection and 2 repair cases on controlled temporary tables, descriptions, and line endings; all pass. This does not enforce checked-in index drift. |
| Action pin updater | Retain all 4 real-updater update/encoding/WhatIf/unchanged/error cases on temporary YAML and controlled release responses; all pass. Remove only the exact count of 6 REST calls. |
| Runner and CI entry points | Preserve Pester recursive discovery and zero-work guards, named Test job, lint, local and cross-repository links, index generation, site build, pins, and security settings. All other tracked non-Markdown executable/configuration entry points were inspected; no other test harness or assertion group was found. |
Validation and independent evidence
| Command or control | Actual result at the reviewed candidate |
|---|---|
pwsh -NoLogo -NoProfile -File .\.github\scripts\Invoke-PesterSuite.ps1 |
83 passed, 0 failed, 0 skipped, across 6 suites. PowerShell 7.6.9 on Windows; unchanged pinned Pester 6.0.1 and expected GUID. |
| Focused suite paths through the same runner | Pin updater: 4 pass before/after. Marketplace: 6 pass before catalog cleanup, 4 after. Cross-link checker: 52 pass. |
Invoke-ScriptAnalyzer with repository settings |
0 diagnostics in all 4 changed files, using PSScriptAnalyzer 1.25.0. |
git diff --check against current main |
Pass. |
pwsh -NoLogo -NoProfile -File .\.github\scripts\Test-DocumentationLink.ps1 |
All links resolve across 130 documentation files. |
| Docs CI | Successful pull-request run at ee3c17855cb282cdf236fc764df3f45502f4c057. Lint, Build, Links, and Test succeed; CI reports 83 pass/0 fail/0 skip. Publish is intentionally skipped. |
| Cross-repository Links CI | Same exact head: 7 in-scope links checked across 134 Markdown files; every link resolves. |
The actual github-slugger 2.0.0 implementation at immutable source 3461c4350868329c8530904d170358bca1d31448 independently verifies all 31 positive anchor expectations. Existing Node v26.12.1 was used; no package was installed and the oracle is not a new dependency. GitHub Markdown API mode=gfm separately confirmed visible heading text, including all review examples and literal generic attributes. Production renderer output is not used to compute expected anchors.
Red-green evidence is retained in the Task audit trail and #241. All 64 original tests passed, while the complete command rejected the valid underscore anchor. The first expanded command run exposed 6 failures in 39 cases. The first review's 7 examples fail before correction (42 pass/7 fail), then pass. Both generic-attribute acceptance/rejection cases fail before the syntax correction (50 pass/2 fail), then pass (52 pass/0 fail). An attempted name filter selected 0 cases and is explicitly excluded from evidence.
Anonymous package controls use the unchanged quality suite on temporary roots: a positive retained-field fixture gives exit 0 and 4 passes; duplicate identities give exit 1 with 1 expected failure. An empty catalog gives exit 1 through both the runner and direct Pester. No count guard or inventory assertion was added. Session-owned experiment directories were removed after verification; evidence remains in GitHub.
Full review disposition
| Full summary read | Exact head | Result and action |
|---|---|---|
| Review 5768183866 | 9e19827aac3ca91ec3d44680c289324d6e196790 |
Changes recommended: 4 valid findings for adjacent formatting, nested delimiter runs, unequal backtick runs, and unmatched backticks. Every example has command-level regression coverage; all 4 threads have specific replies and are resolved. |
| Review 5768530980 | 617914a03a6318e3997800527903480befa5d828 |
Changes recommended: confirms the previous 4 fixes, adds 1 valid generic-attribute issue. Both correct/wrong anchors have red-green coverage; its thread has a specific reply and is resolved. |
| Review 5768986265 | ee3c17855cb282cdf236fc764df3f45502f4c057 |
APPROVED. The complete summary states No active review issues and No open issues, and confirms the remaining issue is resolved. No new inline comments. All 5 threads are resolved, with hasNextPage=false verified. |
The clean result is based on the full summary, exact source identity, and resolved threads, not only the runner exit or new-comment count. The native PR closing references were verified for this Task and the convergent user-approved Bug.
Standards, documentation, and convergence
The final alignment pass re-read the process, testing, PowerShell, and applicable format guidance. The changed surfaces are aligned with Testing, PowerShell Testing, Functions/reuse-before-build, Code Layout, Documentation, Natural Language, the package profile, and the actual checker/updater contracts. The PR contains one alignment row per changed file. .github/CONTRIBUTING.md and the optional generator -Check guidance already describe the retained commands correctly. Only help tied to the changed heading helper required an update. No policy prose or repository notes were added. The route builds and deploys Pages; no Release Management block or labels apply.
The scoped open-issue sweep covers tests, tooling, plugins, and anchors. It finds this Task, the fully delivered user-approved #241, and the unrelated policy PBI #105. No other issue converges. Published-URL, AGENTS-routing, navigation, and writing-campaign work remain outside this diff. No aggregate is closed.
Coverage limits and safety
Marketplace checks are partial static package checks, not complete schema validation, client installation, activation, routing, or trigger-reliability evidence. Release/API mocks and loopback responses prove caller behavior, not live authentication or every vendor failure mode. They permit safe deterministic quota exhaustion, missing targets, and unavailable responses. No live pin-updater API check or plugin-client installation test was run.
The existing read-only live cross-link CI job is separate evidence: Ubuntu 24.04, repository-scoped workflow token, public repository reads, no remote writes or resources to clean up. Tool pins, checks, security settings, and production behavior outside the approved helper remain unchanged. GitHub auto-merge and app Agent merge are off. No merge or release publication was performed.
Campaign qualification supplied by the coordinator
This is coordinator-observed evidence, not this Task's audit of those repositories: complete recursive Git trees (truncated=false) for MSXOrg/.github main at 0c67251812ea306543f3a14ab473ae357cfb76ac and PSModule/.github main at 4e0092de8f208b11e0d4607ced93471607aa748e contain community/agent guidance, issue forms, attributes/ignore configuration, and media, but no test code, runners, scripts, dependency manifests, hooks, or validation workflows. No empty PR is warranted for those snapshots. Their open branches, including PSModule/.github#89, were not imported. PSModule/Process-PSModule has a separate scoped audit; this Task covers only MSXOrg/docs.
The review-ready PR card is published and the final handoff is saved with the owning coordinator. GitHub confirms the PR is open, ready for review, unmerged, at ee3c17855cb282cdf236fc764df3f45502f4c057, with auto-merge unset. App Agent merge is disabled and its merge action is false. No scoped blocker remains. This Task and the Bug stay open for their normal PR merge closure; no merge is authorized by this handoff.
Activity
MariusStorhaug commentedon Nov 4, 2026
Opened the independent draft #240 immediately after commit cf72f9a. The pin-updater suite passed all 4 tests before and after the assertion removal. The remaining suite audit, combined checks, and exact-head review are pending. Auto-merge is off.
MariusStorhaug commentedon Nov 4, 2026
The user approved adding the narrow #241 heading-rendering fix and command-level regression to #240. The Task acceptance criterion now permits only this production exception. The original 64 tests passed; the replacement command run exposed the correct underscore anchor failing, while 32 other checker tests passed. The expected value remains unchanged.
MariusStorhaug commentedon Nov 4, 2026
The authorized narrow fix is committed separately at 5064ff1 and pushed to #240. The real checker command now passes all 42 focused tests with no skips; all 14 original expected anchors remain unchanged. Eight additional positive cases cover literal underscores, emphasis, nested formatting, and inline code, and one negative case rejects the underscore-stripped anchor. All 22 expected anchors were independently verified with github-slugger 2.0.0 at 3461c4350868329c8530904d170358bca1d31448. PSScriptAnalyzer reports zero diagnostics in the changed helper and tests. The remaining package-quality audit and final combined validation/review are pending.
MariusStorhaug commentedon Nov 4, 2026
Completed the audit on current default-branch source 1b0d489 after #237 merged. Removed its two fixed skill-catalog groups, retained and negatively exercised the four generic package-quality checks, and recorded every suite group and real entry point in the Task body. Candidate 9e19827 passes all 73 local tests with no skips, all 4 changed-file analyzer checks, and links across 130 documentation files. Final CI and exact-head review remain open.
MariusStorhaug commentedon Nov 4, 2026
The first exact-head review is not clean: its full Changes recommended summary and 4 inline threads identify real heading-format regressions introduced by the initial fix. All are in scope. The Task plan now requires failing command-level cases for the 7 examples, use of the already-shipped ConvertFrom-Markdown command instead of more bespoke delimiter parsing, renewed validation, replies/resolution, and a fresh exact-head review. No dependency or broader production scope is added.
MariusStorhaug commentedon Nov 4, 2026
Commit 617914a fixes all 4 first-review findings with one shared root correction: the helper reuses PowerShell ConvertFrom-Markdown rather than implementing delimiter parsing. All 7 review examples first failed through the real command and now pass. All 49 checker cases and all 80 repository tests pass without skips; all 29 expected anchors have independent verification. Each review thread has a specific reply and is resolved. Current-head CI and a new exact-head review are pending; prior green results are not treated as final-head evidence.
MariusStorhaug commentedon Nov 4, 2026
The second full review confirms the 4 earlier fixes but finds one real GitHub-versus-site syntax regression: generic attributes are stripped by PowerShell advanced rendering. Read the full summary and new thread; readiness remains blocked. The updated plan keeps the same bundled Markdig library, selects only CommonMark plus GitHub inline extensions inside the existing helper, and adds correct-anchor/wrong-anchor plus autolink controls before implementation. No package, runtime, or framework is added.
MariusStorhaug commentedon Nov 4, 2026
Commit ee3c178 resolves the second review finding. Both generic-attribute acceptance/rejection cases failed before the change and now pass. The helper uses only CommonMark plus GitHub inline extensions from the same PowerShell-bundled renderer; minimum public APIs are verified in the shipped 0.18.1 source. All 52 checker cases and all 83 repository tests pass. All 5 review findings have replies and resolved threads. Fresh current-head CI and full review remain required.
MariusStorhaug commentedon Nov 4, 2026
The final exact-head review 5768986265 APPROVED source ee3c178. Its full summary states no active/open issues; all 5 earlier findings have fixes, regression cases, replies, and resolved threads. All 83 tests pass locally and in exact-head CI, with every validation job green and no skips. Finalized the complete source/group inventory, oracle evidence, coverage limits, standards pass, and scoped convergence in the Task body. Only publication and handoff remain; no merge automation is enabled.