Repository navigation
Description
Context and request
Consumer context: callers of the local .github/actions/Get-PesterCodeCoverage composite need the documented MissedPathReportPath output to find its missed-path reports. This Bug owns only the independent runtime/output-route correction. README/source-contract accuracy remains in #572; the writing-only #569 does not include this repair.
Observed behavior: static inspection shows an incomplete output route. The composite declares MissedPathReportPath through steps.Get-PesterCodeCoverage.outputs.MissedPathReportPath, but that step has a name and no id. The pinned nested GitHub-Script composite exposes only result, not MissedPathReportPath. The coverage script writes the report path to the inner step's GITHUB_OUTPUT. The current metadata therefore does not establish a route to the caller-visible output. No live workflow failure or empty output has been reproduced as part of this tracking work.
Expected behavior: after the composite writes the reports, a caller can read steps.<caller-step-id>.outputs.MissedPathReportPath and use that value to find the report folder.
Reproduction and source evidence: inspect these immutable sources together:
- Local output declaration and composite step: the declared output references
steps.Get-PesterCodeCoverage, but the step has noid. - Pinned GitHub-Script output contract: the nested composite exposes
resultfrom itsRunGitHubScriptstep. It does not expose a directMissedPathReportPathoutput. - Coverage output producer: the script writes
MissedPathReportPathto the inner step'sGITHUB_OUTPUT.
A runtime regression must exercise the complete composite boundary. Merely adding an id does not prove that the path crosses the nested composite's output contract.
Environment: PSModule/Process-PSModule@64ffb1d87f86bd5d487891fdb140b78385a00531; nested PSModule/GitHub-Script@8083ec1f733f00357ee4d0db0c6056686e483bc0 (v1.9.0); a GitHub Actions composite with a PowerShell script. The evidence is metadata/source inspection, not an OS-specific runtime reproduction.
Regression: unknown. No last-known-working output route is established.
Workaround: the framework caller uploads the known CodeCoverage-MissedPaths directory directly. That avoids reliance on this output for that caller, but it does not repair or verify the public composite output. No general output-based workaround is verified.
Acceptance criteria
- A regression check invokes the composite boundary with controlled coverage reports and fails on the current caller-visible output route before the fix.
- After the fix, the caller reads a nonempty
MissedPathReportPathvalue that identifies the report folder. The folder containsCodeCoverage-MissedPaths.mdandCodeCoverage-MissedPaths.json. - The complete route works across both the local composite and the pinned nested action. A text-only assertion that a step has an
idis not sufficient evidence. - The public output name, report and artifact names, input names/defaults/required flags, coverage calculation, target enforcement, summary selection, and existing failure semantics remain unchanged.
- The documented output and relevant existing action tests match the verified caller behavior. Unrelated README corrections, standalone example targets, module bootstrap defaults, lifecycle settings, and release behavior remain outside this Bug.
Technical decisions
The verified root-cause boundary is the output chain among .github/actions/Get-PesterCodeCoverage/action.yml, its nested GitHub-Script contract, and the script's output producer. The missing local step id and the nested action's result-only interface are separate parts of that chain. The precise runtime result still needs a regression reproduction; do not present static evidence as an executed workflow result.
Use the smallest source-backed mapping that forwards the report path across the existing boundaries. Do not change the pinned dependency or public output contract merely to bypass the defect. Confirm the chosen mapping with the caller-boundary regression before implementation. Keep the fix in one focused PR, with related test and documentation verification only.
Coordinate shared-file ownership with the native-help/action-description delivery #558 before any future metadata or source edit. No code, source, PR scope, labels, or lifecycle settings change as part of this issue split. No implementation PR is requested by the tracking correction.
Follow the pinned Bug format. References to #572, #557, and #569 are non-closing context.
Implementation plan
- Reproduce the incomplete output route in a failing regression that reads the output as a composite caller, with controlled report input and retained evidence.
- Verify the producer and pinned nested-action output contract, then implement the smallest complete mapping across both boundaries without changing names, defaults, dependencies, or failure behavior.
- Run the regression and affected existing action checks; verify report contents, target enforcement, and the framework caller's artifact behavior.
- Verify the existing README output contract against the corrected caller result and record before/after evidence in the one fix PR. Keep the independent README/source-accuracy work in [documentation-writing-alignment] Reconcile reusable-action README contracts with local sources #572.
Activity