Skip to content

QA: run_qa v1.6 form + ExplicitImports#580

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

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Ignore until reviewed by @ChrisRackauckas.

Converts test/qa/qa.jl from the hand-rolled Aqua/JET body to the SciMLTesting 1.6 run_qa form with ExplicitImports enabled.

run_qa v1.6 form

  • run_qa(MethodOfLines; explicit_imports = true, ...) replaces the manual Aqua.test_* calls and JET @test_broken placeholders.
  • Aqua: the five genuine findings tracked in QA: Aqua/JET findings marked @test_broken pending fix #574 are preserved via aqua_broken = (:ambiguities, :undefined_exports, :stale_deps, :deps_compat, :piracies) (each emits a tracked @test_broken placeholder); the passing sub-checks (unbound_args, project_extras, persistent_tasks, julia compat) run via Aqua.test_all.
  • JET: the 10 errors previously tracked in QA: Aqua/JET findings marked @test_broken pending fix #574 (DiscreteSpace fields, otherderivmaps, staggered_discretize) no longer reproduce on the current ModelingToolkit 11 / SciMLBase 3 stack — JET.report_package returns no reports — so JET.test_package now runs as a hard check (the @test_broken was un-broken).

ExplicitImports findings

  • no_stale_explicit_imports — FIXED. Removed 9 genuinely-unused explicit imports from src/MethodOfLines.jl: variable, parameters, varmap_to_vars (ModelingToolkit), setname, rename (Symbolics), cardinalize_eqs!, make_pdesys_compatible, parse_bcs, generate_system (PDEBase). Verified none are bare-used, method-extended, or re-exported.
  • no_implicit_importsei_broken (tracked QA: Aqua/JET findings marked @test_broken pending fix #574). ~80 names reach the module through heavy using <BigDep> (SciMLBase, DiffEqBase, ModelingToolkit, Symbolics, SymbolicUtils, PDEBase, DomainSets, Interpolations, ...). Making them all explicit is a large, risky refactor, so it stays @test_broken pending the tracking issue.
  • owners / public checks — pass via ei_kwargs ignore-lists. Each ignore is for another package's non-public or re-exported name (PDEBase, Symbolics, ModelingToolkit(Base), SciMLBase, IfElse, RuntimeGeneratedFunctions, Base); they go clean once those packages export/declare-public the names. Each ignore is grouped by source package in a comment.

Deps

test/qa/Project.toml: SciMLTesting compat → "1.6"; dropped Aqua, SafeTestsets, Pkg (Aqua + ExplicitImports come transitively via SciMLTesting, and the only Aqua sub-check needing Aqua as a direct dep — ambiguities — is disabled here).

Verification

Ran the QA group locally on Julia 1.10 via GROUP=QA Pkg.test, resolving the released SciMLTesting 1.6.0 (no dev-from-branch):

Test Summary: | Pass  Broken  Total     Time
QA            |    9       6     15  3m05.5s
     Testing MethodOfLines tests passed

9 Pass (3 Aqua + JET + 5 EI), 6 Broken (5 aqua_broken + 1 ei no_implicit_imports), 0 Fail, 0 Error.

🤖 Generated with Claude Code

Convert the hand-rolled test/qa/qa.jl (manual Aqua sub-checks + JET
@test_broken markers) to the SciMLTesting 1.6 run_qa form with
ExplicitImports enabled.

- run_qa(MethodOfLines; explicit_imports = true, ...) replaces the manual
  Aqua.test_* / JET @test_broken body.
- Aqua: the five genuine findings from SciML#574 (ambiguities, undefined_exports,
  stale_deps, deps_compat, piracies) are preserved as aqua_broken; the
  passing sub-checks run via Aqua.test_all.
- JET: the 10 errors previously tracked in SciML#574 no longer reproduce on the
  current ModelingToolkit 11 / SciMLBase 3 stack (report_package returns no
  reports), so JET.test_package now runs as a hard check (un-broken).
- ExplicitImports:
  - no_stale_explicit_imports: FIXED by removing 9 genuinely-unused explicit
    imports (variable, parameters, varmap_to_vars, setname, rename,
    cardinalize_eqs!, make_pdesys_compatible, parse_bcs, generate_system).
  - no_implicit_imports: ~80 names reach the module via heavy `using <BigDep>`;
    making them explicit is a large risky refactor, kept ei_broken pending SciML#574.
  - the owners / public checks pass with per-check ignore-lists for other
    packages' non-public / re-exported names (PDEBase, Symbolics,
    ModelingToolkit(Base), SciMLBase, IfElse, RuntimeGeneratedFunctions, Base).

test/qa/Project.toml: SciMLTesting compat -> "1.6"; drop Aqua/SafeTestsets/Pkg
(Aqua/ExplicitImports come transitively via SciMLTesting, and the ambiguities
sub-check that needs Aqua as a direct dep is disabled here).

Verified locally on Julia 1.10 against released SciMLTesting 1.6.0: QA group
9 Pass, 6 Broken, 0 Fail, 0 Error.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The v1.6 conversion un-broke JET on the basis that report_package returned
no reports, but that was observed on Julia 1.10. On the CI `julia 1` lane
(1.11/1.12) JET still finds the same possible errors tracked in SciML#574:
DiscreteSpace getproperty `.time`/`.ps` FieldErrors reached via ivs/params,
`MethodOfLines.otherderivmaps` not defined, and a possibly-undefined
`f_analytic` in MOL_discretization.jl. Restore jet_broken = true so the
check is report-only (it auto-flags an Unexpected Pass once JET is clean),
matching the original test/qa/qa.jl `@test_broken` for JET.

Verified locally on Julia 1.12 against released SciMLTesting 1.6.0 (JET
0.11.5, ModelingToolkit 11.28, SciMLBase 3.22): QA group 8 Pass, 7 Broken,
0 Fail, 0 Error (was 8 Pass, 1 Fail, 6 Broken).

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