Skip to content

QA: run_qa v1.6 form + ExplicitImports#191

Draft
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run-qa-v1.6
Draft

QA: run_qa v1.6 form + ExplicitImports#191
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run-qa-v1.6

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

Converts test/qa/qa.jl from the hand-rolled Aqua + ExplicitImports body onto SciMLTesting 1.6's run_qa, with explicit_imports = true. Verified locally against the released SciMLTesting 1.6.0 (no dev-from-branch).

What changed

  • run_qa(DifferenceEquations; explicit_imports = true, ...) replaces the eight individual Aqua.* calls (now Aqua.test_all with the persistent-tasks [sources] sanitizer) and the two-check ExplicitImports block (now all six EI checks run).
  • JET stays a bespoke report_call testset. The issue QA: Aqua/JET findings marked @test_broken pending fix #187 cases live on specific solve paths (DirectIteration/KalmanFilter) that JET.report_package (run_qa's JET path) does not surface, so run_qa is called with JET = nothing and the two QA: Aqua/JET findings marked @test_broken pending fix #187 @test_broken markers are preserved verbatim.

ExplicitImports findings

no_implicit_imports and no_stale_explicit_imports pass unchanged (they were already the only two checks run).

The four newly-enabled owners/public checks flag only dependency-package names — none owned by DifferenceEquations — so each is allowed via a per-check ei_kwargs ignore-list (documented with its source package). These names go public as the base libs release.

  • all_explicit_imports_via_owners (6 ignored): KeywordArgSilent/get_concrete_p/get_concrete_u0/isconcreteu0/promote_u0 (SciMLBase, re-exported via DiffEqBase), ismutable (Base, via StaticArrays).
  • all_qualified_accesses_via_owners (1): __solve (SciMLBase, accessed via DiffEqBase).
  • all_qualified_accesses_are_public (13): @propagate_inbounds (Base); Default/Success/T (SciMLBase.ReturnCode); build_solution/getindepsym/getindepsym_defaultt (SciMLBase); __solve/check_prob_alg_pairing/get_concrete_problem (DiffEqBase); init/solve/solve! (CommonSolve).
  • all_explicit_imports_are_public (17): @add_kwonly/AbstractDEAlgorithm/AbstractDEProblem/AbstractRODESolution/ConstantInterpolation/NullParameters/build_solution/promote_tspan (SciMLBase); KeywordArgSilent/get_concrete_p/get_concrete_u0/isconcreteu0/promote_u0 (DiffEqBase); init/solve/solve! (CommonSolve); ismutable (StaticArrays).

No aqua_broken/ei_broken needed: Aqua.test_all passes clean (11/11) and all six EI checks pass with the ignore-lists. jet_broken is not used — the #187 markers stay as the bespoke report_call testset rather than being remapped (report_package = 0 reports, which would Unexpected-Pass a jet_broken = true).

Deps (test/qa/Project.toml)

  • SciMLTesting compat bumped "1" -> "1.6".
  • Dropped ExplicitImports (transitive via SciMLTesting), Distributions and SafeTestsets (unused in the QA env).
  • Kept Aqua (ambiguities child-proc needs it a direct dep) and JET (bespoke testset); kept LinearAlgebra (Diagonal in the KalmanFilter JET case).

Verification

Ran the QA group against released SciMLTesting 1.6.0 on:

  • Julia 1.10 (lts): Quality Assurance 17 pass / 17 total; JET static analysis 1 pass + 2 broken / 3 total. 0 fail, 0 error.
  • Julia 1.11 (the "1" lane): identical — Quality Assurance 17/17; JET static analysis 1 pass + 2 broken. 0 fail, 0 error.

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits June 25, 2026 05:45
Convert the hand-rolled Aqua + ExplicitImports QA body in test/qa/qa.jl
onto SciMLTesting 1.6's run_qa, with explicit_imports = true. Aqua's
test_all (with the persistent-tasks [sources] sanitizer) replaces the eight
individual Aqua calls; all six ExplicitImports checks now run.

The four owners/public ExplicitImports checks flag only dependency-package
names (SciMLBase / DiffEqBase / CommonSolve / StaticArrays / Base) that are
non-public or re-exported, so each is allowed via a per-check ei_kwargs
ignore-list documenting its source package. No DifferenceEquations-owned
name is ignored, and no_implicit_imports / no_stale_explicit_imports pass
unchanged.

JET stays a bespoke report_call testset: the issue SciML#187 cases live on
specific solve paths that JET.report_package (run_qa's JET path) does not
surface, so run_qa is called with JET = nothing and the two SciML#187
@test_broken markers are preserved verbatim.

Deps: SciMLTesting compat bumped to "1.6"; ExplicitImports dropped
(transitive via SciMLTesting); Distributions and SafeTestsets dropped
(unused in the QA env). Aqua and JET kept as direct deps (Aqua's
ambiguities child-proc and the bespoke JET testset need them); LinearAlgebra
kept (Diagonal in the KalmanFilter JET case).

Verified locally against released SciMLTesting 1.6.0 on Julia 1.10 (lts) and
1.11 (the "1" lane): Quality Assurance 17/17 pass, JET static analysis 1 pass
+ 2 broken, 0 fail/error on both.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Downgrade lane failed at sandbox resolve with
"empty intersection between StaticArrays@1.9.8 and project compatibility
1.9.18-1": the main Project.toml pins StaticArrays to its 1.9.8 floor, but
test/Project.toml carried a higher 1.9.18 floor (a dependabot "permit latest"
bump), so at downgrade the package-under-test was held at 1.9.8 while the test
sandbox demanded >=1.9.18. Lower the test floor to 1.9.8 to match the package
floor; no test dependency requires StaticArrays >= 1.9.18 (highest is ForwardDiff
1.0 at 1.5.0).

A second downgrade-only break was masked behind that resolve failure: runtests.jl
calls run_tests(...; all = ["Core"]), but the `all` kwarg was only added in
SciMLTesting 1.1.0. The test floor SciMLTesting = "1" let downgrade pick 1.0.0,
which errors with MethodError (no method run_tests(; ..., all)). Raise the floor
to 1.1.

Both are pre-existing downgrade-floor issues (predate the run_qa v1.6 conversion);
they only manifest at downgrade because Core lanes resolve latest versions where
both floors are satisfied.

Verified locally on Julia 1.10.11 with CI=true and all non-stdlib compat
floor-pinned (the exact Downgrade lane): sandbox resolves (StaticArrays v1.9.8,
SciMLTesting v1.1.0) and "DifferenceEquations tests passed" across all Core
groups.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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