QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#102
Merged
ChrisRackauckas merged 2 commits intoJul 6, 2026
Merged
Conversation
3a57a44 to
9df1337
Compare
Convert the root and both lib/ sublibrary QA environments from the hand-rolled `@testset "Aqua" Aqua.test_all(Mod)` to the SciMLTesting v1.6 `run_qa(Mod; explicit_imports = true, ...)` dispatcher, enabling the six ExplicitImports checks alongside the unchanged Aqua run. Bump SciMLTesting compat to "1.6" per QA env; ExplicitImports is pulled transitively. The sublib [sources]/develop wiring is preserved exactly. Per-env ExplicitImports curation: - Corleone: no_implicit_imports broken (bare-`using` deps, tracked); ignore :ADTypes for via_owners and the deliberate Base/SciML internal names for qualified-accesses-are-public. - CorleoneOED: no_implicit_imports broken (tracked); ignore Base/SciML internals plus Corleone's own unexported helpers for qualified-accesses-are-public. - OptimalControlBenchmarks: allow_unanalyzable (dynamic include in problem_registry.jl) for the implicit/stale checks; ignore :inputs (MTK re-export) and :default_rng/:initialstates. All six EI checks pass. The CorleoneOED and OptimalControlBenchmarks QA lanes are already red on master from genuine pre-existing Aqua failures; this conversion runs the same Aqua.test_all with no new disables and does not mask them. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7 runs the two public-API ExplicitImports checks (all_qualified_accesses_are_public / all_explicit_imports_are_public) only on Julia >= 1.11, and several base libs now declare more names public (SciMLBase 3.24, Symbolics 7.28+, SymbolicUtils 4.36, ModelingToolkit 11.29, ArrayInterface 7.26, CommonSolve 0.2.9). Many per-repo public-API ignore entries are now redundant. Emptied both public-API ignore-lists in all three qa.jl files and restored, verified on Julia 1.12 against the registered releases, only the names the public checks still flag as non-public: - root (Corleone): kept 9 (ADTypes/AbstractDEAlgorithm/AbstractDEProblem/ EnsembleAlgorithm/get_colorizers from SciMLBase, AbstractVecOrTuple/Splat from Base, Tunable/canonicalize from SciMLStructures); dropped 10. - lib/CorleoneOED: kept 18 (SciMLBase/SciMLStructures/SymbolicUtils/Symbolics/ ForwardDiff internals + Corleone's own unexported helpers); dropped 6. - lib/OptimalControlBenchmarks: dropped both ignores entirely (inputs, default_rng, initialstates are now all public); kept the via-owners ignore. Other ignores (no_implicit_imports broken-marker, *_via_owners, allow_unanalyzable) left untouched. Verified Julia 1.10 (public checks skipped) and 1.12 (public checks run): ExplicitImports group green-or-broken, 0 EI hard failures, on root + both sublibs. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
c6ca195 to
8afb301
Compare
Contributor
Author
|
Rebased onto
Validated locally on Julia 1.12.6 (CI's
CI after rebase: all QA/Downgrade/Core/Examples lanes green (24 pass). The sole red lane, Documentation / Build and Deploy, is a pre-existing Ignore until reviewed by @ChrisRackauckas. |
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.
Please ignore until reviewed by @ChrisRackauckas.
Converts every QA environment in the monorepo (root + both
lib/sublibraries) to the SciMLTesting v1.6run_qaform with ExplicitImports enabled.Per QA env the old hand-rolled
@testset "Aqua" Aqua.test_all(Mod)becomesrun_qa(Mod; explicit_imports = true, ...), which runs Aqua (unchanged) plus the six ExplicitImports checks behind one dispatcher. SciMLTesting compat is bumped to1.6in eachtest/qa/Project.toml; ExplicitImports is pulled transitively (not added to[deps]). The[sources]/develop wiring for the sublibs is left exactly as is. No JET is run in any of these envs (none ran it before; QA lanes only run onlts/1, so the prerelease-JET crash class does not apply).ExplicitImports findings per env
root
Corleone— verified locally on released SciMLTesting 1.6.0, Julia 1.10:Quality Assurance | 16 Pass, 1 Broken, 0 Fail.no_implicit_imports: package uses bareusingfor all deps -> large implicit-import surface; markedei_brokenand tracked in the issue below (auto-flags an Unexpected Pass once fixed).all_qualified_accesses_via_owners: ignore:ADTypes(reached viaSciMLBase.ADTypes.AbstractADType; ADTypes is not a direct dep).all_qualified_accesses_are_public: ignore deliberate Base/stdlib/SciML internal names (Fix1,Fix2,tail,front,OneTo,Splat,canonicalize,Tunable,setup,initialparameters, ...).lib/CorleoneOED— verified locally: EI part5 Pass, 1 Broken, 0 Fail.no_implicit_imports: same bare-usingpattern ->ei_broken(tracked).all_qualified_accesses_are_public: ignore Base/SciML internals plus CorleoneOED's own as-yet-unexported helpers reached throughCorleone.*(get_bounds,get_block_structure,shooting_constraints, ...).lib/OptimalControlBenchmarks— verified locally: EI part6 Pass, 0 Fail, 0 Broken(no broken markers needed).no_implicit_imports/no_stale_explicit_imports: the module is unanalyzable (dynamicincludeinproblem_registry.jl), soallow_unanalyzable = (OptimalControlBenchmarks,).all_explicit_imports_via_owners/all_explicit_imports_are_public: ignore:inputs(re-exported by ModelingToolkit from ModelingToolkitBase).all_qualified_accesses_are_public: ignore:default_rng(Random),:initialstates(LuxCore).Pre-existing Aqua failures (NOT introduced here)
The
lib/CorleoneOED [QA]andlib/OptimalControlBenchmarks [QA]lanes are already red on master (SublibraryCI run #101) from genuine Aqua failures: CorleoneOED has method ambiguities, an unbound type param, undefined exportCorleoneOED.Variable, stale deps, a missingPkgextras-compat entry, and type piracy; OptimalControlBenchmarks has stale deps and missing deps/extras compat entries. This PR runs the sameAqua.test_allas before with no new disables — it does not mask those failures withaqua_broken, and does not make them worse. They need a separate real fix and are out of scope for this QA-form conversion.Sublibs converted: 2 (CorleoneOED, OptimalControlBenchmarks), plus the root QA env.
🤖 Generated with Claude Code
Tracking issue for the
no_implicit_importsbroken markers: #103.