Repository navigation
Native help and action descriptions state framework behavior directly - #570
Open
Marius Storhaug (MariusStorhaug) wants to merge 6 commits into
Open
Marius Storhaug (MariusStorhaug) wants to merge 6 commits into
Marius Storhaug (MariusStorhaug) wants to merge 6 commits into
Conversation
6 tasks done
Super-linter summary
All files and directories linted successfully For more information, see the GitHub Actions workflow run Powered by Super-linter |
Contributor
There was a problem hiding this comment.
🟢 Approved
No active review issues are recorded for the PowerShell help and GitHub Action description updates.
No open issues 🎉
What changed in this PR
This prose-only PR clarifies native PowerShell help and GitHub Action descriptions across the Process-PSModule pipeline. Runtime behavior and caller configuration remain unchanged.
Changes:
- Uses imperative synopses and direct, present-tense descriptions in 22 PowerShell files.
- Revises descriptions in 12 action metadata files while preserving inputs, defaults, expressions, and version constraints.
- Corrects misleading explanations of existing behavior; protected examples and broader help-contract issues remain separate follow-up work.
| File | Description |
|---|---|
.github/actions/update-index/src/Helper.psm1 |
Clarifies index helpers and API wrapper behavior. |
.github/actions/update-index/action.yml |
Simplifies the index update description. |
.github/actions/Test-PSModule/action.yml |
Clarifies test options and result descriptions. |
.github/actions/Structure-Site/src/main.ps1 |
Clarifies site preparation help. |
.github/actions/Structure-Site/action.yml |
States documentation and configuration purpose directly. |
.github/actions/Install-Zensical/src/main.ps1 |
Simplifies CLI installation help. |
.github/actions/Install-Zensical/action.yml |
Clarifies the CLI’s site-build purpose. |
.github/actions/Install-PSModule/src/PSModule/PSModule.psm1 |
Revises helper help and explanatory comments. |
.github/actions/Install-PSModule/action.yml |
Identifies the bundled helper module. |
.github/actions/Inject-SiteScripts/src/main.ps1 |
Clarifies script injection help and path comments. |
.github/actions/Inject-SiteScripts/action.yml |
Corrects “checked-out” wording. |
.github/actions/Get-PesterTestResults/src/main.ps1 |
Corrects report-name and failure-detection comments. |
.github/actions/Get-PesterTestResults/action.yml |
Clarifies collection and expected-suite descriptions. |
.github/actions/Get-PesterCodeCoverage/src/main.ps1 |
Clarifies aggregation and action-failure comments. |
.github/actions/Get-PesterCodeCoverage/src/Get-PesterCodeCoverage.Helpers.psm1 |
Simplifies indentation help and removes a stray character. |
.github/actions/Get-PesterCodeCoverage/action.yml |
Clarifies coverage collection and inputs. |
.github/actions/Expose-TestData/action.yml |
Describes validation and environment export directly. |
.github/actions/Document-PSModule/src/helpers/Build-PSModuleDocumentation.ps1 |
Corrects documentation-generation help and index comments. |
.github/actions/Document-PSModule/action.yml |
Simplifies summary and working-directory descriptions. |
.github/actions/Build-ZensicalSite/src/main.ps1 |
Clarifies site build and output-location help. |
.github/actions/Build-ZensicalSite/action.yml |
Replaces the stale output-normalization description. |
.github/actions/Build-PSModule/src/helpers/Build/Update-PSModuleManifestAliasesToExport.ps1 |
Clarifies alias-update help and source-file comments. |
.github/actions/Build-PSModule/src/helpers/Build/Get-RootLevelVariables.ps1 |
Corrects AST wording and assignment comments. |
.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleVariablesToExport.ps1 |
Describes public variable source inspection. |
.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleFunctionsToExport.ps1 |
Describes function and filter source discovery. |
.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleCmdletsToExport.ps1 |
Clarifies manifest-based cmdlet discovery. |
.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleClassesToExport.ps1 |
Describes class and enum discovery. |
.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleAliasesToExport.ps1 |
Clarifies manifest-based alias discovery. |
.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 |
Simplifies root-module assembly and ordering help. |
.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 |
Clarifies manifest creation and output location. |
.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleBase.ps1 |
Describes copying files and creating an empty root module. |
.github/actions/Build-PSModule/src/helpers/Build/Add-ContentFromItem.ps1 |
Uses a present-tense content-assembly description. |
.github/actions/Build-PSModule/src/helpers/Build-PSModule.ps1 |
Distinguishes build synopsis from operation details. |
.github/actions/Build-PSModule/action.yml |
Clarifies build purpose and input descriptions. |
Review effort: Balanced
Marius Storhaug (MariusStorhaug)
dismissed
Copilot’s stale review
via
November 4, 2026 13:00
aa99266
This was referenced Nov 4, 2026
Open
Marius Storhaug (MariusStorhaug)
marked this pull request as ready for review
November 4, 2026 14:43
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Native help and action descriptions state framework operations directly in en-US. Contributors and callers can read helper operations and action inputs without future-tense boilerplate. Runtime behavior and caller configuration remain unchanged; callers need no adoption changes.
Changed: Native help and action descriptions state supported operations
Native help uses imperative synopses and present-tense descriptions. Action descriptions identify build, documentation, installation, test-reporting, site, test, and index operations directly. The changes preserve command names, parameter names, help tags, exact examples, paths, output and error strings, YAML keys and defaults, expressions, option values, and version constraints.
This is a prose-only delivery. It does not repair runtime behavior, complete every helper's help contract, or certify full STE conformance. Protected examples and unresolved contract discrepancies remain explicit follow-up work.
Technical details
Delivery and immutable comparison
64ffb1d87f86bd5d487891fdb140b78385a00531.aa992660e3eefe8d9a3881d95fe32bab491d9f52.git diff 64ffb1d87f86bd5d487891fdb140b78385a00531 aa992660e3eefe8d9a3881d95fe32bab491d9f52.29d8cca, was pushed before this draft opened at2026-11-04T12:28:44Z. Five later small commits remain pushed:c4319be,f8a4e0a,d25f9eb,a2bde66, andaa99266.The manual review covers all 64 candidates: 52 PowerShell files and 12 action metadata files with 110 existing description fields. Each candidate and its surrounding implementation was read. The committed diff changes 34 paths: 22 PowerShell files and all 12 action metadata files. It revises 73 description values. No repository file is added or deleted.
Exact acceptance evidence
The four original expected-text checks failed before editing. Three additional parent-review checks failed at
a2bde6694cf238a77e21b3441066a61813a10567before the bounded corrections below. All seven checks pass at the pushed candidate. The original text in this first table is from the immutable base above.Build-PSModule\src\helpers\Build\Add-ContentFromItem.ps1,.DESCRIPTIONThis function will add the content of a folder or file to the root module file.Add-ContentFromItem adds the content of a folder or file to the root module file.Build-PSModule\src\helpers\Build-PSModule.ps1,.SYNOPSISand.DESCRIPTIONBuilds a module.Build a PowerShell module from source files./Build-PSModule copies the source files, creates the manifest, and combines the scripts into the root module.Get-PesterCodeCoverage\action.yml, rootdescriptionA GitHub Action that is used to gather Code Coverage for the PSModule process.Collect code coverage results for the PSModule process.Get-PesterCodeCoverage\action.yml,inputs.WorkingDirectory.descriptionThe working directory where the script will run from.Working directory for the script.Build-PSModule\action.yml,inputs.OutputFolder.descriptionPath to the folder where the built module is outputted.Path to the folder for the built module.Document-PSModule\src\helpers\Build-PSModuleDocumentation.ps1,.SYNOPSISand.DESCRIPTIONBuilds a module.Build documentation for a PowerShell module./Build-PSModuleDocumentation creates Markdown help for exported commands and arranges the pages to match the public source folders.Test-PSModule\action.yml,inputs.CodeCoverage_RecursePaths.descriptionWill recurse through directories in the Path option.Search subdirectories of the directories in the Path option.Test-PSModule\action.yml,inputs.Debug_ShowFullErrors.descriptionShow full errors including Pester internal stack. This property is deprecated, and if set to true it will override Output.StackTraceVerbosity to 'Full'.Show full errors with the internal Pester stack. When true, this deprecated property overrides Output.StackTraceVerbosity with 'Full'.Implementation review also removes incorrect prose claims without changing behavior: base-module help describes the empty root module that the code creates; function and variable export helpers describe source-file inspection instead of manifest reads; documentation help describes Markdown generation; index API help no longer claims that its wrapper establishes an App context. The exact examples and disputed cmdlet-source claim remain protected, as recorded below.
Bounded parent-review corrections
The parent review independently confirms code tokens/flags, AST structure, BOM state, and zero parse errors in all 22 changed PowerShell files at
a2bde6694cf238a77e21b3441066a61813a10567, plus the 73-description YAML boundary. Commitaa99266then changes only these two prose files:Test-PSModule\action.yml,Run_ExitIf Throw is also enabled, prefer an exception.Run_Throw takes precedence over Run_Exit when both are enabled.Test-PSModule\action.yml,Run_ThrowIf Exit is also enabled, prefer an exception.Run_Throw takes precedence over Run_Exit when both are enabled.Get-PesterCodeCoverage\src\Get-PesterCodeCoverage.Helpers.psm1,.OUTPUTSSystem.Stringon the first line, a blank line, then the existing descriptionThe pinned Invoke-Pester action forwards both flags. Its initialization script maps them to
Run.ExitandRun.Throw, and its execution script passes the configuration to Pester without changing that precedence.An anonymous isolated Pester 6.1.0 probe confirms the behavior with one intentional failing assertion. With both flags enabled, the child catches the expected
Pester run failedexception and returns code 0. With only Exit enabled, the child terminates with code 1 and no fallthrough or caught exception. No repository test or fixture runs in this probe.The helper's unchanged
[OutputType([string])]supports the output heading. NativeGet-Helprenders the exact blockSystem.String, a blank line, andThe multiline string with adjusted indentation.No help tag, association, example, or executable token changes.Behavior-preservation proof
The baseline was captured before the first prose edit. The comparison covers all 52 candidate PowerShell files, including unchanged guidance and read-only action test files. At the candidate, all 23,371 non-comment tokens retain their kind, flags, and exact text. All 25,196 AST nodes retain their type and parent shape. Parse errors remain zero.
#Requires, structural/test directives, help association, ordered help tags, parameter-help keys, all 36 complete examples, all three native.LINKentries, and forwarding/external-help metadata match the baseline.The comparison keeps here-string and string tokens intact. Generated Markdown/HTML, output text, error messages, suppression attribute strings, and embedded generated-code comments are therefore unchanged. All 34 changed files retain their original BOM state in raw-byte comparisons against the Git blobs. No generic help sections are added, and no existing help tag moves to another command.
The YAML proof parses each of the 12 action files. It ignores only existing scalar values at root
description,inputs.<name>.description, andoutputs.<name>.description. All other node tags, mapping keys and order, sequence entries, scalar values, and exact text outside those description scalar spans match the base. This includes every default, required flag, action reference, environment mapping, shell command, expression, output mapping, and compatibility/version value.git diff --name-onlyalso matches the 34 manually classified revised paths exactly. Every other repository path, including tests and fixture inputs, is unchanged. The verification scripts, baseline JSON, inventories, and console output are session artifacts, not repository changes.Validation commands and results
Environment: PowerShell
7.6.9, Pester6.1.0, PSScriptAnalyzer1.25.0, PyYAML6.0.3, and yamllint1.38.0. No package or module was installed or restored.In the commands below,
$auditis the directory containing the retained session verification artifacts;$PWD.Pathis this worktree.Get-Help -Fullresolves all 71 existing topics: 52 action topics and 19 guidance topics; the helper output block has the exact type/blank-line/description orderPSAvoidUsingPositionalParametersfindings forHeadingcalls inGet-PesterCodeCoverage\src\main.ps1; no new findingThe YAML profile is the exact super-linter template selected by this repository's pinned workflow. Lint input uses Git-normalized LF text, as the Linux workflow does. The 43 retained warnings are not presented as a clean lint result. The analyzer findings are compared by path, rule, severity, message, and source extent, not by shifted line numbers.
These are local evidence and narrow regression results, not a claim that every CI job, platform, external link, help example, or STE dictionary entry is verified. CI and the requested review are separate from the prose-only proof.
Current-head review and hosted checks
The parent acceptance review accepts
aa992660e3eefe8d9a3881d95fe32bab491d9f52after reading the final diff and independently checking the bounded corrections. The hosted review is alsoAPPROVEDon this exact head: review5768802328, submitted at2026-11-04T13:04:57Z, with zero inline comments. The earlier approval ata2bde66is dismissed after the head change and is not the final approval evidence.At the retained
2026-11-04T13:05:28ZCI snapshot, 25 reported checks pass, three are skipped, and three remain in progress. No failing check is reported in that snapshot. These pending jobs are not presented as passes:The requested handoff is a verified, pushed draft. The PR remains draft while the remaining hosted checks run; no merge or release readiness is asserted.
Complete manual candidate inventory
Revisedmeans reviewed in full and changed only on an owned prose surface.No prosemeans no editable explanatory comment/help text is present.No changemeans reviewed prose is preserved under the guidance snapshot contract.Excludedmeans reviewed but read-only test/configuration implementation. There is no wholly blocked candidate file; blocked portions and decisions are listed after the inventory..github\actions\Build-PSModule\action.yml.github\actions\Build-PSModule\src\main.ps1.github\actions\Build-PSModule\src\helpers\Build-PSModule.ps1.github\actions\Build-PSModule\src\helpers\Build\Add-ContentFromItem.ps1.github\actions\Build-PSModule\src\helpers\Build\Build-PSModuleBase.ps1.github\actions\Build-PSModule\src\helpers\Build\Build-PSModuleManifest.ps1.github\actions\Build-PSModule\src\helpers\Build\Build-PSModuleRootModule.ps1.github\actions\Build-PSModule\src\helpers\Build\Get-PSModuleAliasesToExport.ps1.github\actions\Build-PSModule\src\helpers\Build\Get-PSModuleClassesToExport.ps1.github\actions\Build-PSModule\src\helpers\Build\Get-PSModuleCmdletsToExport.ps1.github\actions\Build-PSModule\src\helpers\Build\Get-PSModuleFunctionsToExport.ps1.github\actions\Build-PSModule\src\helpers\Build\Get-PSModuleVariablesToExport.ps1.github\actions\Build-PSModule\src\helpers\Build\Get-RootLevelVariables.ps1.github\actions\Build-PSModule\src\helpers\Build\Update-PSModuleManifestAliasesToExport.ps1.github\actions\Build-ZensicalSite\action.yml.github\actions\Build-ZensicalSite\src\main.ps1.github\actions\Build-ZensicalSite\src\build-zensical-site.ps1.github\actions\Document-PSModule\action.yml.github\actions\Document-PSModule\src\main.ps1.github\actions\Document-PSModule\src\helpers\Build-PSModuleDocumentation.ps1.github\actions\Expose-TestData\action.yml.github\actions\Get-PesterCodeCoverage\action.yml.github\actions\Get-PesterCodeCoverage\src\Get-PesterCodeCoverage.Helpers.psm1.github\actions\Get-PesterCodeCoverage\src\main.ps1.github\actions\Get-PesterTestResults\action.yml.github\actions\Get-PesterTestResults\src\main.ps1.github\actions\Inject-SiteScripts\action.yml.github\actions\Inject-SiteScripts\src\main.ps1.github\actions\Inject-SiteScripts\src\inject-site-scripts.ps1.github\actions\Install-PSModule\action.yml.github\actions\Install-PSModule\src\main.ps1.github\actions\Install-PSModule\src\PSModule\PSModule.psm1.github\actions\Install-Zensical\action.yml.github\actions\Install-Zensical\src\main.ps1.github\actions\Install-Zensical\src\install-zensical.ps1.github\actions\Structure-Site\action.yml.github\actions\Structure-Site\src\main.ps1.github\actions\Structure-Site\src\structure-site.ps1.github\actions\Test-PSModule\action.yml.github\actions\Test-PSModule\src\main.ps1.github\actions\Test-PSModule\src\tests\Module\Module.Configuration.ps1.github\actions\Test-PSModule\src\tests\Module\PSModule\PSModule.Container.ps1.github\actions\Test-PSModule\src\tests\Module\PSModule\PSModule.Tests.ps1.github\actions\Test-PSModule\src\tests\SourceCode\SourceCode.Configuration.ps1.github\actions\Test-PSModule\src\tests\SourceCode\PSModule\PSModule.Container.ps1.github\actions\Test-PSModule\src\tests\SourceCode\PSModule\PSModule.Tests.ps1.github\actions\update-index\action.yml.github\actions\update-index\src\main.ps1.github\actions\update-index\src\Helper.psm1.github\actions\update-index\tests\Update-Index.Helpers.Tests.ps1guidance\Add-Array.ps1guidance\Add-HashTable.ps1guidance\Add-String.ps1guidance\Caller.ps1guidance\ClassExtension.ps1guidance\Loops.ps1guidance\Out-Null.ps1guidance\PipelineExecution.ps1guidance\PSCallStack.ps1guidance\PSCmdlet.ps1guidance\PSModuleTest.psm1guidance\Read-File.ps1guidance\root.ps1guidance\WebCalls.ps1Totals: 34 revised, 11 no-prose, 12 reviewed/no-change, and seven excluded candidates. The reviewed CSV classifications match the committed path set.
Additional exclusions and blocked portions
Build-PSModule\src\helpers\Build\PSScriptAnalyzer.Tests.psd1;Install-PSModule\src\PSModule\PSModule.psd1;Install-PSModule\src\PSModule\PSScriptAnalyzer.Tests.psd1.github\actions\Cleanup-PSModulePrereleases\**.github\actions\Get-PSModuleSettings\**, includingSettings.schema.json.github\actions\Publish-PSModule\**.github\actions\Release-PSModule\**.github\actions\Resolve-PSModuleVersion\**tests\srcTestRepo\**;tests\srcWithManifestTestRepo\**cmdlets/publicclaim, and missing substantive helper help. The protected text is not claimed to be corrected hereTest-PSModuleRun_Pathinputsteps.paths.outputs.CodePathforwarding. Its caller contract needs a separate decision and behavior checksRead-File.ps1FileRedirectionAst at line 15 and the PSModuleTest import/comment discrepancy.github\workflows\Release.ymlpinsRelease-GHRepositoryat750abed0ecab02394554b610dc3aa191e75e3248. Its interface uses legacy label defaults, not a verified canonicalrelease:*mapping. No release label or release-readiness claim is added, and no release route changesMissing help sections and preserved output declarations are not evidence of complete native-help contract coverage. This delivery does not add copied/generated help or blanket section scaffolding. Existing native
.LINKvalues are preserved; preservation is not a claim that every external target resolves.Ownership, plan progress, and convergence
Every commit follows a fresh live open-PR path check. Each check reads all paginated file lists and compares exact paths, rather than assuming directory ownership from a title. The checks cover 15 open PRs before the first commit and 16 before later commits, excluding this PR itself. The last pre-commit check is
2026-11-04T13:59:19+01:00: all 34 proposed paths have no conflict. Reserved release/recovery areas and the #551 test work remain untouched.The delivery issue's inventory, baseline, early-draft, prose-edit, and local-verification steps are complete. The issue retains the plan and links this audit. The requested handoff is a pushed draft, not a ready/merged PR.
The scoped convergence sweep searches open issues for native help,
Run_Path,Read-File, and help examples. It includes the documentation-writing siblings and the existing guidance/dependency issues. Only #558 converges with this prose diff. #574, #575, #481, and #476 remain non-closing references. No additional issue is closed by this PR.Writing and framework sources
The writing criteria use
MSXOrg/docs@1b0d4893c8fefabe604d04393068a8ff6f848082, not an unpinned recollection:The official Issue 9 PDF is available locally and matches the published MD5
9c720341c350ed77943b2c73d01c716f. The review consults rules 1.14, 3.2, 3.4, 3.6, 4.1, 5.3, and 6.3; technical-term categories in rules 1.5 and 1.12; and relevant dictionary entries, including thegathertocollectchoice. No required writing source is unavailable. The PDF and its extracted text remain local and are not republished. Manual review and scans support these changes; they do not prove full STE conformance.action.ymlfiles and their complete implementationsRelated references