Skip to content

QA: run_qa v1.6 form + ExplicitImports#1080

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Ignore until reviewed by @ChrisRackauckas.

Brings this repo's QA onto the SciMLTesting run_qa v1.6 form with ExplicitImports enabled (explicit_imports = true). Converts the hand-rolled test/qa/{qa__aqua.jl, qa__explicitimports.jl} into a single test/qa/qa.jl.

Aqua

ExplicitImports (all 6 checks)

  • no_stale_explicit_imports: passes (no stale imports).
  • no_implicit_imports: passes with skip = (NeuralPDE, Base, Core, ModelingToolkit) — the @reexport using ModelingToolkit leaks the ModelingToolkitBase module name.
  • all_explicit_imports_via_owners: fixedunwrap was imported from Symbolics but owned by SymbolicUtils; moved the import to SymbolicUtils (its owner). No ignore needed.
  • all_qualified_accesses_via_owners: get_dvs/get_ivs owned by ModelingToolkitBase, accessed via the re-exported ModelingToolkit — ignored (documented).
  • all_qualified_accesses_are_public: ignore-list of other packages' not-yet-public names (SciMLBase, SymbolicUtils, Symbolics, ModelingToolkit, LuxCore, Optimisers, ForwardDiff, QuasiMonteCarlo, RuntimeGeneratedFunctions, Adapt, ArrayInterface, Random, Base, Base.Broadcast), each documented by source package. These pass once those libs declare the names public.
  • all_explicit_imports_are_public: LuxCore.{initialparameters,initialstates,parameterlength} are imported to extend their methods (dgm.jl etc.) — dropping them would break method resolution, so they stay imported (non-public in LuxCore). recursive_eltype (Lux) and unwrap (SymbolicUtils) likewise. Ignored, documented.

Deps (test/qa/Project.toml)

  • SciMLTesting compat -> include "1.6".
  • Dropped ExplicitImports (now transitive via SciMLTesting).
  • Kept Aqua as a direct dep (the ambiguities sub-check's child process needs it directly).

Verification

Local clean resolution against released SciMLTesting 1.6.0 (no dev-from-branch; resolves SciMLTesting 1.6.0 + Aqua 0.8.16), running the QA group via the run_tests folder model:

Test Summary:     | Pass  Broken  Total   Time
Quality Assurance |   14       1     15  30.0s

0 Fail / 0 Error. The single Broken is the tracked ambiguities placeholder (#1079).

🤖 Generated with Claude Code

ChrisRackauckas and others added 3 commits June 25, 2026 06:11
Convert the hand-rolled test/qa/{qa__aqua.jl, qa__explicitimports.jl} to a single
test/qa/qa.jl using SciMLTesting's run_qa v1.6 form with explicit_imports = true.

- Aqua: undefined_exports/persistent_tasks disables preserved; the historical
  hard ambiguities failure (PINOODE PDETimeSeriesSolution callable, red on
  master pre-conversion) is tracked as aqua_broken = (:ambiguities,) referencing
  SciML#1079 (no silent skip; tracked @test_broken placeholder).
- ExplicitImports: all 6 checks enabled. Fixed the unwrap owner-violation by
  importing it from its owner SymbolicUtils instead of Symbolics. Remaining
  findings are other packages' not-yet-public names (qualified accesses) and the
  LuxCore initialparameters/initialstates/parameterlength method-extension
  imports, curated into per-check ignore-lists documenting their source packages.
- QA Project.toml: SciMLTesting compat -> "1.6"; drop ExplicitImports (transitive
  via SciMLTesting); keep Aqua (the ambiguities sub-check's child process needs
  it as a direct dep).

Verified locally vs released SciMLTesting 1.6.0 (clean resolve, no dev-from-branch):
QA group = 14 Pass, 1 Broken (ambiguities, SciML#1079), 0 Fail/Error.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7 skips the two public-API ExplicitImports checks
(check_all_qualified_accesses_are_public,
check_all_explicit_imports_are_public) on the lts, and the released
base libs (SciMLBase 3.24.0, Symbolics 7.28.1, SymbolicUtils 4.36.0,
ModelingToolkit 11.29.0, ArrayInterface 7.26.0, CommonSolve 0.2.9)
now declare most of the previously-ignored names public. Empty both
public-API ignore-lists, then restore only the names still flagged on
Julia 1.12 (where these checks run): 17 in
all_qualified_accesses_are_public, 0 in all_explicit_imports_are_public
(whole list removed).

Surviving (still non-public on 1.12), by source:
  SciMLBase: AbstractDAEAlgorithm, AbstractDAEProblem,
    AbstractDiscretizationMetadata, AbstractSDEProblem, __solve,
    allowscomplex, calculate_solution_errors!, has_analytic, interp_summary
  SymbolicUtils: _iszero; Symbolics: variables
  ForwardDiff: derivative, jacobian
  QuasiMonteCarlo: generate_design_matrices, sample
  Base: mapany; Base.Broadcast: dottable

Verified QA group green-or-broken (0 hard FAIL) on Julia 1.12
(14 Pass, 1 Broken) and Julia 1.10 (12 Pass, 1 Broken; public-API
checks skipped) against registered releases. via_owners / aqua_broken
ignores untouched.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
After the SciMLBase 3.27.0 make-public release, four names previously
listed in the public-API `all_qualified_accesses_are_public` ignore are
now public (verified via `Base.ispublic`) and are dropped:
AbstractDAEProblem, AbstractSDEProblem, AbstractDAEAlgorithm, allowscomplex.

The remaining 13 names are still non-public against the released versions
(SciMLBase: AbstractDiscretizationMetadata/__solve/has_analytic/
interp_summary/calculate_solution_errors!; SymbolicUtils _iszero; Symbolics
variables; ForwardDiff derivative/jacobian; QuasiMonteCarlo
generate_design_matrices/sample; Base mapany; Base.Broadcast dottable) and
stay in the ignore list. No DiffEqBase->SciMLBase source migration is
needed: src/ext access no DiffEqBase names.

Bump the qa env SciMLTesting compat 1.6 -> 1.7 to admit the release that
gates the public-API EI checks to Julia >=1.11.

Verified: QA group green on Julia 1.12 against the registered releases
(14 pass / 1 broken[aqua ambiguities, pre-existing SciML#1079] / 0 fail-error);
public-API checks correctly skip on Julia 1.10 (SciMLTesting >=1.11 gate).

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 29, 2026 09:51
@ChrisRackauckas
ChrisRackauckas merged commit a5c0941 into SciML:master Jul 3, 2026
28 of 35 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