Reconcile path-source constraints in downgrade tests#118
Reconcile path-source constraints in downgrade tests#118ChrisRackauckas-Claude wants to merge 1 commit into
Conversation
Expose transitive runtime constraints from local source packages before minimum resolution, then restore the original project for locked testing. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
|
CI timer check (2026-07-16 16:33 EDT): all hosted checks passed.
A fresh |
|
Closing this draft as superseded by julia-actions/julia-downgrade-compat#56. The upstream action fix now handles the problem at its source: it traverses recursive path sources, includes their hard constraints in minimum resolution, reconstructs complete path-manifest metadata, intersects root/local compat ranges, and prevents test-only path graphs from escaping their locked floors during At upstream head
This PR was not merged. The shared workflow needs no repository-specific reconciliation once upstream #56 is merged and the floating |
Ignore this PR until reviewed by @ChrisRackauckas.
Summary
julia-downgrade-compatruns.Project.tomlafter minimum resolution while retaining the reconciled manifest and refreshing its project hash.allow_reresolve: false.Why
julia-actions/julia-downgrade-compat@v2removes local[sources]packages before Resolver.jl computes minimum versions and appends them to the manifest afterward. Their unique transitive constraints therefore do not participate in resolution.That made OrdinaryDiffEq's source
OrdinaryDiffEqNonlinearSolverequireSciMLOperators >= 1.24.3andNonlinearSolveBase >= 2.34.1only after the shared workflow had already selected older versions. Duplicating those floors across every consuming sublibrary would encode transitive implementation details in unrelated packages. This wrapper lets the resolver see the source constraints instead.OrdinaryDiffEq PR #3917 remains the package-level declaration of the direct
NonlinearSolveBaserequirement. This PR makes that declaration effective in all path-source downgrade lanes.Local verification
julia +1.11 --startup-file=no test/runtests.jl— passed; all testsets passed, including reconciliation 20/20, locked source-floor regression 8/8, and workflow ordering 4/4.julia +1.12 --startup-file=no test/runtests.jl— passed with the same results.actionlint -color— passed.julia +1.12 --startup-file=no -m Runic --check .— passed.git diff --check— passed.OrdinaryDiffEq replay
On clean OrdinaryDiffEq commit
aa895b563, with only #3917's directNonlinearSolveBase = "2.34.1"change applied, I ran this helper around the exact deployed downgrade action. Resolver.jl selected:MuladdMacro 0.2.4SciMLOperators 1.24.3NonlinearSolveBase 2.34.1LinearSolve 4.3.0The original Core project was restored exactly, and the exact locked Core package test then exited 0: 10/10, 18/18, 30/30, and 49/49 assertions passed.
After merge, the shared
v1tag must be advanced before existing callers receive the helper.Julia 1.10 boundary
The failing OrdinaryDiffEq workflow explicitly uses Julia 1.11. On Julia 1.10,
Pkg.testignores[sources]while constructing its test sandbox and rejects an unregistered test source before reaching this constraint-reconciliation path. This PR does not claim to fix that separate pre-existing limitation of path-sourced sublibrary tests on pre-1.11 Julia.