Skip to content

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

Merged
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:qa/run_qa-v1.6-explicit-imports
Jul 3, 2026
Merged

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

Converts every QA environment in this monorepo (the root LinearSolve plus both
sublibraries) to the SciMLTesting v1.6 run_qa form with the full
ExplicitImports.jl check set enabled (explicit_imports = true). The [sources] /
Pkg.develop-backport monorepo wiring is preserved exactly; only qa.jl and the
[deps]/[compat] for SciMLTesting/Aqua/EI/JET were touched.

Sublibraries converted: 2 (LinearSolvePyAMG, LinearSolveAutotune) + the root.

Per-environment summary (verified locally, released SciMLTesting 1.6.0, Julia 1.10)

Root test/qa/qa.jl — 15 pass / 2 broken / 0 fail

  • aqua_broken = (:ambiguities,) (preserves the old test_ambiguities(broken=true)).
  • Preserved aqua tweaks: deps_compat/stale_deps ignore=[:MKL_jll], piracies treat_as_own=[LinearProblem].
  • EI: unanalyzable submodules + SciMLLogging-macro / @set! stale ignores kept;
    all_explicit_imports_via_owners and all_explicit_imports_are_public get curated
    ignore-lists; all_qualified_accesses_are_public -> ei_broken (~90 non-public
    qualified accesses, mostly LinearSolve internals reached via LinearSolve.x from
    extensions). The dedicated hand-written test/qa/jet.jl @test_opt suite is left
    untouched (JET dep kept; root QA never runs on pre).
  • Dropped ExplicitImports from root deps (now transitive via SciMLTesting);
    SciMLTesting compat "1" -> "1.6".

lib/LinearSolvePyAMG/test/qa/qa.jl — 17 pass / 1 broken / 0 fail

  • Aqua.test_all + JET.test_package(...; target_defined_modules=true) -> run_qa.
  • EI ignore-lists for the two public-API checks (SciMLBase/LinearSolve internals,
    LinearCache); no_implicit_imports -> ei_broken (whole-package using).

lib/LinearSolveAutotune/test/qa/qa.jl — 16 pass / 1 broken / 1 fail (pre-existing)

  • Same conversion shape; EI = 5 pass + 1 broken (no_implicit_imports) + 0 fail.
  • The single hard fail is in JET, not the QA form: JET.test_package(...; target_defined_modules=true) surfaces real undefined-global / method reports in
    src/telemetry.jl and src/gpu_detection.jl (existing_files, split(::Nothing,…),
    GitHub.user, Base.libdl_name, …). This failure is pre-existing: the original
    qa.jl (Aqua.test_all + JET.test_package(...; target_defined_modules=true))
    fails identically on the unmodified base. The conversion does not mask it with
    jet_broken (that would hide a real source bug); it is left as a hard fail so it
    stays visible and gets fixed in a follow-up.

Tracking

🤖 Generated with Claude Code

Convert all three QA environments (root LinearSolve, lib/LinearSolvePyAMG,
lib/LinearSolveAutotune) to the SciMLTesting v1.6 run_qa form with the full
ExplicitImports.jl check set enabled (explicit_imports = true).

Root (test/qa/qa.jl):
- Aqua placeholder test_ambiguities(broken=true) -> aqua_broken=(:ambiguities,);
  preserve deps_compat/stale_deps ignore=[:MKL_jll] and piracies treat_as_own.
- EI: keep the unanalyzable submodules + SciMLLogging-macro / @set! stale ignores;
  add ignore-lists for the via-owners and explicit-imports-public checks; mark
  all_qualified_accesses_are_public ei_broken (~90 non-public qualified accesses).
- jet.jl (dedicated hand-written @test_opt suite) is left untouched; JET dep kept.

Sublibraries (PyAMG, Autotune):
- Aqua.test_all + JET.test_package -> run_qa(...; explicit_imports=true,
  jet_kwargs=(; target_defined_modules=true)); curated public-API ignore-lists;
  no_implicit_imports ei_broken (heavy whole-package `using`).

Project.toml per env: SciMLTesting compat -> "1.6"; drop ExplicitImports from the
root deps (now transitive via SciMLTesting); keep Aqua + JET; [sources]/develop
wiring preserved exactly.

Tracking issue for the ei_broken markers: SciML#1058.

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

The lib/LinearSolveAutotune QA(julia 1) lane was red on JET. The failure is
pre-existing, not introduced by the run_qa conversion: the prior qa.jl already
ran JET.test_package(LinearSolveAutotune; target_defined_modules=true), and
SciML#1033 (which first added this QA group) merged with the same lane red.

JET.report_package surfaces 8 latent issues in untouched telemetry/GPU-detection
source (parse/split union splits + try/catch variable-scope leaks in
telemetry.jl and gpu_detection.jl). Verified locally on Julia 1.12.6 that the
identical 8 reports come from the old JET.test_package call.

Mark jet_broken=true so the check runs as @test_broken (auto-flags an Unexpected
Pass once the source bugs are fixed). The real source fixes are tracked in SciML#1058.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude marked this pull request as ready for review July 3, 2026 00:36
@ChrisRackauckas ChrisRackauckas merged commit 48c1a7e into SciML:main Jul 3, 2026
59 of 63 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