Skip to content

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

Open
ChrisRackauckas-Claude wants to merge 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-runqa-v16-explicitimports
Open

QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#206
ChrisRackauckas-Claude wants to merge 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-runqa-v16-explicitimports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

This PR should be ignored until reviewed by @ChrisRackauckas.

Converts the root QA env and all 7 lib/<Sub> sublibrary QA envs to the SciMLTesting 1.6 run_qa form with explicit_imports = true, in one branch.

Per QA env

  • qa.jlusing SciMLTesting, <Module>, Test + run_qa(<Module>; explicit_imports = true, ...).
  • test/qa/Project.toml: SciMLTesting [compat] bumped to "1.6"; Aqua kept (ambiguities is disabled in every env); ExplicitImports left as a transitive dep of SciMLTesting (not listed).
  • The monorepo [sources] / develop wiring (sublib + umbrella-root pins, activate_group_env / develop_sources! <1.11 backport) is preserved exactly.

ExplicitImports: fixed, not suppressed (0 hard FAIL, no broken markers)

  • no_implicit_imports — each sublibrary's blanket using <dep> is replaced with the explicit name list ExplicitImports recommends, e.g.
    • BV: using DiffEqBase: DiffEqBase, BVPFunction, BVProblem, using SpecialFunctions: SpecialFunctions, erf
    • ODE: using LinearAlgebra: LinearAlgebra, Diagonal, I, SymTridiagonal, diagind, ldiv!, mul!, rmul!, etc.
    • Jump: using Catalyst: Catalyst, @reaction_network, @species, @parameters, @named, Num, Reaction, ReactionSystem, complete, default_t, hill, make_empty_network, species, unknowns
  • all_qualified_accesses_are_publicJumpProblemLibrary and SDEProblemLibrary call the non-public RuntimeGeneratedFunctions.init (the documented RGF init boilerplate), so :init is added to that check's ignore list.
  • All 6 EI checks pass on every env after the fixes.

Genuine Aqua disables preserved

  • ambiguities = false in every env (including the root — its only ambiguities come from the imported dependency tree, since the umbrella owns no methods).
  • persistent_tasks = false for JumpProblemLibrary and SDEProblemLibrary.

Root package Project.toml

  • Add the missing Pkg [compat] entry (Aqua deps_compat extras check flagged it once Aqua started running on the root).
  • Bump SciMLTesting [compat] to "1.6".

Sublibs converted

BVProblemLibrary, DAEProblemLibrary, DDEProblemLibrary, JumpProblemLibrary, NonlinearProblemLibrary, ODEProblemLibrary, SDEProblemLibrary (7) + root.

Verification (Julia 1.11, released SciMLTesting 1.6.0)

  • Root QA: Quality Assurance | 16 pass / 16 total (Aqua incl. persistent_tasks + deps_compat after the Pkg fix; ExplicitImports 6/6).
  • Each sublibrary: all 6 ExplicitImports checks pass (verified BV/DAE/DDE/NLP/ODE/SDE individually; Jump verified with the explicit-Catalyst fix + init ignore). Aqua per sublib unchanged from the prior hand-rolled call.
  • Runic clean; typos clean.

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits June 25, 2026 13:47
Convert the root QA env and all 7 lib/<Sub> sublibrary QA envs to the
SciMLTesting 1.6 run_qa form with ExplicitImports enabled.

Per QA env: rewrite qa.jl to `using SciMLTesting, <Module>, Test` +
`run_qa(<Module>; explicit_imports = true, ...)`; bump the env's
SciMLTesting [compat] to "1.6"; keep Aqua where ambiguities is disabled.
ExplicitImports stays a transitive dep of SciMLTesting (not listed).

ExplicitImports findings were fixed, not suppressed (0 hard FAIL, no
broken markers):
- no_implicit_imports: each sublibrary's blanket `using <dep>` is made
  explicit (e.g. `using DiffEqBase: DiffEqBase, BVProblem, ...`,
  `using Catalyst: Catalyst, @reaction_network, ...`), exactly the
  ExplicitImports-recommended replacement; all 6 EI checks then pass.
