Add QA (Aqua/JET) groups to sublibraries (SciML/.github#77)#17
Merged
Conversation
…OUQBase Each sublibrary gets a test/qa sub-environment (Aqua + JET + Test with the package wired via [sources]), a qa.jl driver running Aqua.test_all and JET.test_package(target_defined_modules = true), a QA dispatch in test/runtests.jl gated on OPTIMALUNCERTAINTYQUANTIFICATION_TEST_GROUP, and a [QA] cell (versions lts/1) in test/test_groups.toml. Pkg is added to each sublibrary's test extras/targets with a [compat] entry so Aqua deps_compat stays green. Part of SciML/.github#77. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds test/qa (Aqua + JET + Test, all local packages wired via [sources]), a qa.jl driver, a QA dispatch in test/runtests.jl gated on GROUP, and a [QA] cell (versions lts/1) in test/test_groups.toml. Pkg/Test gain [compat] entries so Aqua deps_compat stays green. Part of SciML/.github#77. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
c5331f0 to
52927e8
Compare
ChrisRackauckas-Claude
pushed a commit
to ChrisRackauckas-Claude/OptimalUncertaintyQuantification.jl
that referenced
this pull request
Jul 5, 2026
The `sublibraries / [QA]` checks (added in SciML#17) fail on `main` with real Aqua/JET findings. SciML#34 landed the run_qa v1.6 conversion and marked the piracy/import findings as broken (aqua_broken/ei_broken); this PR instead fixes the remaining findings at the source and drops the now-obsolete `aqua_broken = (:piracies,)` marker (SciML/SciML#33), so OUQBase QA is a clean pass rather than an Unexpected-Pass. OUQBase - Aqua piracy: rename the pirate `CanonicalMoments.RawMomentSequence(::Num, ::Vector{...})` method (a constructor on a foreign type with foreign arg types) to an internal `build_raw_moment_sequence`; it was only ever called inside OUQBase, so behavior is unchanged. Remove the stale `aqua_broken = (:piracies,)` from `test/qa/qa.jl` now that the check passes. - JET `OUQBase.simplify is not defined`: qualify the bare `simplify` call as `Symbolics.simplify` (the bare binding is ambiguous between the ModelingToolkit and Symbolics `using` imports). - JET `local variable objective is not defined`: assign `objective = ouq_sys.objective` before the `@debug` that interpolates it. - JET `getindex(::Nothing, ::Any)`: make `raw_moments_map`/`p_free_map` dispatch on the concretely typed `reduction_data` instead of a runtime `isa` ternary, and read the maps off the concrete `StengerCanonicalMoments` arg inside `discrete_measure_map`, so the accessors stay type stable. - JET `convert(...)` union split in the `OUQSystem` constructor: route the `process_objective` result through a `_OUQSystem` function barrier so the struct's objective field is built with a concrete type parameter. (The unused `PolynomialRoots` dep was also dropped here originally; SciML#34 has since removed it on `main`, so that hunk is no longer part of this PR.) CanonicalMoments - JET `no matching method found kwcall(...)`: `DEFAULT_ROOT_SOLVER` forwarded `args...; kwargs...` to the closed-form solvers (`quadratic_eq_sridhare`, `simple_real_cubic_eq`, `simple_real_quartic_eq`), which take only the coefficient vector. Only the generic `Polynomials.roots` fallback consumes those options, so pass them only there. Verified locally on Julia 1.12 (the `julia 1` QA matrix entry) against released SciMLTesting 1.8.0 via the canonical `GROUP=QA Pkg.test()` flow: - OUQBase QA: 18/18 pass, 0 fail/error/broken (was 16 pass + 2 broken on main). - CanonicalMoments QA: 18/18 pass, 0 fail/error/broken. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ChrisRackauckas
added a commit
that referenced
this pull request
Jul 5, 2026
…#27) The `sublibraries / [QA]` checks (added in #17) fail on `main` with real Aqua/JET findings. #34 landed the run_qa v1.6 conversion and marked the piracy/import findings as broken (aqua_broken/ei_broken); this PR instead fixes the remaining findings at the source and drops the now-obsolete `aqua_broken = (:piracies,)` marker (SciML/#33), so OUQBase QA is a clean pass rather than an Unexpected-Pass. OUQBase - Aqua piracy: rename the pirate `CanonicalMoments.RawMomentSequence(::Num, ::Vector{...})` method (a constructor on a foreign type with foreign arg types) to an internal `build_raw_moment_sequence`; it was only ever called inside OUQBase, so behavior is unchanged. Remove the stale `aqua_broken = (:piracies,)` from `test/qa/qa.jl` now that the check passes. - JET `OUQBase.simplify is not defined`: qualify the bare `simplify` call as `Symbolics.simplify` (the bare binding is ambiguous between the ModelingToolkit and Symbolics `using` imports). - JET `local variable objective is not defined`: assign `objective = ouq_sys.objective` before the `@debug` that interpolates it. - JET `getindex(::Nothing, ::Any)`: make `raw_moments_map`/`p_free_map` dispatch on the concretely typed `reduction_data` instead of a runtime `isa` ternary, and read the maps off the concrete `StengerCanonicalMoments` arg inside `discrete_measure_map`, so the accessors stay type stable. - JET `convert(...)` union split in the `OUQSystem` constructor: route the `process_objective` result through a `_OUQSystem` function barrier so the struct's objective field is built with a concrete type parameter. (The unused `PolynomialRoots` dep was also dropped here originally; #34 has since removed it on `main`, so that hunk is no longer part of this PR.) CanonicalMoments - JET `no matching method found kwcall(...)`: `DEFAULT_ROOT_SOLVER` forwarded `args...; kwargs...` to the closed-form solvers (`quadratic_eq_sridhare`, `simple_real_cubic_eq`, `simple_real_quartic_eq`), which take only the coefficient vector. Only the generic `Polynomials.roots` fallback consumes those options, so pass them only there. Verified locally on Julia 1.12 (the `julia 1` QA matrix entry) against released SciMLTesting 1.8.0 via the canonical `GROUP=QA Pkg.test()` flow: - OUQBase QA: 18/18 pass, 0 fail/error/broken (was 16 pass + 2 broken on main). - CanonicalMoments QA: 18/18 pass, 0 fail/error/broken. Co-authored-by: ChrisRackauckas-Claude <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.
Part of SciML/.github#77 (canonical QA groups across monorepo sublibraries).
Adds a canonical QA test group (Aqua + JET, standard only) to every unit of this repo:
OptimalUncertaintyQuantification):test/qa/{Project.toml,qa.jl}, QA dispatch intest/runtests.jlgated onGROUP,[QA]cell intest/test_groups.tomltest/qaenv, QA dispatch gated onOPTIMALUNCERTAINTYQUANTIFICATION_TEST_GROUP,[QA]cellDetails:
test/qa/Project.tomlcarries Aqua + JET + Test plus the package (and its local-path deps) via[sources], with full[compat](Aqua = "0.8",JET = "0.9, 0.10, 0.11",julia = "1.10").qa.jlrunsAqua.test_all(<Pkg>)andJET.test_package(<Pkg>; target_defined_modules = true).Pkg.develops the local path dependencies (mirroring the existing root runtests pattern), since[sources]is not honored there.[QA]groups declareversions = ["lts", "1"](nopre), ubuntu-only.Pkgadded to each unit's test extras/targets with a[compat]entry so Aquadeps_compatstays green.Verification: static only (TOML parse,
Meta.parseallof all touched.jlfiles,[sources]path resolution, Runic clean). QA findings, if any, will be triaged from CI per the established mark-broken+issue policy.Further batches may be pushed to this branch. Ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code