Skip to content

QA: run_qa v1.6 form + ExplicitImports#77

Merged
ChrisRackauckas merged 3 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa/run-qa-v1.6-explicit-imports
Jul 3, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports#77
ChrisRackauckas merged 3 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa/run-qa-v1.6-explicit-imports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Ignore until reviewed by @ChrisRackauckas.

Converts the hand-rolled test/qa/qa.jl (manual Aqua.test_all + JET.report_package with @test_broken placeholders) onto SciMLTesting 1.6.0's run_qa, and enables the ExplicitImports checks (explicit_imports = true).

Preserved tracked-broken findings (issue #70)

  • Aqua undefined_exports (symbolic_steady_states) -> aqua_broken = (:undefined_exports,)
  • Aqua stale_deps (ReactionNetworkImporters, PolynomialRoots, ModelingToolkit, SBMLToolkit) -> aqua_broken = (:stale_deps,)
  • Aqua deps_compat extras (Pkg missing [compat]) -> preserved as the non-broken aqua_kwargs tweak deps_compat = (check_extras = false,); the deps/weakdeps/julia compat checks still run and pass
  • JET report-mode + @test_broken -> jet_broken = true. Verified locally the finding still reproduces (14 reports) only with the original invocation (target_defined_modules = true, no target_modules narrowing); jet_kwargs therefore overrides the run_qa default to drop target_modules so the genuine reports are surfaced as Broken rather than filtered out.

ExplicitImports findings (6 checks, vs released SciMLTesting 1.6.0)

  • no_stale_explicit_imports — FIXED. using PrecompileTools: @setup_workload, @compile_workload was imported but never used (no @compile_workload block exists anywhere in the package). Removed the import and dropped PrecompileTools from root [deps]/[compat].
  • no_implicit_imports — ei_broken. The package usings several large dependencies (Catalyst, Oscar, JuMP, Graphs, DynamicPolynomials, Satisfiability, ...) and relies on ~75 of their exported names implicitly. Making each explicit is a large, risky refactor; tracked in issue QA: Aqua/JET findings marked @test_broken pending fix #70 as ei_broken = (:no_implicit_imports,) (auto-flags once addressed).
  • all_qualified_accesses_via_owners / all_qualified_accesses_are_public — ignore-listed. Non-public names accessed from other packages via Mod.name: BasicSymbolic (SymbolicUtils, via Symbolics), Library (CDDLib), Optimizer (HiGHS), assemble_oderhs/cycles/get_networkproperties/symmap_to_varmap (Catalyst), n_positive_roots (Hecke). Each ignore documents its source package.
  • all_explicit_imports_via_owners / all_explicit_imports_are_public — pass.

Deps

test/qa/Project.toml: SciMLTesting compat -> "1.6"; dropped unused SafeTestsets; kept Aqua (the ambiguities sub-check spawns a child process that needs Aqua as a direct dep) and JET (jet_broken runs). ExplicitImports stays transitive via SciMLTesting (not added as a direct dep).

Local verification (Julia 1.10, released SciMLTesting 1.6.0, [sources] = ../..)

Test Summary:     | Pass  Broken  Total     Time
Quality Assurance |   13       4     17  5m05.1s

0 Fail, 0 Error. The 4 Broken are the preserved tracked findings: undefined_exports, stale_deps, jet_broken (14 reports), no_implicit_imports.

🤖 Generated with Claude Code

Convert the hand-rolled test/qa/qa.jl (Aqua.test_all + JET.report_package
with manual @test_broken placeholders) onto SciMLTesting 1.6.0's run_qa,
and enable the ExplicitImports checks (explicit_imports = true).

Preserved tracked-broken findings (issue SciML#70):
- Aqua undefined_exports (symbolic_steady_states) -> aqua_broken = (:undefined_exports,)
- Aqua stale_deps (ReactionNetworkImporters, PolynomialRoots, ModelingToolkit,
  SBMLToolkit) -> aqua_broken = (:stale_deps,)
- Aqua deps_compat extras (Pkg missing [compat]) -> preserved as the non-broken
  aqua_kwargs tweak deps_compat = (check_extras = false,)
- JET report-mode + @test_broken -> jet_broken = true. Verified locally the
  finding still reproduces (14 reports) only with the original invocation
  (target_defined_modules = true, NO target_modules narrowing), so jet_kwargs
  overrides the run_qa default to drop target_modules.

ExplicitImports findings (6 checks vs released SciMLTesting 1.6.0):
- no_stale_explicit_imports: FIXED. `using PrecompileTools: @setup_workload,
  @compile_workload` was imported but never used (no workload block exists);
  removed the import and dropped PrecompileTools from [deps]/[compat].
- no_implicit_imports: ei_broken. The package `using`s several large deps
  (Catalyst, Oscar, JuMP, Graphs, DynamicPolynomials, Satisfiability, ...) and
  relies on ~75 of their exported names implicitly; making each explicit is a
  large refactor (tracked in issue SciML#70).
- all_qualified_accesses_via_owners / all_qualified_accesses_are_public: ignore
  non-public names accessed from other packages via Mod.name (BasicSymbolic
  [SymbolicUtils via Symbolics], Library [CDDLib], Optimizer [HiGHS],
  assemble_oderhs/cycles/get_networkproperties/symmap_to_varmap [Catalyst],
  n_positive_roots [Hecke]).
- all_explicit_imports_via_owners / all_explicit_imports_are_public: pass.

Deps: test/qa/Project.toml SciMLTesting compat -> "1.6"; dropped unused
SafeTestsets; kept Aqua (ambiguities child-proc needs it direct) and JET.

Local verification (Julia 1.10, released SciMLTesting 1.6.0):
  Quality Assurance | Pass: 13  Broken: 4  Total: 17  (0 Fail, 0 Error)

Ignore until reviewed by @ChrisRackauckas.

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

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…non-public re-exports)

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas merged commit d0ea78b into SciML:main Jul 3, 2026
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.

2 participants