- all_qualified_accesses_are_public: JumpProblemLibrary and
  SDEProblemLibrary call the non-public `RuntimeGeneratedFunctions.init`
  (the package's documented init boilerplate), so `:init` is added to that
  check's ignore list.

Genuine Aqua disables preserved: `ambiguities = false` everywhere (and on
the root, whose ambiguities come only from the imported dependency tree),
`persistent_tasks = false` for JumpProblemLibrary / SDEProblemLibrary.

Root package Project.toml: add the missing `Pkg` [compat] entry (Aqua
deps_compat extras check) and bump SciMLTesting [compat] to "1.6".

Monorepo [sources]/develop wiring is unchanged. Verified on Julia 1.11
against released SciMLTesting 1.6.0: root QA 16/16 pass; each sublibrary's
6 ExplicitImports checks pass.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7.0 runs the two public-API ExplicitImports checks
(check_all_qualified_accesses_are_public / check_all_explicit_imports_are_public)
only on Julia >= 1.11, and RuntimeGeneratedFunctions made `init` public
(Base.ispublic(RuntimeGeneratedFunctions, :init) === true as of v0.5.21).

The `RuntimeGeneratedFunctions.init(@__MODULE__)` boilerplate in
JumpProblemLibrary and SDEProblemLibrary therefore no longer trips the
qualified-access public-API check, so the per-repo `:init` ignore on
`all_qualified_accesses_are_public` is now inert and is removed. Both qa.jl
calls reduce to the plain `run_qa(...; explicit_imports = true, aqua_kwargs = ...)`
form with no EI ignore-lists.

Verified against the registered releases (no dev):
- Julia 1.12 (>= 1.11, public checks run): SDEProblemLibrary EI runs 6/6 with
  the emptied ignore-list (SciMLTesting 1.7.0). JumpProblemLibrary uses the
  identical init pattern and already passed EI 6/6 on CI; init being public
  makes the ignore unnecessary.
- Julia 1.10 (lts, public checks skipped by 1.7): SDE/Jump EI 4/4, root QA 14/14.

SciMLTesting [compat] "1.6" already admits 1.7 (caret), so no compat bump
needed. No `if VERSION < v"1.11"` ignore blocks existed to remove. No names
required restoring -- the public-API ignore-lists are now fully empty.

Note: the sublibrary QA (Julia 1) lanes still fail on a pre-existing,
unrelated Aqua deps_compat issue (`Pkg` listed in [extras] without a [compat]
bound in DAE/DDE/Jump/Nonlinear/ODE/SDE, identical on master); that is out of
scope for this EI ignore sweep and left for a separate focused fix.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 26, 2026 23:38
…API EI)

Finish the run_qa/ExplicitImports conversion against the now-released
public-API surfaces (SciMLBase 3.27.0, DiffEqBase 7.6.0, ArrayInterface
7.26.0) and SciMLTesting 1.7.0 (which gates the two public-API EI checks
-- all_qualified_accesses_are_public / all_explicit_imports_are_public --
to Julia >= 1.11).

Compat:
- Bump SciMLTesting "1.6" -> "1.7" in the root [compat] and every QA
  sub-env (root test/qa + all 7 lib/*/test/qa). "1.6" already admits
  1.7.0 by caret, but the public-API checks are unconditional in 1.6 and
  only gained the >= 1.11 gate in 1.7; pinning the floor at 1.7 guarantees
  the gating version so the LTS (1.10) lane skips the backport-incompatible
  public checks instead of spuriously flagging backported-public names.

QA fix (the QA / Julia 1 reds):
- Add the missing `Pkg = "1.10"` [compat] entry to the six sublibraries
  that list `Pkg` in [extras] without a [compat] bound (DAE/DDE/Jump/
  Nonlinear/ODE/SDE). Aqua's deps_compat extras check (Aqua 0.8 via
  SciMLTesting) hard-fails on `Pkg` extras lacking compat; BVProblemLibrary
  already carries this entry and its QA lane was the only green one. This
  matches BVProblemLibrary exactly -- a real missing bound, not a silenced
  check.

No EI ignore-lists, `ei_broken`, or `VERSION < v"1.11"` blocks exist to
strip (the qa.jl files were already in the bare run_qa form), and no
`DiffEqBase.X` qualified accesses of SciMLBase-owned public names exist in
src/ to migrate -- the source uses explicit imports (`using DiffEqBase:
ODEProblem`, ...) which pass all_explicit_imports_are_public unchanged.

Verified against the registered releases (Pkg resolve, no dev of deps):
  Julia 1.12 (public checks run): root 16/16, ODEProblemLibrary 16/16,
    SDEProblemLibrary 15/15, NonlinearProblemLibrary 16/16,
    DAEProblemLibrary 16/16, JumpProblemLibrary 15/15 -- all green, 0 Fail.
  Julia 1.10 (public checks skipped by the 1.7 gate): ODEProblemLibrary
    14/14 (= 16 minus the 2 skipped public checks); root EI runs 4/4.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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