Skip to content

QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#102

Merged
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run-qa-v16-explicit-imports
Jul 6, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#102
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa-run-qa-v16-explicit-imports

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

Converts every QA environment in the monorepo (root + both lib/ sublibraries) to the SciMLTesting v1.6 run_qa form with ExplicitImports enabled.

Per QA env the old hand-rolled @testset "Aqua" Aqua.test_all(Mod) becomes run_qa(Mod; explicit_imports = true, ...), which runs Aqua (unchanged) plus the six ExplicitImports checks behind one dispatcher. SciMLTesting compat is bumped to 1.6 in each test/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 on lts/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 bare using for all deps -> large implicit-import surface; marked ei_broken and tracked in the issue below (auto-flags an Unexpected Pass once fixed).
  • all_qualified_accesses_via_owners: ignore :ADTypes (reached via SciMLBase.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, ...).
  • remaining checks pass.

lib/CorleoneOED — verified locally: EI part 5 Pass, 1 Broken, 0 Fail.

  • no_implicit_imports: same bare-using pattern -> ei_broken (tracked).
  • all_qualified_accesses_are_public: ignore Base/SciML internals plus CorleoneOED's own as-yet-unexported helpers reached through Corleone.* (get_bounds, get_block_structure, shooting_constraints, ...).
  • remaining checks pass.

lib/OptimalControlBenchmarks — verified locally: EI part 6 Pass, 0 Fail, 0 Broken (no broken markers needed).

  • no_implicit_imports / no_stale_explicit_imports: the module is unanalyzable (dynamic include in problem_registry.jl), so allow_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] and lib/OptimalControlBenchmarks [QA] lanes are already red on master (SublibraryCI run #101) from genuine Aqua failures: CorleoneOED has method ambiguities, an unbound type param, undefined export CorleoneOED.Variable, stale deps, a missing Pkg extras-compat entry, and type piracy; OptimalControlBenchmarks has stale deps and missing deps/extras compat entries. This PR runs the same Aqua.test_all as before with no new disables — it does not mask those failures with aqua_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_imports broken markers: #103.

ChrisRackauckas and others added 2 commits July 5, 2026 12:04
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>
@ChrisRackauckas-Claude ChrisRackauckas-Claude force-pushed the qa-run-qa-v16-explicit-imports branch from c6ca195 to 8afb301 Compare July 5, 2026 16:37
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor Author

Rebased onto main (now at #108, 4036eea), which had already fixed the sublibrary QA (Aqua) and Downgrade reds at the source. Conflict resolution:

Validated locally on Julia 1.12.6 (CI's julia 1 lane):

  • CorleoneOED QA group: 16 pass / 1 broken (expected ei_broken=no_implicit_imports) / 0 fail.
  • OptimalControlBenchmarks QA group: 17 pass / 0 fail.

CI after rebase: all QA/Downgrade/Core/Examples lanes green (24 pass). The sole red lane, Documentation / Build and Deploy, is a pre-existing main failure (fails identically on the #108 merge commit 4036eea and every prior main push): the docs/ env is unsatisfiable resolving Corleone 0.0.5 against CorleoneOED — "no compatible versions left with CorleoneOED". This PR does not touch docs/ and cannot fix it; it needs a separate docs/Project.toml compat change.

Ignore until reviewed by @ChrisRackauckas.

@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review July 6, 2026 12:49
@ChrisRackauckas ChrisRackauckas merged commit a479c1d into SciML:main Jul 6, 2026
27 of 28 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