Skip to content

Validate NuGet binary closures during packaging#5676

Draft
brendankowitz wants to merge 26 commits into
mainfrom
brendankowitz-add-binary-closure-validation
Draft

Validate NuGet binary closures during packaging#5676
brendankowitz wants to merge 26 commits into
mainfrom
brendankowitz-add-binary-closure-validation

Conversation

@brendankowitz

@brendankowitz brendankowitz commented Jul 15, 2026

Copy link
Copy Markdown
Member

Summary

  • validate the four supported FHIR Web package roots (Stu3, R4, R4B, and R5) as independently restored net8.0 and net9.0 deployment closures after packing in the shared PR/CI package path
  • run pinned checkbinarycompat 1.0.45 with exact local-package source mappings, deterministic failure aggregation, retained diagnostics, and eight committed portable baselines
  • cover the intended production failure with a real regression fixture where a transitive dependency renames a referenced method: publish succeeds, but binary closure validation fails

Layered protection

This PR provides the OSS producer gate for the supported FHIR Server deployment compositions. A separate fhir-paas gate is still required against each exact final publish directory after downstream NuGet pins and overrides are resolved; this repository cannot observe those downstream dependency selections.

Validation

  • Windows and Linux PowerShell suites: 33 tests passed, including the real renamed-member regression with checkbinarycompat 1.0.45
  • Full Linux validation: 8 closures across 4 Web packages
  • Produced 8 reports, 8 assembly inventories, and 8 comparisons with zero baseline mismatches
  • PR/CI YAML and PowerShell syntax parsed successfully
  • Independent whole-feature review and re-review found no remaining Critical or Important issues

brendankowitz and others added 26 commits July 14, 2026 11:28
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
Invoke the validator in-process so the four required Web package IDs remain a PowerShell array across the pipeline boundary. Add a regression test covering the production invocation shape.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ef0bf75e-afad-46b4-8331-a436acedbe9a
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