Skip to content

[Repo Assist] eng: enable PackageValidationBaselineVersion=0.4.0 with suppression for known breaking changes#335

Merged
dsyme merged 2 commits intomainfrom
repo-assist/eng-package-validation-baseline-a022fc7e9ba547a4
Mar 14, 2026
Merged

[Repo Assist] eng: enable PackageValidationBaselineVersion=0.4.0 with suppression for known breaking changes#335
dsyme merged 2 commits intomainfrom
repo-assist/eng-package-validation-baseline-a022fc7e9ba547a4

Conversation

@github-actions
Copy link
Contributor

🤖 This is a draft PR from Repo Assist, an automated AI assistant.

Activates binary compatibility checking against the last published release (v0.4.0) by uncommenting PackageValidationBaselineVersion in the project file. EnablePackageValidation was already enabled (added in PR #315), but without a baseline version only structural package validation ran — no cross-version binary compatibility check.

What this enables

With PackageValidationBaselineVersion=0.4.0, every dotnet build and CI run now automatically verifies that all public APIs present in FSharp.Control.TaskSeq 0.4.0 are still present in the current version with compatible signatures. Any future inadvertent breaking change will produce a build error rather than being silently shipped.

What it found

Running the check immediately revealed 3 existing API breaks between 0.4.0 and the current 0.6.0-dev. All three are in compiler-internal F# CE infrastructure — technically public members but not intended for direct user consumption:

Member Notes
FSharp.Control.LowPriority.TaskSeqBuilder.Bind<...> Internal CE Bind overload
FSharp.Control.LowPriority.TaskSeqBuilder.Bind$W<...> F# witness-passing variant (compiler-generated)
FSharp.Control.TaskExtensions.TaskBuilder.For(T,TOverall) for x in IAsyncEnumerable overload for task {}

These are suppressed in the new CompatibilitySuppressions.xml file (standard .NET SDK mechanism). The suppression file format is documented at (learn.microsoft.com/redacted)

Note for maintainers: while these members are not part of the documented public API, technically they represent binary breaks for any assembly that compiled against 0.4.0 and called these members. In practice this is extremely unlikely (they require direct use of F# compiler internals). The suppressions acknowledge this intentional deviation.

Files changed

  • FSharp.Control.TaskSeq.fsproj: uncomment PackageValidationBaselineVersion
  • CompatibilitySuppressions.xml: suppress 3 known compiler-internal breaking changes (new file)
  • release-notes.txt: document engineering change

Test Status

Build (Release): succeeded, 0 warnings, 0 errors
Package validation: passes with suppression file
No code changes — library logic is unmodified

🤖 Generated by Repo Assist · Task 4: Engineering Investments

Generated by Repo Assist ·

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/repo-assist.md@346204513ecfa08b81566450d7d599556807389f

…or known breaking changes

Activates binary compatibility checking against the last published release
(v0.4.0) by uncommenting PackageValidationBaselineVersion in the project file.

The build revealed 3 existing API breaks between 0.4.0 and 0.6.0-dev — all in
compiler-internal F# witness infrastructure that is technically public but not
intended for direct user consumption:

  - TaskSeqBuilder.Bind<...> (internal CE overload)
  - TaskSeqBuilder.Bind$W<...> (F# witness-passing variant, compiler-generated)
  - TaskExtensions.TaskBuilder.For<...> (for-in-IAsyncEnumerable overload)

These suppressions are recorded in CompatibilitySuppressions.xml. All future
inadvertent API breaks will now be caught automatically during dotnet build.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dsyme dsyme marked this pull request as ready for review March 14, 2026 15:40
@dsyme dsyme merged commit 8fbe994 into main Mar 14, 2026
4 checks passed
@dsyme dsyme deleted the repo-assist/eng-package-validation-baseline-a022fc7e9ba547a4 branch March 14, 2026 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant