Skip to content

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

Draft
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v16-explicit-imports
Draft

QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#4671
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v16-explicit-imports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Ignore until reviewed by @ChrisRackauckas.

Converts the ModelingToolkit monorepo's QA envs to the SciMLTesting 1.6 run_qa
form with the ExplicitImports checks enabled. Both QA lanes were red before this PR
(the underlying Aqua/JET/ExplicitImports findings are tracked in #4670); this PR
brings them to green-or-broken (0 hard failures) by marking each pre-existing
finding as @test_broken via run_qa's aqua_broken / jet_broken / ei_broken,
so a clean lane records Broken (not Fail) and each marker auto-flags an
Unexpected Pass once the underlying finding is fixed.

Sublibs converted: 1 (ModelingToolkitBase) + the root. SciCompDSL has no QA env
(only a Core group), so it is unchanged. The [sources]/develop wiring is
preserved exactly; only qa.jl and the QA envs' [deps]/[compat]
(SciMLTesting → "1.6") were touched.

Root ModelingToolkit (test/qa/qa.jl)

run_qa(ModelingToolkit; jet_kwargs = (; target_defined_modules = true), ...).

  • EI all_explicit_imports_via_owners / all_qualified_accesses_via_owners: pass
    via reexport-hub ignore-lists.
  • EI no_implicit_imports, no_stale_explicit_imports, all_qualified_accesses_are_public,
    all_explicit_imports_are_public: ei_broken (StructuralTransformations
    implicit/stale imports; hundreds of upstream non-public names; dynamic-include
    unanalyzability).
  • Aqua undefined_exports (Variable) + piracies (deliberate SciMLBase
    constructors on System): aqua_broken.
  • JET report_package toplevel-require errors: jet_broken.
  • Verified Julia 1.10 (released SciMLTesting 1.6.0): 11 pass / 7 broken / 0 fail.

lib/ModelingToolkitBase (test/qa/qa.jl)

Replaces aqua.jl (Aqua.test_all) with run_qa(ModelingToolkitBase; explicit_imports = true, ...);
the custom JET type-stability suite jet.jl is kept as-is and still runs.

  • EI *_via_owners: pass via reexport-hub ignore-lists.
  • EI no_implicit_imports, no_stale_explicit_imports, both public-API checks:
    ei_broken.
  • Aqua ambiguities, unbound_args, undefined_exports, stale_deps,
    deps_compat, piracies: aqua_broken.
  • Verified Julia 1.10 (released SciMLTesting 1.6.0): 4 pass / 10 broken / 0 fail.

All broken-markers are tracked in #4670.

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits July 5, 2026 12:04
Convert the root ModelingToolkit QA env and the ModelingToolkitBase
sublibrary QA env to the SciMLTesting 1.6 `run_qa` form with the
ExplicitImports checks enabled (`explicit_imports = true`).

Root `test/qa/qa.jl`:
  * `run_qa(ModelingToolkit; jet_kwargs = (; target_defined_modules = true), ...)`,
    preserving the previous JET configuration.
  * ExplicitImports: the two `*_via_owners` checks pass via reexport-hub
    ignore-lists; `no_implicit_imports`, `no_stale_explicit_imports`, and both
    public-API checks are marked `ei_broken` (pre-existing findings).
  * Pre-existing Aqua `undefined_exports`/`piracies` and the JET `report_package`
    toplevel errors are marked broken.

`lib/ModelingToolkitBase/test/qa`:
  * Replace `aqua.jl` (`Aqua.test_all`) with `qa.jl` (`run_qa(ModelingToolkitBase;
    explicit_imports = true, ...)`); the custom JET type-stability suite `jet.jl`
    is kept as-is and still runs.
  * Reexport-hub ignore-lists for the `*_via_owners` checks; `no_implicit_imports`,
    `no_stale_explicit_imports`, and both public-API checks marked `ei_broken`.
  * Pre-existing Aqua findings (`ambiguities`, `unbound_args`, `undefined_exports`,
    `stale_deps`, `deps_compat`, `piracies`) marked `aqua_broken`.

All broken-markers are tracked in SciML#4670 and auto-flag an
Unexpected Pass once each underlying finding is resolved. SciMLTesting compat
bumped to "1.6" in both QA envs; the `[sources]`/develop wiring is unchanged.

Verified locally on Julia 1.10 against released SciMLTesting 1.6.0:
  * root QA: 11 pass / 7 broken / 0 fail
  * ModelingToolkitBase QA: 4 pass / 10 broken / 0 fail

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

The ModelingToolkitBase QA env loads JET (via the separate `jet.jl`
type-stability suite) in the same test session. SciMLTesting's JET
extension registers JET process-wide on `using JET`, so `run_qa` in
`qa.jl` defaulted `jet = true` and ran a second, hard
`JET.report_package(ModelingToolkitBase; mode = :typo)` on top of the
bespoke suite. That report surfaces ~250 findings and fails the QA lane
as a hard error -- a check that never ran under the previous
`Aqua.test_all` QA. Pass `jet = false` so `run_qa` here stays Aqua +
ExplicitImports only; the intended JET coverage remains in `jet.jl`.

Verified locally on Julia 1.12 (released SciMLTesting 1.6.0), with JET
pre-registered to mirror the CI `jet.jl`-then-`qa.jl` ordering:
ModelingToolkitBase QA now 4 pass / 10 broken / 0 fail (was 1 hard fail).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude force-pushed the qa-run_qa-v16-explicit-imports branch from 2cebbbd to 5fa90c8 Compare July 5, 2026 16:12
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