Skip to content

QA: run_qa v1.6 form + ExplicitImports - #39

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:qa/run_qa-v1.6-explicit-imports
Jun 25, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports#39
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:qa/run_qa-v1.6-explicit-imports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Please ignore until reviewed by @ChrisRackauckas.

Brings this repo's QA group onto SciMLTesting 1.6's run_qa form with ExplicitImports enabled.

Changes

  • test/qa/qa.jl: replace the hand-rolled Aqua.test_* sub-check block and the JET.report_package testset with a single run_qa(SurrogatesBase; explicit_imports = true). This runs Aqua.test_all, JET.test_package (with target_modules = (pkg,)), and the six ExplicitImports checks.
  • Preserve the bespoke JET.report_call type-stability testsets (concrete user-defined surrogate subtypes) — value-add beyond run_qa's package-level JET. These still need ignored_modules = (LinearAlgebra, Base) to filter the norm_recursive_check stdlib false-positives on Julia 1.12+.
  • Bump SciMLTesting compat floor to 1.6 (root + test/qa).

ExplicitImports findings

SurrogatesBase is a pure interface module (abstract types + function … end stubs) with zero imports. All six EI checks pass clean:

Check Result
no_implicit_imports pass
no_stale_explicit_imports pass
all_explicit_imports_via_owners pass
all_qualified_accesses_via_owners pass
all_explicit_imports_are_public pass
all_qualified_accesses_are_public pass

No ei_kwargs, no ei_broken, no aqua_broken, no jet_broken needed.

Notes

  • The old per-package JET.report_package used ignored_modules because it had no target_modules restriction; run_qa's target_modules = (pkg,) makes that unnecessary for the package-level analysis (verified passing on 1.10 and 1.12 with the default).
  • Aqua stays a direct QA dep because Aqua.test_all's ambiguities child process requires it.

Local verification (vs released SciMLTesting 1.6.0)

lts (Julia 1.10, JET 0.9.18):  Quality Assurance 18/18, JET report_call type stability 4/4
1   (Julia 1.12, JET 0.11.5):  Quality Assurance 18/18, JET report_call type stability 4/4

0 FAIL / 0 ERROR / 0 BROKEN.

🤖 Generated with Claude Code

Convert the hand-rolled Aqua/JET QA group onto SciMLTesting 1.6's
`run_qa`, enabling the six ExplicitImports checks.

- Replace the manual `Aqua.test_*` sub-check block and the
  `JET.report_package` testset with a single
  `run_qa(SurrogatesBase; explicit_imports = true)`. This runs
  `Aqua.test_all`, `JET.test_package` (with `target_modules = (pkg,)`,
  which removes the need for the old `ignored_modules` workaround on the
  package-level analysis) and all six ExplicitImports checks. All pass:
  the module has zero imports, so the EI checks are clean (no ei_kwargs
  / ei_broken needed), and Aqua/JET have no broken sub-checks.
- Preserve the bespoke `JET.report_call` type-stability testsets that
  analyse concrete user-defined surrogate subtypes; this is value-add
  beyond `run_qa`'s package-level JET. These genuinely still need the
  `ignored_modules = (LinearAlgebra, Base)` config to filter the
  `norm_recursive_check` stdlib false positives on Julia 1.12+ (verified
  locally: removing it produces 2 spurious reports on 1.12).
- Bump SciMLTesting compat floor to "1.6" (root + test/qa). Aqua stays a
  direct QA dep because `test_all`'s ambiguities child process needs it.

Verified locally vs released SciMLTesting 1.6.0:
  lts (1.10, JET 0.9.18):  Quality Assurance 18/18, report_call 4/4
  1   (1.12, JET 0.11.5):  Quality Assurance 18/18, report_call 4/4
0 FAIL / 0 ERROR / 0 BROKEN.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review June 25, 2026 16:36
@ChrisRackauckas
ChrisRackauckas merged commit de6640e into SciML:main Jun 25, 2026
16 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