ExplicitImports findings across OrdinaryDiffEq.jl sublibraries
The run_qa v1.6 conversion enables explicit_imports = true in every lib/<Sub>/test/qa/qa.jl (and the root test/qa/qa_tests.jl). Most solver sublibraries fail several of the six ExplicitImports checks, and those failures are recorded as ei_broken so the QA lane stays green-or-broken (no hard Fail). This issue tracks driving them to green.
The dominant root cause is that the solver sublibraries import the non-public internal API of OrdinaryDiffEqCore (and of SciMLBase / DiffEqBase / SciMLOperators / etc.) — names like alg_cache, perform_step!, initialize!, @cache, @OnDemandTableauExtract, OrdinaryDiffEqConstantCache, ... These are the de-facto shared base API but are not declared public, so:
all_explicit_imports_are_public / all_qualified_accesses_are_public fail on the imported non-public names,
all_explicit_imports_via_owners fails on names re-exported through OrdinaryDiffEqCore whose true owner is SciMLBase/DiffEqBase,
no_implicit_imports / no_stale_explicit_imports fail on a mix of genuine and re-export-related findings.
Path to green
- Mark the relevant
OrdinaryDiffEqCore (and base-lib) names public so the downstream public-API checks pass (the SciML-wide make-public effort). ei_broken auto-flags an Unexpected Pass once a check goes green, prompting removal of the marker.
- Then tighten / drop the per-sublibrary
ei_broken lists and replace with targeted ei_kwargs ignore-lists where any genuinely external non-public names remain (e.g. CommonSolve init/solve/solve!/step!, used at the umbrella root).
Until then the markers keep CI honest (Broken, not Fail) and visible.
ExplicitImports findings across OrdinaryDiffEq.jl sublibraries
The run_qa v1.6 conversion enables
explicit_imports = truein everylib/<Sub>/test/qa/qa.jl(and the roottest/qa/qa_tests.jl). Most solver sublibraries fail several of the six ExplicitImports checks, and those failures are recorded asei_brokenso the QA lane stays green-or-broken (no hardFail). This issue tracks driving them to green.The dominant root cause is that the solver sublibraries import the non-public internal API of
OrdinaryDiffEqCore(and ofSciMLBase/DiffEqBase/SciMLOperators/ etc.) — names likealg_cache,perform_step!,initialize!,@cache,@OnDemandTableauExtract,OrdinaryDiffEqConstantCache, ... These are the de-facto shared base API but are not declaredpublic, so:all_explicit_imports_are_public/all_qualified_accesses_are_publicfail on the imported non-public names,all_explicit_imports_via_ownersfails on names re-exported throughOrdinaryDiffEqCorewhose true owner isSciMLBase/DiffEqBase,no_implicit_imports/no_stale_explicit_importsfail on a mix of genuine and re-export-related findings.Path to green
OrdinaryDiffEqCore(and base-lib) namespublicso the downstream public-API checks pass (the SciML-wide make-public effort).ei_brokenauto-flags an Unexpected Pass once a check goes green, prompting removal of the marker.ei_brokenlists and replace with targetedei_kwargsignore-lists where any genuinely external non-public names remain (e.g.CommonSolveinit/solve/solve!/step!, used at the umbrella root).Until then the markers keep CI honest (Broken, not Fail) and visible.