Skip to content

ExplicitImports: drive sublibrary QA checks to green (ei_broken markers) #3776

Description

@ChrisRackauckas-Claude

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

  1. 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.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions