Skip to content

QA: run_qa v1.6 form + ExplicitImports#311

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

QA: run_qa v1.6 form + ExplicitImports#311
ChrisRackauckas merged 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicit-imports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Ignore until reviewed by @ChrisRackauckas.

Brings the QA group onto the SciMLTesting 1.6 run_qa form with ExplicitImports enabled. test/qa/qa.jl becomes a single run_qa(DiffEqParamEstim; explicit_imports = true, ei_kwargs = ...) call driving Aqua + JET + ExplicitImports.

Result

QA group 18/18 pass, 0 FAIL / ERROR / BROKEN on both Julia 1.10 (lts) and 1.11 ("1"), verified locally against the released SciMLTesting 1.6.0 (no dev-from-branch). No @test_broken placeholders remain — every prior broken marker was genuinely fixed.

Aqua findings (previously @test_broken, tracked in #306) — FIXED, markers removed

  • stale_deps: Calculus was in [deps] but used nowhere in src/tests/docs. Removed from [deps] and [compat].
  • deps_compat (deps): LinearAlgebra had no [compat] entry. Added LinearAlgebra = "1.10".
  • The QA: Aqua findings marked @test_broken pending fix #306 "Pkg in [extras]" finding was already stale (no Pkg in [extras]).

These two fixes let Aqua's Stale dependencies and Compat bounds sub-checks pass outright, so #306 can be closed.

ExplicitImports findings (6 checks)

  • no_implicit_imports, no_stale_explicit_imports, all_explicit_imports_via_owners: already passing.
  • all_qualified_accesses_via_owners — FIXED. AbstractNoTimeSolution, AbstractEnsembleSolution, and build_solution were accessed via DiffEqBase.X but are owned by SciMLBase; switched the qualified module to the owner (SciMLBase.X). Verified the rewritten L2Loss/LogLikeLoss solution + ensemble dispatch still returns identical finite values.
  • all_qualified_accesses_are_public / all_explicit_imports_are_public — IGNORE other packages' not-yet-public names, each documented with its source pkg: AbstractDEProblem/AbstractEnsembleSolution/AbstractNoTimeSolution/AbstractSciMLProblem/AbstractSciMLSolution/NoAD/build_solution/successful_retcode/Success (SciMLBase), DECostFunction (DiffEqBase), solve (CommonSolve), loglikelihood (StatsAPI). successful_retcode, ReturnCode.Success, and loglikelihood are only flagged on Julia 1.10's public DB; ignored to keep both lanes green. They go public as those base libraries release.

Other

  • Removed redundant standalone test/explicit_imports.jl (a top-level Core file whose two checks are now covered by the QA group's run_qa) and dropped ExplicitImports from the root [extras]/[targets].test (it is transitive via SciMLTesting in the QA sub-env).
  • test/qa/Project.toml SciMLTesting compat -> "1.6". Aqua and JET kept as direct QA deps (Aqua's ambiguities child-process needs Aqua a direct dep; JET runs clean).

🤖 Generated with Claude Code

ChrisRackauckas and others added 3 commits June 25, 2026 05:50
Convert test/qa/qa.jl from the hand-rolled Aqua.test_all + JET.test_package
body to the SciMLTesting 1.6 run_qa form, with ExplicitImports enabled.

run_qa now drives all three QA tools:
  - Aqua (SciMLTesting dep): full test_all, no sub-checks disabled.
  - JET (weakdep, opt-in via `using JET`): runs clean (0 reports).
  - ExplicitImports (SciMLTesting dep): all 6 checks via explicit_imports = true.

Resolve every finding to a hard pass (0 FAIL / ERROR / BROKEN), so no
@test_broken placeholders remain:

Aqua (previously @test_broken, tracked in SciML#306) — FIXED, markers removed:
  - stale_deps: Calculus was declared in [deps] but used nowhere; removed it
    from [deps] and [compat].
  - deps_compat (deps): LinearAlgebra had no [compat] entry; added
    LinearAlgebra = "1.10".
  (The SciML#306 "Pkg in [extras]" finding was already stale — no Pkg in extras.)

ExplicitImports:
  - all_qualified_accesses_via_owners: FIXED. AbstractNoTimeSolution,
    AbstractEnsembleSolution, and build_solution were accessed via DiffEqBase
    but are owned by SciMLBase; switched the qualified module to the owner
    (SciMLBase.X).
  - all_qualified_accesses_are_public / all_explicit_imports_are_public:
    ignore other packages' not-yet-public names (SciMLBase, DiffEqBase,
    CommonSolve, StatsAPI), documented per-name with their source. Several
    (successful_retcode, ReturnCode.Success, loglikelihood) are only flagged
    on Julia 1.10's public DB, so they are ignored to keep both the lts and
    "1" QA lanes green.
  - no_implicit_imports / no_stale_explicit_imports /
    all_explicit_imports_via_owners: already passing.

Also remove the redundant standalone test/explicit_imports.jl (a top-level
Core file whose checks are now covered by the QA group's run_qa) and drop
ExplicitImports from the root [extras]/[targets].test (transitive via
SciMLTesting in the QA sub-env).

Deps: test/qa/Project.toml SciMLTesting compat -> "1.6"; Aqua and JET kept
direct (Aqua's ambiguities child-process needs Aqua a direct dep; JET runs).

Verified locally against the released SciMLTesting 1.6.0: QA group 18/18 pass,
0 fail / error / broken on both Julia 1.10 (lts) and 1.11 ("1").

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

SciMLTesting 1.7 runs the public-API ExplicitImports checks
(all_qualified_accesses_are_public, all_explicit_imports_are_public) only
on Julia >= 1.11. With SciMLBase 3.24.0 / CommonSolve 0.2.9 / StatsAPI now
declaring these names public, most prior ignores are redundant.

Removed (now public in their owner module, verified on Julia 1.12 against
registered releases):
  qualified accesses: AbstractSciMLProblem, AbstractSciMLSolution,
    build_solution, successful_retcode, Success (all SciMLBase)
  explicit imports:   solve (CommonSolve), loglikelihood (StatsAPI)

Retained (still non-public, genuine base-lib internals):
  AbstractDEProblem, AbstractEnsembleSolution, AbstractNoTimeSolution,
  NoAD (SciMLBase); DECostFunction (DiffEqBase)

Verified: QA group green on Julia 1.12 (18/18, public checks run) and
Julia 1.10 (16/16, public checks skipped) against registered releases.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLBase 3.27.0 declares the abstract problem/solution supertypes public,
and DiffEqBase 7.6.0 declares DECostFunction public, so their public-API
ExplicitImports ignores are now redundant. Remove:
  AbstractDEProblem, AbstractEnsembleSolution, AbstractNoTimeSolution (SciMLBase)
  DECostFunction (DiffEqBase)

Retained: NoAD, which is owned by SciMLBase but is still not declared public
there (verified Base.ispublic(SciMLBase, :NoAD) == false on 3.27.0). The source
already accesses it via its owner (SciMLBase.NoAD), so it stays as a genuine
non-public allowed ignore.

Bump the QA env SciMLTesting floor to 1.7 so the public-API checks are gated to
Julia >= 1.11 (run on 1.12, skipped on 1.10).

Verified against registered releases (SciMLBase 3.27.0, DiffEqBase 7.6.0,
SciMLTesting 1.7.0):
  Julia 1.12: QA group 18/18 (public-API checks run, only NoAD ignored)
  Julia 1.10: QA group 16/16 (public-API checks skipped)

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude marked this pull request as ready for review June 27, 2026 20:59
@ChrisRackauckas ChrisRackauckas merged commit 8fc8bd8 into SciML:master Jul 2, 2026
9 of 10 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