Skip to content

Preserve typed manifest failures without widening Files demand - #10888

Open
richlander wants to merge 1 commit into
mainfrom
fix/package-manifest-failure-diagnostics
Open

richlander wants to merge 1 commit into
mainfrom
fix/package-manifest-failure-diagnostics

Conversation

@richlander

Copy link
Copy Markdown
Owner

Design basis

Normative owner: docs/design/package-dependency-evidence.md#package-manifest — retain the typed failure governing manifest admission. Supporting package-file-inventory.md#boundary-evidence requires Files inventory to complete without parsing malformed nuspecs. The CLI diagnostic owner renders supplied bounded failure text; it does not invent canonical coordinates or expose internal exceptions.

Repair

The dependency operation discarded an already decoded PackageManifestFailure. With a malformed manifest and a versionless local filename, subsequent ecosystem recognition lacked a canonical coordinate and replaced the useful parser diagnostic with an internal attribution exception.

Retain that existing typed failure in the shared outcome, preserving the positional constructor/deconstruction and property order. Single- and multiple-package callers explicitly stop on a failed attribution and emit the bounded owner diagnostic. No XML reread, speculative identity, acquisition expansion, or threshold change. The existing generic refusal remains when no typed manifest failure is available.

The old Files-must-parse negative oracle contradicted the newer inventory contract. It now positively requires a real nuspec inventory row, no XML payload leakage, and empty stderr. The malformed-XML refusal keeps all its one-line/no-raw-XML/no-exception assertions and covers both single and multiple package gestures.

Evidence

  • Complete Release PackageDependencyInspectionOperationTests: 9/9, including malformed-failure transport.
  • Complete rebuilt Release NuspecHardeningTests: 5/5, including both refusal paths and cheap Files success.
  • Changed owning Markdown passes npx markdownlint-cli; git diff --check and current-main conflict probe pass.

This does not establish exhaustive-main cleanliness or exact-head performance. No merge authorization.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com
Copilot-Session: 71598139-a4a3-4e60-b103-e90f709a2521

Preserve the manifest owner's bounded failure in the existing dependency outcome. Refuse single and multiple package recognition with that diagnostic when no canonical coordinate exists, rather than losing it to an internal exception. Keep Files inventory independent of malformed nuspec parsing. Shared owner controls pass 9/9, complete CLI hardening controls 5/5, and changed Markdown lint passes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 71598139-a4a3-4e60-b103-e90f709a2521

This branch has not been deployed

No deployments
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