Skip to content

Align downstream LinearSolve compatibility#4730

Closed
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/align-downstream-linearsolve-compat
Closed

Align downstream LinearSolve compatibility#4730
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/align-downstream-linearsolve-compat

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Ignore this PR until reviewed by @ChrisRackauckas.

Context

While validating the Optimization.jl downstream workflow, the ModelingToolkit GROUP=All downstream job failed after earlier groups had loaded LinearSolve 3.87.0. The downstream group then resolved LinearSolve 4.3.0 and loaded ControlSystemsMTK, whose ArnoldiMethod extension tried to access LinearSolve.ArnoldiMethodJL in the already-loaded 3.87.0 module.

Original failure: https://github.com/SciML/Optimization.jl/actions/runs/29184114746/job/86627032925

LinearSolve 4.3.0 introduced the ArnoldiMethod extension in SciML/LinearSolve.jl#1071. A minimal two-environment reproducer fails with a preloaded LinearSolve 3.87.0 plus an inner LinearSolve 4.3.0 environment, while the same reproducer passes with LinearSolve 4.2.1.

Changes

  • Declare LinearSolve directly in test/downstream/Project.toml.
  • Match its 3.66 compatibility range to the root test environment so both environments resolve the same LinearSolve major version.
  • Add a QA regression test that keeps the downstream UUID and compatibility range aligned with the root test extras.

This changes test environment resolution only; it does not change public API.

Prompt and process record

The original request was to update Optimization.jl downstream coverage. Repository instructions require a separate investigation whenever a failure reproduces on unmodified master, so this fix is intentionally split from that Optimization change.

Investigation steps:

  1. Reproduced the reusable downstream workflow resolution at Optimization 0c663b6cc74f18b07b3b9aff95109b5ac1775db6 and ModelingToolkit 038c30a79a0e0ec09f9b6eff4cf1eaa44a088e15.
  2. Reduced the error to isolated outer/inner environments with LinearSolve 3.87.0 preloaded and 4.3.0 activated.
  3. Verified the release boundary: LinearSolve 4.2.1 passes; 4.3.0 fails in the mixed-loaded-version reproducer.
  4. Verified current ModelingToolkit master ee7dd34d8b7cfe8a085e0fa04cec28a607053f66 still resolves the same 3.87.0-loaded/4.3.0-inner mismatch before this patch.
  5. Added the narrow environment alignment and a regression test.

Local validation

Julia 1.12.6:

  • Mixed-loaded-version harness using the repository test runner: Downstream | 31 pass | 31 total | 8m39.5s; it printed preloaded LinearSolve 3.87.0 and resolved the inner downstream environment to 3.87.0.
  • GROUP=Downstream julia --project=. -e "using Pkg; Pkg.test(; coverage=false)": Downstream | 31 pass | 31 total | 23m38.9s, followed by Testing ModelingToolkit tests passed.
  • GROUP=QA ... Pkg.test(): new Downstream LinearSolve compatibility test passed 2/2. The overall QA run reproduced two unrelated clean-master failures (Aqua piracy and JET) already tracked in QA: track pre-existing Aqua/JET/ExplicitImports findings (root + ModelingToolkitBase) #4670; they are being investigated separately and were not skipped or silenced here.
  • Runic --check .: passed.
  • git diff --check: passed.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Execution scratchpad for commit 39c88bc:

  • Resolver evidence before the patch: root test environment LinearSolve 3.87.0; downstream environment LinearSolve 4.3.0.
  • Resolver evidence after the patch: both environments LinearSolve 3.87.0.
  • Mixed-loaded-version repository test runner: 31/31 passed.
  • Repository-native GROUP=Downstream Pkg.test(): 31/31 passed.
  • QA invariant: 2/2 passed; unrelated master Aqua/JET failures remain tracked in QA: track pre-existing Aqua/JET/ExplicitImports findings (root + ModelingToolkitBase) #4670.
  • Runic and whitespace checks passed.

Next: inspect draft PR CI and base-branch freshness.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI triage update:

  • build failed before documentation execution with the NLSolversBase/Optim docs resolver conflict.
  • The exact base SHA ee7dd34 has the same failure in master run 29186963962, job 86634738010; both logs end with the same NLSolversBase constraint chain and Optim ... NLSolversBase 8.0.0 — no versions left.
  • Existing draft PR Remove docs DiffEqDevTools dependency #4729 addresses that separate docs resolver failure. A required clean-master investigator is independently reproducing and validating it.
  • Runic, Runic Suggestions, spell check, and test matrix detection are green. Downstream/QA matrix jobs are still in progress.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Focused CI result:

  • Downstream / Julia LTS: 31/31 passed; Testing ModelingToolkit tests passed.
  • Downstream / Julia stable: 31/31 passed; Testing ModelingToolkit tests passed.
  • Downstream / Julia prerelease: 31/31 passed; Testing ModelingToolkit tests passed.

This confirms the LinearSolve environment alignment across the full configured Downstream version matrix. QA is still running; its clean-master Aqua/JET failures are documented in #4670.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

QA CI triage:

The QA job ended with The self-hosted runner lost communication with the server. Exact base master job 86634921925 has the same annotation. The required clean-master investigation reproduced QA locally (10 pass, 2 fail: Aqua piracy + Julia 1.12.6 JET compiler assertion) and observed JET at roughly 14 GB RSS, exceeding this runner class. Evidence and the Julia 1.12.7 JET fix are documented in #4670.

The new Downstream LinearSolve compatibility invariant passed 2/2 in the local QA run; no failure was skipped or silenced.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Base freshness update:

Upstream master advanced by merged docs resolver fix #4729. After fetching both upstream and origin and verifying that the remote feature branch still contained only commit 39c88bc, I rebased and updated the branch with --force-with-lease. New commit: 5fb5d36; the co-author trailer is preserved.

Pre-rebase CI reached a terminal state: 52 successful checks, 11 failures, 1 cancelled benchmark leg, and 4 skipped matrix placeholders. The complete Downstream matrix passed 31/31 on Julia LTS, stable, and prerelease. Red checks were exact-base failures already assigned to separate investigations, the fork-token benchmark comment 403, the exact-base QA runner-loss condition, and one NeuralPDE randomized training tolerance miss (exact-base job passed; single-job rerun API was unavailable with current permissions). The rebase restarts CI and provides another sample for that NeuralPDE check.

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.

2 participants