Skip to content

QA: run_qa v1.6 form + ExplicitImports#86

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicit-imports
Jul 3, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports#86
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicit-imports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Please ignore until reviewed by @ChrisRackauckas.

Brings test/qa/qa.jl onto the SciMLTesting 1.6 run_qa form with ExplicitImports enabled (explicit_imports = true).

What changed

  • test/qa/qa.jl: hand-rolled Aqua.test_all + JET report_package/@test replaced by a single run_qa(MATLABDiffEq; ...) call. Aqua and JET still run (JET hard, via run_qa's default test_package); ExplicitImports' 6 checks are added.
  • test/qa/Project.toml: SciMLTesting compat bumped to 1.6; ExplicitImports dropped from [deps] (it is a SciMLTesting direct dep, so transitive); Aqua kept (the ambiguities sub-check spawns a child process that needs Aqua a direct dep); JET kept.

ExplicitImports findings (6 checks)

Check Result Handling
no_stale_explicit_imports pass
no_implicit_imports broken ei_broken; tracked in #85 — heavy @reexport using DiffEqBase + using MATLAB/ModelingToolkit/PrecompileTools surface, explicit-import refactor deferred
all_explicit_imports_via_owners pass
all_qualified_accesses_via_owners pass ignore SciMLBase-owned names re-exported via DiffEqBase (AbstractODEAlgorithm, AbstractODEProblem, __solve, build_solution) + Symbolics-owned MATLABTarget via ModelingToolkit
all_qualified_accesses_are_public pass same ignore list + Stats (SciMLBase, re-exported via DiffEqBase)
all_explicit_imports_are_public pass

The ignored names are other packages' (SciMLBase, Symbolics) non-public names accessed through their canonical re-exporters (DiffEqBase, ModelingToolkit); they go away on their own once declared public upstream.

Local verification (released SciMLTesting 1.6.0, Julia 1.12.5)

QA group run via the folder model:

Test Summary:     | Pass  Broken  Total
Quality Assurance |   17       1     18

0 Fail / 0 Error. Per-check: all 8 Aqua sub-checks pass, JET passes, 5/6 EI checks pass, no_implicit_imports is the single tracked @test_broken.

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits June 25, 2026 08:31
Convert test/qa/qa.jl from hand-rolled Aqua + JET to the SciMLTesting 1.6
run_qa form with ExplicitImports enabled (explicit_imports = true).

- Aqua and JET keep running (JET hard via run_qa's default test_package).
- ExplicitImports: 4 of 6 checks pass clean; the two qualified-access checks
  pass with per-name ignore lists for SciMLBase-owned names re-exported through
  DiffEqBase (AbstractODEAlgorithm, AbstractODEProblem, __solve, build_solution,
  Stats) and the Symbolics-owned MATLABTarget re-exported through ModelingToolkit.
- no_implicit_imports is @test_broken (ei_broken) pending the explicit-import
  refactor of the heavy using/@reexport surface, tracked in SciML#85.

test/qa/Project.toml: SciMLTesting compat -> 1.6; ExplicitImports dropped
(transitive via SciMLTesting); Aqua kept (ambiguities child-proc needs it a
direct dep); JET kept.

Local QA group vs released SciMLTesting 1.6.0: 17 pass, 1 broken, 0 fail/error.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Now that SciMLBase 3.27.0 makes the abstract problem/algorithm types,
build_solution and DEStats public, migrate the qualified accesses in
src/ off the DiffEqBase re-exporter onto their SciMLBase owner:

  DiffEqBase.AbstractODEAlgorithm -> SciMLBase.AbstractODEAlgorithm
  DiffEqBase.AbstractODEProblem   -> SciMLBase.AbstractODEProblem
  DiffEqBase.build_solution       -> SciMLBase.build_solution
  DiffEqBase.Stats                -> SciMLBase.DEStats (canonical public name)

Add SciMLBase to [deps]/[compat] (>=3.27). DiffEqBase.__solve stays the
solver extension point (SciMLBase-owned but non-public) and MATLABTarget
stays reached through ModelingToolkit (Symbolics-owned, non-public).

Empty the public-API ExplicitImports ignore lists of the now-public,
owner-accessed names, leaving only the genuinely-still-non-public
:__solve and :MATLABTarget in all_qualified_accesses_are_public and
all_qualified_accesses_via_owners. Bump the qa env SciMLTesting floor to
1.7 (gates the public-API checks to Julia >= 1.11).

Verified QA group locally against the registered releases (CI=true so
MATLAB.jl loads with dummy deps, matching CI): Julia 1.12 17 pass / 1
broken (no_implicit_imports) / 0 fail with the public checks running;
Julia 1.10 15 pass / 1 broken / 0 fail with the public checks skipped.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude
ChrisRackauckas-Claude marked this pull request as ready for review June 27, 2026 20:59
@ChrisRackauckas
ChrisRackauckas merged commit a438746 into SciML:master Jul 3, 2026
8 checks passed
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