Skip to content

QA: run_qa v1.6 form + ExplicitImports#96

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

QA: run_qa v1.6 form + ExplicitImports#96
ChrisRackauckas merged 3 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Ignore until reviewed by @ChrisRackauckas.

Brings this repo's QA onto the SciMLTesting 1.6 run_qa form and enables the ExplicitImports check group. Converts the hand-rolled test/qa/qa.jl (which carried two @test_broken placeholders) to a single declarative run_qa call.

What changed

  • test/qa/qa.jl: manual Aqua/JET @testset -> run_qa(FiniteVolumeMethod1D; explicit_imports = true, ei_kwargs = ...).
  • Aqua deps_compat (QA: Aqua/JET findings marked @test_broken pending fix #84): fixed at the source rather than marked broken — added SparseArrays = "1" to the root [compat]. Aqua.test_all (incl. deps_compat) now passes.
  • JET (QA: Aqua/JET findings marked @test_broken pending fix #84): does not reproduce under run_qa's canonical config (mode = :typo, target_modules = (FiniteVolumeMethod1D,)). The original 4 reports were artifacts of target_defined_modules = true (whole-world analysis). JET.test_package now runs and passes, so no jet_broken is needed.
  • test/explicit_imports.jl removed + ExplicitImports dropped from root [extras]/[targets].test and the test/ env. Its two checks are subsumed by the QA group's six; ExplicitImports is now transitive via SciMLTesting.
  • test/qa/Project.toml: SciMLTesting compat "1" -> "1.6". SafeTestsets kept (the folder-model @safetestset wrapper needs it as a direct dep of the group env); Aqua/JET kept.

ExplicitImports findings summary

All 6 checks run. 4 pass clean (no_implicit_imports, no_stale_explicit_imports, all_explicit_imports_via_owners, all_qualified_accesses_via_owners). 2 carry documented ignore-lists for other packages' not-yet-public names (no own-package findings, nothing broken):

check ignored name source pkg reason
all_qualified_accesses_are_public AutoSpecialize SciMLBase specialization default in solve.jl
all_qualified_accesses_are_public init CommonSolve CommonSolve.init extended/forwarded
all_explicit_imports_are_public solve CommonSolve re-exported

These ignores can be dropped once the upstream packages mark those names public.

Verification

Run locally on Julia 1.10 against released SciMLTesting 1.6.0 (Pkg resolves it; no dev-from-branch) via the exact CI path (GROUP=QA through test/runtests.jl):

Test Summary: | Pass  Total   Time
QA/qa.jl      |   18     18  36.6s

18/18 pass, 0 fail / 0 error / 0 broken (11 Aqua sub-checks + 1 JET + 6 ExplicitImports).

Closes #84.

🤖 Generated with Claude Code

ChrisRackauckas and others added 3 commits June 26, 2026 23:57
Convert the hand-rolled test/qa/qa.jl to the SciMLTesting 1.6 run_qa
form and enable the ExplicitImports check group.

- qa.jl: replace the manual Aqua/JET testset (which carried two
  @test_broken placeholders) with run_qa(FiniteVolumeMethod1D;
  explicit_imports = true, ...).
- The Aqua deps_compat finding (SciML#84) is fixed at the source rather than
  marked broken: add SparseArrays = "1" to the root [compat]. Aqua
  test_all (incl. deps_compat) now passes.
- The JET finding (SciML#84) does not reproduce under run_qa's canonical
  config (mode = :typo, target_modules = (FiniteVolumeMethod1D,)); the
  original 4 reports were artifacts of target_defined_modules = true.
  JET.test_package now runs and passes, so no jet_broken is needed.
- ExplicitImports: all six checks run. Four pass clean; two non-public
  names from other packages are ignored until they go public:
  all_qualified_accesses_are_public ignores AutoSpecialize (SciMLBase)
  and init (CommonSolve); all_explicit_imports_are_public ignores solve
  (CommonSolve, re-exported). All ignores are other-package non-public
  names, documented inline with their source package.
- Drop ExplicitImports from the root [extras]/[targets].test and the
  test/ env, and remove the legacy test/explicit_imports.jl (its two
  checks are subsumed by the QA group's six). ExplicitImports is now a
  transitive dep via SciMLTesting.
- test/qa/Project.toml: bump SciMLTesting compat to "1.6"; keep
  SafeTestsets (the folder-model @safetestset wrapper needs it as a
  direct dep of the group env) and Aqua/JET.

Verified locally on Julia 1.10 against released SciMLTesting 1.6.0 via
GROUP=QA runtests.jl: QA/qa.jl 18/18 pass, 0 fail/error/broken.

Closes SciML#84.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7.0 runs the two public-API ExplicitImports checks
(check_all_qualified_accesses_are_public and
check_all_explicit_imports_are_public) only on Julia >= 1.11 and skips
them on the lts. Combined with the base-lib public-API releases
(SciMLBase 3.24.0, CommonSolve 0.2.9), the per-repo public-API ignore
entries this PR carried are now redundant.

Empty both public-API ignore-lists in test/qa/qa.jl: the previously
ignored AutoSpecialize (SciMLBase), init (CommonSolve), and solve
(CommonSolve) are all recognized as public on the registered releases,
so run_qa(...; explicit_imports = true) passes with no ei_kwargs at all.

Verified against registered releases (no dev of base libs; FVM dev'd
from this working tree):
- Julia 1.12 (public-API checks RUN): QA group 18/18 pass, 0 fail/
  error/broken; resolved SciMLTesting 1.7.0, SciMLBase 3.24.0,
  CommonSolve 0.2.9, ExplicitImports 1.15.0.
- Julia 1.10 lts (public-API checks skipped by SciMLTesting 1.7):
  QA group 16/16 pass, 0 fail/error/broken.

No names needed restoring; the ignore-lists are now empty.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The two public-API ExplicitImports checks
(check_all_qualified_accesses_are_public,
check_all_explicit_imports_are_public) are gated to Julia >= 1.11 only
from SciMLTesting 1.7.0. With the now-empty public-API ignore-lists in
qa.jl, the QA group relies on that gate so the LTS (1.10) does not
spuriously flag public-backported names. Raise the qa-env compat floor
from "1.6" to "1.7" so the resolved SciMLTesting always carries the gate.

Verified against registered releases (FVM dev'd via [sources], no dev of
base libs):
- Julia 1.12 (public-API checks RUN, no ignores): QA group 18/18 pass,
  0 fail/error/broken. Resolved SciMLBase 3.27.0, SciMLTesting 1.7.0,
  CommonSolve 0.2.9, ExplicitImports 1.15.0, JET 0.11.5, Aqua 0.8.16.
- Julia 1.10 lts (public-API checks skipped by the 1.7 gate): QA group
  16/16 pass, 0 fail/error/broken (the 2-test delta is exactly the two
  gated public-API checks).

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

Copy link
Copy Markdown
Contributor Author

EI cleanup finished against the live make-public releases

Re-verified this PR's ExplicitImports cleanup against the now-registered public-API releases (SciMLBase 3.27.0, CommonSolve 0.2.9, SciMLTesting 1.7.0), no dev of base libs (FVM dev'd via [sources]):

Source migration: none needed. src/ has zero DiffEqBase.X accesses; it already uses SciMLBase.ODEProblem / SciMLBase.AutoSpecialize and CommonSolve.init directly. SciMLBase + CommonSolve are already direct [deps].

Public-API ignore-lists: already emptied (the entire ei_kwargs block was dropped in the prior commit). The three previously-ignored names are all recognized as public on the registered releases:

  • AutoSpecialize → SciMLBase 3.27.0 (public)
  • init, solve → CommonSolve 0.2.9 (public)

No names needed restoring.

Compat: bumped the qa-env floor SciMLTesting = "1.6" -> "1.7" so the resolved SciMLTesting always carries the >=1.11 gate for the two public-API checks (otherwise 1.6.x could resolve and spuriously flag public-backported names on the LTS). Root SciMLBase = "2.146, 3.1" already admits 3.27.0; CommonSolve = "0.2" admits 0.2.9.

Verification (registered releases, Pkg resolve, no dev of base libs):

  • Julia 1.12 (public-API checks RUN, no ignores): QA group 18/18 pass, 0 fail/error/broken. Resolved SciMLBase 3.27.0, SciMLTesting 1.7.0, CommonSolve 0.2.9, ExplicitImports 1.15.0, JET 0.11.5, Aqua 0.8.16.
  • Julia 1.10 lts (public-API checks skipped by the 1.7 gate): QA group 16/16 pass, 0 fail/error/broken. The 2-test delta vs 1.12 is exactly the two gated public-API checks.

qaFullyClean: no EI ignore-lists and no ei_broken/aqua_broken/jet_broken/@test_broken remain anywhere in src/ or test/. qa.jl collapses to run_qa(FiniteVolumeMethod1D; explicit_imports = true).

Rebased onto main (picked up Release v1.2.1 #98), Runic-clean, force-with-lease pushed.

Ignore until reviewed by @ChrisRackauckas.

@ChrisRackauckas-Claude ChrisRackauckas-Claude marked this pull request as ready for review June 29, 2026 09:51
@ChrisRackauckas ChrisRackauckas merged commit f964ecd into SciML:main Jul 2, 2026
8 of 9 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.

QA: Aqua/JET findings marked @test_broken pending fix

2 participants