Skip to content

Bug/2 fix core update discovery for mixed flat and versioned module installations - #3

Merged
stiwicourage merged 2 commits into
developfrom
bug/2-fix-core-update-discovery-for-mixed-flat-and-versioned-module-installations
Oct 25, 2026
Merged

stiwicourage merged 2 commits into
developfrom
bug/2-fix-core-update-discovery-for-mixed-flat-and-versioned-module-installations

Conversation

@stiwicourage

Copy link
Copy Markdown
Owner

Summary

  • Fix update discovery when versioned installations coexist with a legacy flat manifest and resource folders such as en-US or resources.
  • Preserve validation of numeric version directories and manifest-bearing directories.
  • Correct the Windows regression test’s expected path using Join-Path, without weakening its assertions.
  • Strengthen agent guidance for portable tests, dependency availability and platform-specific CI verification.

Affected area

  • Public PowerShell cmdlet behavior
  • Scaffolding or project layout
  • Build, test, analyzer, or CI behavior
  • Release, changelog, or versioning flow
  • Contributor documentation
  • End-user documentation
  • Command help
  • Other

Review guidance

  • Start with Get-InstalledModuleIdentityList.ps1 and Test-InstallationDirectoryCandidate.ps1, then their mirrored tests.
  • Ordinary resource directories without a target manifest are ignored. Numeric directories missing manifests and unsupported manifest-bearing layouts still fail explicitly.
  • Both Windows lanes previously failed because the new test expected a literal / rather than the native path separator. Exact manifest-path equality remains enforced.
  • Version selection, repository policy and installation safeguards are unchanged. No installation migration or cleanup is introduced.

Validation

  • Invoke-NovaBuild
  • Test-NovaBuild
  • Targeted validation for the changed path
  • Full repository quality loop
  • Docs-only change; executable validation not needed

Validation notes:

Pre-change evidence:
- The mixed-layout regression failed before the discovery fix.
- Hosted run 40212872782 exposed the Windows path assertion failure in both Windows lanes.

Local full quality loop:
PATH="/tmp/pwsh74:/opt/homebrew/bin:$PATH" /tmp/pwsh74/pwsh -NoLogo -NoProfile -File ./run.ps1
Passed on macOS ARM64 / PowerShell 7.4.21:
- ScriptAnalyzer: zero findings.
- Build: passed.
- Unit tests: 466 passed, zero failed, one existing skip.
- Coverage: 96.3% against the unchanged 95% target.
- Integration tests: six passed, zero failed, three live-provider opt-in skips.
- Text formatting: passed.

Focused check:
Invoke-NovaTest -TagFilter InstalledLayout
Seven scenarios passed; the command exited nonzero because focused coverage
was 5.2% against the unchanged whole-project 95% requirement.
The subsequent full suite passed that coverage gate.

Actual local lane commands, using prepared owned dependency roots:
& ./scripts/build/ci/Invoke-PlatformLane.ps1 -LaneId macos-arm64-ps74 -ExpectedPowerShellVersion 7.4.21 -ModuleRoot $owner.Path
& ./scripts/build/ci/Invoke-PlatformLane.ps1 -LaneId macos-arm64-psstable -ExpectedPowerShellVersion 7.6.6 -ModuleRoot $owner.Path
Both passed build, unit and integration phases with the same counts and coverage.
Actual test-runspace evidence confirmed Pester 5.7.1.
Dependencies were reused locally; clean Gallery provisioning and fully hermetic
imports were not established by these runs.

git diff --check: passed.

Hosted verification for 86c7ef8 is currently in progress:

Documentation and release follow-up

  • README.md reviewed and updated if needed
  • CONTRIBUTING.md reviewed and updated if needed
  • CHANGELOG.md reviewed and updated if needed
  • RELEASE_NOTE.md reviewed and updated if needed
  • Command help updated if needed
  • End-user docs updated if needed
  • No documentation or release-note updates were needed

Maintainability, compatibility, and risk

  • Maintainability impact considered
  • No breaking change
  • Breaking change
  • CI or release impact

Risk, rollout, or rollback notes:

Public signatures and policy semantics are unchanged. Existing files are not
migrated or deleted, and flat-only installations are not newly supported.

Local macOS success does not qualify Windows or Linux. Hosted CI readiness
remains pending until all required jobs and the aggregate gate pass.
Package publication remains a separate authorized step.

@stiwicourage stiwicourage linked an issue Oct 25, 2026 that may be closed by this pull request
7 tasks
@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@codescene-access codescene-access Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gates Passed
6 Quality Gates Passed

See analysis details in CodeScene

Quality Gate Profile: Pay Down Tech Debt
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

@codescene-access codescene-access Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Coverage Gates Passed
Overall Coverage: 96.5% (required = 95%)
New & Changed Code Coverage: 100% (required = 99%)

Review details by gate
  • Overall Coverage

    • Pass/Fail Reason:
      The overall coverage gate was checked for all code and meets the goal: 96.5% covered >= threshold = 95%
    • Action:
      You have 144 files with a sum of 835 covered and 30 uncovered lines of code.
  • New & Changed Code Coverage

    • Pass/Fail Reason:
      New or changed code meets coverage goal: 100% covered >= threshold = 99%
    • Action:
      You modified 2 files, and covered 4 added/modified lines of code.

@stiwicourage
stiwicourage merged commit 5933d68 into develop Oct 25, 2026
31 checks passed
stiwicourage added a commit that referenced this pull request Oct 27, 2026
…or-mixed-flat-and-versioned-module-installations

* develop:
  chore: prepare next prerelease version
  Bug/2 fix core update discovery for mixed flat and versioned module installations (#3)

# Conflicts:
#	CHANGELOG.md
#	RELEASE_NOTE.md
#	src/private/identity/Get-InstalledModuleIdentityList.ps1
#	src/private/identity/Test-InstallationDirectoryCandidate.ps1
#	tests/private/identity/Get-InstalledModuleIdentityList.Tests.ps1
#	tests/private/identity/Test-InstallationDirectoryCandidate.Tests.ps1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix Core update discovery for mixed flat and versioned module installations

1 participant