Skip to content

Add DSC local discovery extension and platform provenance - #6

Merged
Bpoe merged 2 commits into
mainfrom
bpoe-dsc-discovery-extension
Oct 26, 2026
Merged

Bpoe merged 2 commits into
mainfrom
bpoe-dsc-discovery-extension

Conversation

@Bpoe

@Bpoe Bpoe commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Add dscpkg discover [--packages-dir DIR], reusing package-store enumeration to emit sorted, deduplicated JSON Lines containing absolute manifestPath values. Recognize JSON/YAML/YML resources, adapted resources and manifest lists. Discovery is read-only, local-only, ignores inherited DSC_RESOURCE_PATH, and does not contact repositories.
  • Record the installed archive's exact OS/architecture in a dscpkg-owned sidecar outside the verified package contents. Advertise only matching platforms; exclude legacy packages with actionable migration diagnostics; reject corrupt provenance and known incompatible cache reuse. Preserve shared package storage, registrations and cleanup behavior.
  • Ship the official-schema DscPkg/Discover extension beside the executable in archives, MSI, DEB and RPM. Extend payload/lifecycle checks for registration through DSC, repair, stale-manifest upgrade replacement, uninstall and preservation of user data.
  • Document manual installation, per-user/custom stores, service identities, platform/legacy behavior, and the one-time extension-directory bootstrap needed when DSC_RESOURCE_PATH is explicitly set.
  • Add unit/process coverage and isolated integration tests pinned to DSC 3.3.0, wired into the platform CI matrix.

Validation

Hosted PR CI passed on the final commit c715314: CI run 40370016665.

  • Linux AMD64 and ARM64, Windows, and macOS validation jobs all passed.
  • Formatting, vetting, unit tests (with race detection on Linux/macOS), builds, and release safeguard checks passed.
  • Official bundled extension manifest schema validation and DSC 3.3.0 integration passed across the matrix: extension discovery through PATH, installation through the CLI into isolated default stores, JSON/YAML resources sharing one executable, invocation from the original package directory, incompatible-platform exclusion, fresh-process discovery, and explicit resource-path bootstrap.
  • Native MSI builds/inspection and installation, missing-manifest repair, upgrade replacement of a stale manifest, downgrade rejection, uninstall, PATH handling and user-data retention all passed on disposable Windows runners.
  • Linux archive/DEB/RPM builds, inspection, fresh installation, missing-manifest reinstallation, stale-manifest upgrade replacement, uninstall, DSC extension registration and user-data retention passed on AMD64/ARM64 Ubuntu and Fedora test environments.

Additional local validation passed on Windows/Linux, including non-root Linux race tests, workflow/shell linting, and:

Real Linux acceptance case: installed DscExtras.Linux/groups@0.0.1 from https://bpoe.github.io/dsc-extras/ into an isolated store. DSC 3.3.0 listed both groups and services from the single dscextras/linux/0.0.1/dsclinux package and successfully performed read-only gets for root and systemd-journald.service, with DSC_RESOURCE_PATH unset. No existing DSC installation or system package store was changed.

The workstation's MSI build was blocked by its ICE validation policy (WIX1105); validation was not bypassed. The full MSI build and lifecycle subsequently passed on hosted CI. Initial hosted failures in test-fixture permission restoration and Windows cross-drive relative paths were fixed in c715314; the final matrix is green.

Brandon Poe and others added 2 commits October 26, 2026 10:31
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@Bpoe
Bpoe merged commit eef5a73 into main Oct 26, 2026
8 checks passed
@Bpoe
Bpoe deleted the bpoe-dsc-discovery-extension branch October 26, 2026 17:52
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.

1 participant