Fix QA: drop stale Test dep and resolve re-exported integrator accessors#152
Draft
ChrisRackauckas-Claude wants to merge 2 commits into
Draft
Conversation
The QA (Aqua) CI group fails on two findings: - test_stale_deps: `Test` is declared in `[deps]` but never `using`'d in `src/`; it belongs only in `[extras]`/`[targets]` (where it already is). Removed it from `[deps]` (its `[compat]` entry stays, valid for the extra). - test_undefined_exports: `du_cache`, `u_cache`, `user_cache` are exported by many of the `using`'d packages (DiffEqBase, SciMLBase, the StochasticDiffEq and NonlinearSolve stacks), so their bindings are ambiguous/unresolved in this module. On Julia 1.12+ an unresolved `using`-imported name reports `isdefined == false`, so Aqua flags them even though the functions exist. Importing them from the canonical source (DiffEqBase) resolves the bindings; they remain part of the public surface re-exported via `@reexport DiffEqBase`. Verified locally: full Aqua qa.jl testset passes (11/11) on Julia 1.12.6 and the key checks pass on Julia 1.10. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…n_tests
The GPU.yml workflow runs the suite with GROUP="GPU", but the folder-discovery
run_tests() only accepts All/Core/QA plus groups declared in test_groups.toml
(Core, QA), so it errored: GROUP="GPU" is not a declared group. GPU is a
capability lane, not a folder of files — it runs the *same* Core files on a
CUDA-equipped runner so the CUDA.functional()-gated testsets in reflect.jl /
MCSample.jl self-activate. This cannot be expressed as a separate folder.
Switch to explicit-args run_tests (the DeepEquilibriumNetworks.jl convention):
core = the 9 Core files in their original runtests order; groups = {"GPU" =>
core_body}; qa = test/qa; all = ["Core"]. GROUP=GPU now routes to the Core
body, matching the pre-v1.2 dispatcher where GPU fell into the non-QA branch.
Verified locally on Julia 1.10 against SciMLTesting v1.2: GROUP=GPU -> Core,
GROUP=Core -> Core, GROUP=All -> Core, GROUP=QA -> QA. Runic-clean.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Fixes the failing QA CI group (Aqua) and the GPU CI harness error on
main.1.
test_stale_deps— staleTestdependencyTestis declared in the package's[deps]but is neverusing'd anywhere insrc/. It only belongs in[extras]/[targets](where it is already correctly listed for the test target). Removed it from[deps]. Its[compat]entry is kept, sinceTestis still an extra and Aqua'stest_deps_compatrequires compat for extras.2.
test_undefined_exports—du_cache,u_cache,user_cacheThese three SciMLBase integrator-interface accessors are exported by many of the packages HighDimPDE
using's (DiffEqBase, SciMLBase, the StochasticDiffEq and NonlinearSolve stacks). Because severalusing'd modules export the same names and the module never disambiguates, the bindings are left ambiguous/unresolved insideHighDimPDE. On Julia 1.12+, an unresolvedusing-imported name reportsisdefined(m, name) == false, soAqua.test_undefined_exportsflags them even though the functions genuinely exist. Importing them explicitly from the canonical source (using DiffEqBase: du_cache, u_cache, user_cache) resolves the bindings to a real definition. They remain part of the public surface re-exported via@reexport using DiffEqBase.3.
GROUP="GPU"CI harness errorThe standalone
GPU.ymlworkflow runs the suite withGROUP="GPU", but the v1.2 folder-discoveryrun_tests()only acceptsAll/Core/QAplus groups declared intest/test_groups.toml(Core,QA) — so it raisedArgumentError: GROUP="GPU" is not a declared group. GPU is a capability lane, not a folder of files: it runs the same Core test files on a CUDA-equipped runner so theCUDA.functional()-gated testsets inreflect.jl/MCSample.jlself-activate. That cannot be a separate folder, so this switchestest/runtests.jlto explicit-argsrun_tests(the DeepEquilibriumNetworks.jl convention):core= the 9 Core files in their original order;groups = {"GPU" => core_body};qa = test/qa;all = ["Core"].GROUP="GPU"now routes to the Core body, exactly matching the pre-v1.2 dispatcher whereGPUfell into the non-QA branch.test_groups.tomlis unchanged.No tests were skipped, disabled, or weakened.
Status of every check this PR controls (verified)
On this PR branch CI is green for everything HighDimPDE actually controls:
Testing HighDimPDE tests passed). The job's only remaining red is in the post-testcodecov/codecov-actionstep, which crashes witherror: could not lock config file /home/<user>/.gitconfig: File exists(exit 255) — a self-hosted-runner infrastructure issue (stale lock on the shared runner$HOME), independent of HighDimPDE source and not silenced byfail_ci_if_error: falsebecause the action errors before the upload. This needs runner-side fixing, not a HighDimPDE change.Pre-existing, out of scope: Core on Julia 1.12 / 1.13 is a Julia compiler codegen segfault
The Core group on Julia 1.12 (
julia 1) and 1.13.0-rc1 (julia pre), all OSes, fails withsignal 11(segfault) — not a HighDimPDE logic bug and not introduced here. It is a Julia 1.12+ LLVM codegen crash while JIT-compiling the Zygote/Tracker adjoint of the DeepBSDE SDE solve.Reproduced locally on Julia 1.12.6 with CI-identical resolved deps (Flux 0.16.10, Zygote 0.7.11, Tracker 0.2.38, StochasticDiffEq 7.0.0, SciMLSensitivity 7.112.0, SciMLBase 3.21.0, RecursiveArrayTools 4.3.1). The crash signature is identical to CI:
The exact same code path and deps pass on Julia 1.10 (lts) — the only differentiator is the Julia version, which is set by the central
grouped-tests.ymlmatrix, not by HighDimPDE. There is no dependency to cap (lts is green with identical versions), and lowering thejuliacompat floor would not be honest (the package works on 1.12 apart from this compiler crash). Tracking this as an upstream Julia codegen bug; out of scope for this QA/CI-harness fix.Please ignore until reviewed by @ChrisRackauckas.