Skip to content

Fix Aqua QA failures: unbound type parameters in validate_cache and missing Pkg compat#70

Merged
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:fix-qa-aqua-failures
Jun 10, 2026
Merged

Fix Aqua QA failures: unbound type parameters in validate_cache and missing Pkg compat#70
ChrisRackauckas merged 2 commits into
SciML:mainfrom
ChrisRackauckas-Claude:fix-qa-aqua-failures

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Important

This PR should be ignored until reviewed by @ChrisRackauckas.

Fixes the failing QA test group on main (scheduled run 27210697854, QA julia lts/1 on ubuntu + macos).

Failures

Reproduced locally on Julia 1.10.11 (lts) with Aqua v0.8.16 via GROUP=QA (test/qa):

  1. Unbound type parameters (Aqua.test_unbound_args):

    [1] validate_cache(::gType, ::Tuple{Vararg{ID, N_in}}, ::AbstractArray) where {gType, N_in, ID} @ src/interpolation_utils.jl:69
    [2] validate_cache(::DataInterpolationsND.EmptyCache, ::Tuple{Vararg{ID, N_in}}, ::AbstractArray) where {N_in, ID} @ src/interpolation_utils.jl:54
    

    In ::NTuple{N_in, ID} where {N_in, ID} the parameter ID is unbound when N_in == 0 (an empty tuple matches without binding ID).

  2. deps_compat extras (Aqua.test_deps_compat): Pkg is in [extras] (used by test/runtests.jl to activate the qa/gpu subenvironments) but has no [compat] entry.

Root cause / why this "started" failing now

These failures are latent, not new. I verified that Aqua v0.8.14 (Aug 2025) flags the exact same unbound methods, and the missing Pkg compat dates to April 2025. They never surfaced because the QA matrix jobs previously ran with an empty GROUP env var and therefore silently executed the Core group instead of the QA group — e.g. the "green" scheduled run 26825993512 (2026-06-02) shows GROUP: (empty) in its QA job logs and no Aqua test summary at all.

The canonical grouped-tests workflow adopted in #68 sets GROUP=QA correctly on Linux/macOS, which exposed the failures on the next scheduled run.

Why Windows still "passes": it doesn't actually run QA. In SciML/.github tests.yml the step run: echo "${{ inputs.group-env-name }}=${{ inputs.group }}" >> "$GITHUB_ENV" has no shell: bash, so on Windows it runs under pwsh where "$GITHUB_ENV" (bash syntax) doesn't expand — GROUP is never set and the Windows "QA" jobs run the Core tests (their logs show Interpolations/Derivatives/DataInterpolations/Interface summaries, no Aqua). That workflow bug is reported separately in SciML/.github; it is not addressed here.

Changes

  • src/interpolation_utils.jl: drop the unbound-parameter signatures. validate_cache(::EmptyCache, ::Tuple, ::AbstractArray) = nothing, and the fallback takes (cache, interp_dims::Tuple, ::AbstractArray) and builds the same error message via eltype(interp_dims) / typeof(cache). No dispatch behavior change (the NURBSWeights method remains more specific; Aqua's ambiguity check passes).
  • Project.toml: add Pkg = "1" to [compat].

The Symbolics extension is untouched (under separate investigation).

Local verification (Julia 1.10.11 lts, linux)

QA group, Aqua v0.8.16 (also verified green with v0.8.14 pinned):

Test Summary: | Pass  Total   Time
Aqua          |   11     11  19.2s
Test Summary:   | Pass  Total  Time
ExplicitImports |    2      2  1.4s
Test Summary: | Pass  Total  Time
JET           |   12     12  5.6s

Core group (GROUP=Core Pkg.test()):

Interpolations |  206    206
Derivatives    |  369    369
DataInterpolations |  28   28
Interface      |   21     21
     Testing DataInterpolationsND tests passed

Runic check on the changed file passes (exit 0).

🤖 Generated with Claude Code

The QA test group fails with Aqua (both 0.8.14 and 0.8.16):

1. Unbound type parameters in the two `validate_cache` methods at
   src/interpolation_utils.jl:54 and :69: in
   `::NTuple{N_in, ID} where {N_in, ID}` the parameter `ID` is unbound
   when `N_in == 0` (empty tuple). Replace with plain `::Tuple` and
   recover the types in the fallback's error message via
   `eltype(interp_dims)`/`typeof(cache)`, which print the same
   information without method-level type parameters.

2. `Pkg` is listed in [extras] (used by test/runtests.jl to activate
   the qa/gpu subenvironments) but had no [compat] entry, failing
   Aqua's deps_compat extras check. Add `Pkg = "1"`.

These failures are latent, not new: they were masked because the
previous CI setup ran the QA matrix jobs with an empty GROUP env var,
so the "QA" jobs silently ran the Core group. The canonical
grouped-tests workflow (SciML#68) now sets GROUP=QA correctly on
Linux/macOS, exposing them. (On Windows the GROUP step still does not
take effect because `echo ... >> "$GITHUB_ENV"` runs under pwsh in
SciML/.github tests.yml, which is why Windows QA jobs "pass".)

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 10, 2026 09:57
@ChrisRackauckas ChrisRackauckas merged commit 7e7a310 into SciML:main Jun 10, 2026
7 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