QA: run_qa v1.6 form + ExplicitImports#311
Merged
ChrisRackauckas merged 3 commits intoJul 2, 2026
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ignore until reviewed by @ChrisRackauckas.
Brings the QA group onto the SciMLTesting 1.6
run_qaform with ExplicitImports enabled.test/qa/qa.jlbecomes a singlerun_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_brokenplaceholders remain — every prior broken marker was genuinely fixed.Aqua findings (previously
@test_broken, tracked in #306) — FIXED, markers removedCalculuswas in[deps]but used nowhere insrc/tests/docs. Removed from[deps]and[compat].LinearAlgebrahad no[compat]entry. AddedLinearAlgebra = "1.10".Pkgin[extras]" finding was already stale (noPkgin[extras]).These two fixes let Aqua's
Stale dependenciesandCompat boundssub-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, andbuild_solutionwere accessed viaDiffEqBase.Xbut are owned bySciMLBase; switched the qualified module to the owner (SciMLBase.X). Verified the rewrittenL2Loss/LogLikeLosssolution + 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, andloglikelihoodare only flagged on Julia 1.10's public DB; ignored to keep both lanes green. They go public as those base libraries release.Other
test/explicit_imports.jl(a top-level Core file whose two checks are now covered by the QA group'srun_qa) and droppedExplicitImportsfrom the root[extras]/[targets].test(it is transitive via SciMLTesting in the QA sub-env).test/qa/Project.tomlSciMLTesting 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