Skip to content

QA: run_qa v1.6 form + ExplicitImports#76

Open
ChrisRackauckas-Claude wants to merge 5 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run-qa-v1.6
Open

QA: run_qa v1.6 form + ExplicitImports#76
ChrisRackauckas-Claude wants to merge 5 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run-qa-v1.6

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

Brings this repo's QA onto the SciMLTesting 1.6 run_qa folder model with ExplicitImports enabled, replacing the hand-rolled inline ExplicitImports test. Verified locally against the released SciMLTesting 1.6.0 (Pkg resolves it; no dev-from-branch).

What changed

  • New test/qa group (qa.jl + Project.toml), wired through the run_tests qa entry; [QA] declared in test_groups.toml (versions lts, 1; in_all = false).
  • run_qa(GeometricIntegratorsDiffEq; explicit_imports = true, ...) runs Aqua (all sub-checks) + the 6 ExplicitImports checks.
  • The existing NoPre group (JET @test_opt type-stability + AllocCheck) is left untouched — those are @test_opt/@check_allocs analyses, not run_qa's report_package/test_package JET, so they stay where they are. JET is therefore not added to the QA group.
  • Drop ExplicitImports from root [extras]/[targets]/[compat] (now transitive via SciMLTesting in the QA sub-env); bump root SciMLTesting compat to "1.6".

ExplicitImports findings (6 checks)

  • no_implicit_imports, no_stale_explicit_imports, all_explicit_imports_via_owners, all_explicit_imports_are_public: pass as-is.
  • all_qualified_accesses_via_owners: fixed — the 9 SciMLBase-owned names (AbstractODEAlgorithm, AbstractODEProblem, AbstractParameterizedFunction, StandardODEProblem, AbstractDynamicalODEProblem, __solve, has_jac, has_tgrad, build_solution) were being accessed via the DiffEqBase re-export; now accessed from their owner SciMLBase. These are identical objects (DiffEqBase.X === SciMLBase.X), present since early SciMLBase 2.x (verified down to the 2.5.0 downgrade floor), so the change is behavior-preserving.
  • all_qualified_accesses_are_public: ignored (documented per name) — the remaining names are non-public in their owner: SciMLBase API-extension points / problem types (10 names incl. unwrapped_f), ReturnCode.Success (enum member, flagged only on Julia 1.10), and the non-public DiffEqBase.RecursiveArrayTools module path to ArrayPartition. They go public as the base libraries release.

Aqua

All sub-checks green after fixing the one finding: deps_compat extras failed because root [extras] listed ODEProblemLibrary and Test with no [compat] entries — fixed by adding those compat bounds (no sub-check disabled, no @test_broken).

Local verification (released SciMLTesting 1.6.0)

  • GROUP=QA green on Julia 1.10 (lts): 17/17 and Julia 1.11: 17/17, 0 Fail/Error/Broken (Aqua 11 + ExplicitImports 6).
  • Full CI path (Pkg.test() with GROUP=QA): QA | 17 17, exit 0.
  • Core tests 32/32 on Julia 1.11 with the SciMLBase.X source change; downgrade floor SciMLBase 2.5.0 precompiles cleanly.

🤖 Generated with Claude Code

ChrisRackauckas and others added 3 commits June 25, 2026 07:22
Bring QA onto the SciMLTesting 1.6 run_qa folder model with ExplicitImports
enabled, replacing the hand-rolled inline ExplicitImports test.

- Add a `test/qa` group (qa.jl + Project.toml) wired through the run_tests
  `qa` entry; declare `[QA]` in test_groups.toml (lts, 1; out of All).
- `run_qa(GeometricIntegratorsDiffEq; explicit_imports = true, ...)` runs Aqua
  (all sub-checks) + the 6 ExplicitImports checks. JET/AllocCheck stay in the
  existing NoPre group (those are @test_opt type-stability / allocation checks,
  not run_qa's report/test_package JET).
- Fix the EI all_qualified_accesses_via_owners finding properly: access the
  9 SciMLBase-owned names (AbstractODEAlgorithm, AbstractODEProblem, __solve,
  build_solution, has_jac, has_tgrad, unwrapped_f, StandardODEProblem,
  AbstractParameterizedFunction, AbstractDynamicalODEProblem) from their owner
  SciMLBase instead of via the DiffEqBase re-export. These are identical objects
  (DiffEqBase.X === SciMLBase.X), present since SciMLBase 2.x (verified down to
  the 2.5.0 downgrade floor), so the change is behavior-preserving.
- ei_kwargs ignore-list for all_qualified_accesses_are_public: the remaining
  names are non-public in their owner (SciMLBase API-extension points /
  problem types, ReturnCode.Success enum member flagged only on Julia 1.10) or
  the non-public DiffEqBase.RecursiveArrayTools module path to ArrayPartition.
  Source package noted per name; they go public as the base libraries release.
- Fix the Aqua deps_compat extras finding by adding root [compat] for
  ODEProblemLibrary and Test (test-only extras that lacked compat entries).
- Drop ExplicitImports from root [extras]/[targets]/[compat] (now transitive
  via SciMLTesting in the QA sub-env); bump root SciMLTesting compat to "1.6".

Verified locally against released SciMLTesting 1.6.0 (Pkg resolves it; no
dev-from-branch): GROUP=QA green on Julia 1.10 (17/17) and 1.11 (17/17),
0 Fail/Error/Broken; Core tests 32/32 on 1.11 with the source change.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7 runs check_all_qualified_accesses_are_public only on
Julia >= 1.11, and SciMLBase 3.24.0 made AbstractODEProblem,
AbstractODEAlgorithm, AbstractDynamicalODEProblem, build_solution and
has_jac public. Drop those plus :Success (ReturnCode.Success is public on
1.11+; the lts-only flag no longer fires since 1.7 skips the check there).

Verified against registered releases (SciMLBase 3.24.0, DiffEqBase 7.5.7,
SciMLTesting 1.7.0): QA group is 17/17 green on Julia 1.12 with the
remaining six still-non-public ignores, and 15/15 green on Julia 1.10.

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

SciMLTesting 1.7 gates the two public-API ExplicitImports checks
(all_qualified_accesses_are_public, all_explicit_imports_are_public) to
Julia >= 1.11, so they now RUN on 1.12 and SKIP on the 1.10 LTS.

Verified the full GROUP=QA CI path (Pkg.test) against the registered
releases SciMLBase 3.27.0 / DiffEqBase 7.6.0 / SciMLTesting 1.7.0 /
ExplicitImports 1.15.0 / Aqua 0.8.16:
  * Julia 1.12: QA 17/17 (public-API checks run), 0 Fail/Error/Broken.
  * Julia 1.10: QA 15/15 (public-API checks skipped), 0 Fail/Error/Broken.

The six all_qualified_accesses_are_public ignores are kept because each
name is still genuinely non-public in its owner's released version
(Base.ispublic == false on 3.27.0/7.6.0): AbstractParameterizedFunction,
StandardODEProblem, __solve, has_tgrad, unwrapped_f (SciMLBase), and the
DiffEqBase.RecursiveArrayTools module path to ArrayPartition. The
source's owner-qualified accesses (now-public SciMLBase names) already
pass all_qualified_accesses_via_owners on both versions; no migration was
outstanding.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude marked this pull request as ready for review June 27, 2026 20:59
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…non-public re-exports)

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.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