Skip to content

Keep OrdinaryDiffEqDefault precompile helpers local - #4074

Draft
ChrisRackauckas-Claude wants to merge 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/localize-default-precompile-helpers
Draft

Keep OrdinaryDiffEqDefault precompile helpers local#4074
ChrisRackauckas-Claude wants to merge 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/localize-default-precompile-helpers

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jul 29, 2026

Copy link
Copy Markdown
Member

Ignore until reviewed by @ChrisRackauckas.

Summary

  • define the small Lorenz precompile workloads locally in OrdinaryDiffEqDefault
  • use SciMLBase.AutoDePSpecialize through its public owner
  • remove the dead OrdinaryDiffEqCore.lorenz_oop access
  • remove the ExplicitImports exception for four private Core workload names
  • release the fix as OrdinaryDiffEqDefault 2.4.2 and require OrdinaryDiffEqCore 4.11

Root cause

OrdinaryDiffEqDefault reached into private workload fixtures defined by
OrdinaryDiffEqCore. The QA exception covered the original four names, but
commit 5d640b89a756fd0c81e86f2a09b91862a85be555 added
lorenz_pref and lorenz_pref_params without extending the exception. Its
parent f06fd803209efb1fae0f5130c70574546f1bd7bc has no unignored private
accesses; the commit has exactly those two.

Adding another exception would preserve the private dependency. The workload
RHS functions are tiny and package-specific, so this copies them locally and
lets the public-access QA run without a Lorenz allow-list.

Compatibility floor

OrdinaryDiffEqDefault 2.4.1 is already registered, so this fix is the next
patch release, 2.4.2.

A registered-graph audit found that the currently registered Tsit5 and
Rosenbrock dependencies still use the newer Core workload fixtures while their
compat permits Core 4.10. With the patched Default package and Core pinned to
4.10, resolution succeeds but precompilation fails at
OrdinaryDiffEqCore.lorenz_pref. Raising Default's Core floor to 4.11 prevents
that broken graph. The same clean registered graph resolves to Core 4.11 and
passes the Default solve checks.

Validation

Current upstream b22e2e58b2 cannot resolve its monorepo test environment
alone because the root permits SciMLBase 3.39 while the local
OrdinaryDiffEqNonlinearSolve requires 3.40. Monorepo tests therefore used the
explicitly separate validation stack b22e2e58b2 plus compatibility
prerequisite #4066; #4066 is not included in this branch.

  • clean baseline, GROUP=OrdinaryDiffEqDefault_QA: JET 1/1; Aqua 18 passed and
    1 errored on lorenz_pref / lorenz_pref_params
  • patched, GROUP=OrdinaryDiffEqDefault_QA: JET 1/1; Aqua 19/19
  • patched, GROUP=OrdinaryDiffEqDefault_Core: Default Solver Tests 46/46
  • patched registered dependency graph, Core 4.10: reproduces the
    lorenz_pref precompile failure
  • patched registered dependency graph, Core 4.11: solve/retcode/endpoint checks
    5/5
  • Runic: both changed Julia files pass

The full-repository Runic check still reports only the three existing DISCO
formatting files already covered by #4064.

Follow-up audit

Other solver sublibraries have their own explicit exceptions for the same Core
workload fixtures. They are independent packages and are intentionally left for
separate focused cleanup PRs.

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

Copy link
Copy Markdown
Member Author

Terminal CI classification for head afc906e5bb: 8 checks succeeded, 3 were skipped, and 125 failed.

No package test body failed on this PR. Excluding Runic, all 124 failures stopped in resolution, source development, dependency installation, or package build before the workflow test step:

  • 57 julia-downgrade-compat resolver failures;
  • 38 julia-buildpkg failures, including every OrdinaryDiffEqDefault lane;
  • 15 root in-repo source-development failures;
  • 12 downstream integration jobs, each inspected and each reporting the SciMLBase unsatisfiable requirement before Pkg.test;
  • 1 Default in-repo source-development failure;
  • 1 documentation dependency-install failure.

The 67 non-downgrade failures all explicitly report the current SciMLBase 3.39/3.40 resolver boundary. The 57 downgrade jobs stop inside the downgrade resolver with Unsatisfiable; the corresponding lanes succeed on focused prerequisite #4066. The remaining failure is whole-tree Runic, whose log lists only disco.jl, controllers.jl, and disco_tests.jl, the clean-master formatting debt isolated in #4064; neither changed Default file appears.

Local validation on the exact implementation plus validation-only #4066 remains green: Default Core 46/46, JET 1/1, Aqua/ExplicitImports 19/19, and changed-file Runic. No CI-only workaround or unrelated prerequisite is being folded into this focused PR.

OrdinaryDiffEqDefault 2.4.1 is already registered, so the helper-localization fix must ship as a new patch release.

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

Copy link
Copy Markdown
Member Author

Added the packaging correction in 528e9b0858: OrdinaryDiffEqDefault now requires OrdinaryDiffEqCore = "4.11".

Local verification on the exact updated tree:

  • GROUP=OrdinaryDiffEqDefault_Core: Default Solver Tests 46/46, package tests passed;
  • GROUP=OrdinaryDiffEqDefault_QA: JET 1/1 and Aqua/ExplicitImports 19/19, package tests passed;
  • clean registered dependency graph pinned to Core 4.10: resolution succeeds, then precompilation reproduces UndefVarError: lorenz_pref not defined in OrdinaryDiffEqCore through the registered Tsit5 workload;
  • the same clean registered graph with Core 4.11: package precompiles and the Default algorithm solve/retcode/endpoint checks pass 5/5.

The temporary registered-graph checkout was restored and removed after the test. The branch is clean and matches pushed head 528e9b085851c01a542ce2839bbc3389b7c49ba0.

Copy link
Copy Markdown
Member Author

One-hour terminal CI audit for corrected head 528e9b0858: 8 checks succeeded, 3 were skipped, and 125 failed. No hosted job reached a failure in the Default helper localization or the new Core 4.11 floor.

Exact breakdown:

  • all 10 triggered sublibrary failures (five OrdinaryDiffEqDefault, five DelayDiffEq) were checked and contain the same SciMLBase unsatisfiable requirement before tests;
  • all 44 root test jobs stopped before tests (29 in julia-buildpkg, 15 developing in-repo sources) at that compatibility boundary;
  • all 12 external downstream failure logs were checked individually and contain the same SciMLBase resolver failure;
  • documentation stopped at the same boundary;
  • 56 sublibrary downgrade jobs and the root downgrade job stopped inside the downgrade resolver before tests;
  • Runic lists only the three inherited DISCO files owned by Run Runic on the disco-optimizations files #4064. The changed Default source and QA files are explicitly marked green in the hosted Runic log.

The resolver boundary is fixed separately by rebased #4066 (661bd35c64). Exact local evidence on this head remains green: Default Core 46/46, JET 1/1, Aqua/ExplicitImports 19/19, registered Core 4.11 solve checks 5/5; the Core 4.10 registered control reproduces the lorenz_pref precompile failure. No CI-only workaround is needed in #4074.

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