Raise Mooncake compat floor to 0.5.36 (fix Downgrade resolution)#388
Closed
ChrisRackauckas-Claude wants to merge 102 commits into
Closed
Raise Mooncake compat floor to 0.5.36 (fix Downgrade resolution)#388ChrisRackauckas-Claude wants to merge 102 commits into
ChrisRackauckas-Claude wants to merge 102 commits into
Conversation
fix: loading on 1.12
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
This PR adds JET.jl-based static analysis tests to the test suite to help
track type stability and catch potential runtime errors.
Changes:
- Add test/jet_tests.jl with tests for core operations:
- Type stability tests using @report_opt for getindex, similar, copy,
getdata, getaxes, broadcast, vcat, hcat
- Error analysis tests using @report_call for basic operations
- Add JET dependency to test/Project.toml
- Include jet_tests.jl in test/runtests.jl
JET analysis findings:
- The package is already well-typed for core operations
- Some intentional type instabilities exist in construction paths (e.g.,
ViewAxis can return different types by design for flexibility)
- All critical post-construction operations are type-stable
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ions/cache-5 Bump actions/cache from 4 to 5
…vements-20251229-040208 Add JET.jl static analysis tests
…ions/checkout-6 Bump actions/checkout from 4 to 6
- Update CI workflow to use fredrikekre/runic-action@v1 - Remove .JuliaFormatter.toml configuration - Format all source files with Runic.jl 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ng example - Fixed typo in indexing_behavior.md: "origianl" -> "original" - Removed broken @contents reference to non-existent "examples/example1.md" in index.md - Added missing coulomb_control.md example to make.jl pages list All examples in docs/src/examples/ are now properly listed in the documentation build. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ments-20260107-145540 Documentation improvements: fix typo, broken reference, and add missing example
- Create test/nopre directory with its own Project.toml for JET tests - Update CI workflow to use GROUP matrix with All and nopre groups - Exclude nopre group from pre Julia version to avoid JET compatibility issues - Remove JET from main test dependencies - Update runtests.jl to use GROUP environment variable This follows the OrdinaryDiffEq pattern for organizing tests with separate environments for tests that need specific dependencies. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…nopre Split tests: move JET tests to nopre group excluded on pre Julia
…ting Switch from JuliaFormatter to Runic.jl for code formatting
…ependabot Add Julia ecosystem to Dependabot configuration
On Julia 1.13.0-alpha2, the `[a b; c d]` block matrix syntax for ComponentArrays does not dispatch to ComponentArrays.hvcat method but instead falls back to LinearAlgebra's method. This causes the axes to be lost and the result to be a plain Matrix. This marks the affected tests as @test_broken on Julia 1.13+ until the dispatch issue can be investigated further. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Apply Runic formatting to test/runtests.jl - Skip Reactant tests on Julia 1.13+ since Reactant doesn't support it yet See: EnzymeAD/Reactant.jl#1736 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…3-hvcat-tests Mark hvcat block matrix tests as broken on Julia 1.13+
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
…ions/checkout-6 Bump actions/checkout from 4 to 6
Updates the requirements on [StaticArrays](https://github.com/JuliaArrays/StaticArrays.jl), [ArrayInterface](https://github.com/JuliaArrays/ArrayInterface.jl), [Functors](https://github.com/FluxML/Functors.jl), [Zygote](https://github.com/FluxML/Zygote.jl), [Tracker](https://github.com/FluxML/Tracker.jl), [ReverseDiff](https://github.com/JuliaDiff/ReverseDiff.jl), [Reactant](https://github.com/EnzymeAD/Reactant.jl), [Optimisers](https://github.com/FluxML/Optimisers.jl), [ForwardDiff](https://github.com/JuliaDiff/ForwardDiff.jl), [BenchmarkTools](https://github.com/JuliaCI/BenchmarkTools.jl), [FiniteDiff](https://github.com/JuliaDiff/FiniteDiff.jl), [LabelledArrays](https://github.com/SciML/LabelledArrays.jl), [OffsetArrays](https://github.com/JuliaArrays/OffsetArrays.jl), [InvertedIndices](https://github.com/JuliaData/InvertedIndices.jl), [JLArrays](https://github.com/JuliaGPU/GPUArrays.jl), [Aqua](https://github.com/JuliaTesting/Aqua.jl), [Unitful](https://github.com/JuliaPhysics/Unitful.jl) and [ArrayInterfaceCore](https://github.com/JuliaArrays/ArrayInterface.jl) to permit the latest version. Updates `StaticArrays` to 1.9.16 - [Release notes](https://github.com/JuliaArrays/StaticArrays.jl/releases) - [Commits](JuliaArrays/StaticArrays.jl@v0.0.1...v1.9.16) Updates `ArrayInterface` to 7.22.0 - [Release notes](https://github.com/JuliaArrays/ArrayInterface.jl/releases) - [Commits](JuliaArrays/ArrayInterface.jl@v0.0.1...v7.22.0) Updates `Functors` to 0.5.2 - [Release notes](https://github.com/FluxML/Functors.jl/releases) - [Commits](FluxML/Functors.jl@v0.1.0...v0.5.2) Updates `Zygote` to 0.7.10 - [Release notes](https://github.com/FluxML/Zygote.jl/releases) - [Commits](FluxML/Zygote.jl@v0.2.0...v0.7.10) Updates `Tracker` to 0.2.38 - [Release notes](https://github.com/FluxML/Tracker.jl/releases) - [Commits](FluxML/Tracker.jl@v0.1.0...v0.2.38) Updates `ReverseDiff` to 1.16.1 - [Release notes](https://github.com/JuliaDiff/ReverseDiff.jl/releases) - [Commits](JuliaDiff/ReverseDiff.jl@v0.0.1...v1.16.1) Updates `Reactant` to 0.2.197 - [Release notes](https://github.com/EnzymeAD/Reactant.jl/releases) - [Commits](EnzymeAD/Reactant.jl@v0.1.0...v0.2.197) Updates `Optimisers` to 0.4.7 - [Release notes](https://github.com/FluxML/Optimisers.jl/releases) - [Commits](FluxML/Optimisers.jl@v0.1.0...v0.4.7) Updates `StaticArrays` to 1.9.16 - [Release notes](https://github.com/JuliaArrays/StaticArrays.jl/releases) - [Commits](JuliaArrays/StaticArrays.jl@v0.0.1...v1.9.16) Updates `ForwardDiff` to 1.3.1 - [Release notes](https://github.com/JuliaDiff/ForwardDiff.jl/releases) - [Commits](JuliaDiff/ForwardDiff.jl@v0.0.2...v1.3.1) Updates `BenchmarkTools` to 1.6.3 - [Release notes](https://github.com/JuliaCI/BenchmarkTools.jl/releases) - [Commits](JuliaCI/BenchmarkTools.jl@v0.0.1...v1.6.3) Updates `FiniteDiff` to 2.29.0 - [Release notes](https://github.com/JuliaDiff/FiniteDiff.jl/releases) - [Commits](https://github.com/JuliaDiff/FiniteDiff.jl/commits) Updates `LabelledArrays` to 1.17.0 - [Release notes](https://github.com/SciML/LabelledArrays.jl/releases) - [Commits](SciML/LabelledArrays.jl@v0.0.1...v1.17.0) Updates `OffsetArrays` to 1.17.0 - [Release notes](https://github.com/JuliaArrays/OffsetArrays.jl/releases) - [Commits](JuliaArrays/OffsetArrays.jl@v0.1.0...v1.17.0) Updates `InvertedIndices` to 1.3.1 - [Release notes](https://github.com/JuliaData/InvertedIndices.jl/releases) - [Commits](https://github.com/JuliaData/InvertedIndices.jl/commits) Updates `JLArrays` to 0.3.0 - [Release notes](https://github.com/JuliaGPU/GPUArrays.jl/releases) - [Commits](JuliaGPU/GPUArrays.jl@v0.0.1...v0.3.0) Updates `Aqua` to 0.8.14 - [Release notes](https://github.com/JuliaTesting/Aqua.jl/releases) - [Changelog](https://github.com/JuliaTesting/Aqua.jl/blob/master/CHANGELOG.md) - [Commits](JuliaTesting/Aqua.jl@v0.1.0...v0.8.14) Updates `Unitful` to 1.27.0 - [Release notes](https://github.com/JuliaPhysics/Unitful.jl/releases) - [Changelog](https://github.com/JuliaPhysics/Unitful.jl/blob/master/NEWS.md) - [Commits](JuliaPhysics/Unitful.jl@v0.0.1...v1.27.0) Updates `ArrayInterfaceCore` to 0.1.29 - [Release notes](https://github.com/JuliaArrays/ArrayInterface.jl/releases) - [Commits](https://github.com/JuliaArrays/ArrayInterface.jl/commits) --- updated-dependencies: - dependency-name: StaticArrays dependency-version: 1.9.16 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: ArrayInterface dependency-version: 7.22.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Functors dependency-version: 0.5.2 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Zygote dependency-version: 0.7.10 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Tracker dependency-version: 0.2.38 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: ReverseDiff dependency-version: 1.16.1 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Reactant dependency-version: 0.2.197 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Optimisers dependency-version: 0.4.7 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: StaticArrays dependency-version: 1.9.16 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: ForwardDiff dependency-version: 1.3.1 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: BenchmarkTools dependency-version: 1.6.3 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: FiniteDiff dependency-version: 2.29.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: LabelledArrays dependency-version: 1.17.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: OffsetArrays dependency-version: 1.17.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: InvertedIndices dependency-version: 1.3.1 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: JLArrays dependency-version: 0.3.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Aqua dependency-version: 0.8.14 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Unitful dependency-version: 1.27.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: ArrayInterfaceCore dependency-version: 0.1.29 dependency-type: direct:production dependency-group: all-julia-packages ... Signed-off-by: dependabot[bot] <support@github.com>
…ia-packages-851a3039cd Bump the all-julia-packages group across 2 directories with 18 updates
Restructure the test suite from a monolithic runtests.jl into independent test groups, each with their own Project.toml and dependencies. This follows the OrdinaryDiffEq.jl pattern of GROUP-based test dispatch. Test groups: - Core: Main tests (construction, attributes, indexing, math, etc.) - Autodiff: AD tests (ForwardDiff, ReverseDiff, Zygote, Tracker, FiniteDiff) - GPU: GPU array tests (JLArrays) - Downstream: DiffEq integration tests (DifferentialEquations, Sundials) - Reactant: Reactant extension tests - nopre: QA tests (JET, Aqua) - excluded from pre-release Julia Changes: - Extract core tests from inline runtests.jl into test/core_tests.jl - Move autodiff, GPU, Reactant tests into subdirectories with own Project.toml - Revive downstream DiffEq tests (test/diffeq_test/ -> test/downstream/) - Move Aqua tests from formalities.jl to nopre group for QA isolation - Add missing imports to test files that relied on parent scope - Mark Sundials CVODE_BDF test as @test_broken (upstream incompatibility) - Fix sol[i] deprecation warnings in downstream tests (-> sol.u[i]) - Update CI matrix with all test groups and appropriate exclusions - Fix downgrade workflow to use main branch instead of master - Add ComponentArrays to test/Project.toml (fixes deprecation warning) Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove compat bounds from test/Project.toml for packages that are also in the main Project.toml (ArrayInterface, Functors, Tracker) to avoid conflicts when julia-downgrade-compat resolves to lower bounds. Relax performance test thresholds in downstream tests for CI stability - these timing benchmarks are unreliable on shared runners. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Issue 36 perf test reported (ctime2 - ltime2) / ltime2 = 10.299 on commit 8604dd8, marginally exceeding the 10.0 threshold. The previous commit (abc384b) passed with identical test code (only test/Project.toml compat bounds changed between commits). Self-hosted runner timing is noisy; this empty commit re-runs CI to confirm flake vs real regression before any threshold tweak. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…r variance Reruns on different self-hosted runners observed 10.3x, 12.4x, and 15.5x overhead for the same code — up to ~50% spread. A tight 10x threshold was catching CI noise rather than perf regressions. Bumped to 20x as a guard against pathological blow-ups; serious perf tracking should live in a dedicated benchmark suite. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…olver-imports Fix master CI: import OrdinaryDiffEq sub-packages explicitly
`Mooncake.tangent_type(ComponentVector{P,Vector{P},Axes}) ===
Mooncake.Tangent{@NamedTuple{data::Vector{P}, axes::NoTangent}}`.
That tangent is not an `AbstractArray`, so the generic
`Base.copyto!(::AbstractArray, ::Any)` fallback tries to iterate it and
throws `MethodError: no method matching iterate(::Mooncake.Tangent{…})`.
Optimization.jl + AutoMooncake + ComponentArrays hits this path because
`DifferentiationInterface.value_and_gradient!(::AutoMooncake, …)` writes
the gradient into a user-supplied `grad` buffer with an unconditional
`copyto!(grad, new_grad)`. The plain-`Vector` case works only because
Mooncake's tangent_type for `Vector{Float64}` is `Vector{Float64}` itself.
Define `Base.copyto!` for the flat-Array-backed `ComponentArray` case so
the tangent's `data` field flows directly into the ComponentArray's
underlying storage. SubArray-backed CVs are unaffected (the same kind of
overload could be added there once a concrete failure surfaces).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…atrix test
A `ComponentVector` obtained from `getproperty(::ComponentVector, ::Symbol)` on a
nested parent is `<:SubArray`-backed, so Mooncake's `tangent_type` for it nests
an inner `Tangent` that mirrors the SubArray's `(parent, indices, offset1,
stride1)` fields. The flat-Array `copyto!` overload doesn't dispatch on that
shape, so `DI.value_and_gradient!` would still throw a `MethodError: iterate`.
Add a parallel overload for the SubArray-backed CV tangent shape, symmetric to
the existing `_increment_subarray_fdata!` block. As with that path, the copy is
only well-defined when the view fully covers its parent (the SubArray indices
are not recoverable from Mooncake tangent shape alone); the partial-cover case
throws a clear `ArgumentError` rather than silently producing wrong gradients.
Also add a `ComponentMatrix` copyto! regression test — `Matrix{P} <: Array{P}`
already matches the flat-Array signature, this just locks in the behavior.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…yto-componentarray ext/Mooncake: bridge `copyto!(::ComponentArray, ::Mooncake.Tangent)`
Updates the requirements on [ArrayInterface](https://github.com/JuliaArrays/ArrayInterface.jl), [Functors](https://github.com/FluxML/Functors.jl), [Tracker](https://github.com/FluxML/Tracker.jl), [StaticArrays](https://github.com/JuliaArrays/StaticArrays.jl), [ForwardDiff](https://github.com/JuliaDiff/ForwardDiff.jl), [BenchmarkTools](https://github.com/JuliaCI/BenchmarkTools.jl), [ComponentArrays](https://github.com/SciML/ComponentArrays.jl), [LabelledArrays](https://github.com/SciML/LabelledArrays.jl), [OffsetArrays](https://github.com/JuliaArrays/OffsetArrays.jl), [InvertedIndices](https://github.com/JuliaData/InvertedIndices.jl) and [Unitful](https://github.com/JuliaPhysics/Unitful.jl) to permit the latest version. Updates `ArrayInterface` to 7.25.0 - [Release notes](https://github.com/JuliaArrays/ArrayInterface.jl/releases) - [Commits](JuliaArrays/ArrayInterface.jl@v0.0.1...v7.25.0) Updates `Functors` to 0.5.2 - [Release notes](https://github.com/FluxML/Functors.jl/releases) - [Commits](FluxML/Functors.jl@v0.1.0...v0.5.2) Updates `Tracker` to 0.2.38 - [Release notes](https://github.com/FluxML/Tracker.jl/releases) - [Commits](FluxML/Tracker.jl@v0.1.0...v0.2.38) Updates `StaticArrays` to 1.9.18 - [Release notes](https://github.com/JuliaArrays/StaticArrays.jl/releases) - [Commits](JuliaArrays/StaticArrays.jl@v0.0.1...v1.9.18) Updates `ForwardDiff` to 1.3.3 - [Release notes](https://github.com/JuliaDiff/ForwardDiff.jl/releases) - [Commits](JuliaDiff/ForwardDiff.jl@v0.0.2...v1.3.3) Updates `BenchmarkTools` to 1.8.0 - [Release notes](https://github.com/JuliaCI/BenchmarkTools.jl/releases) - [Commits](JuliaCI/BenchmarkTools.jl@v0.0.1...v1.8.0) Updates `ComponentArrays` to 0.15.39 - [Release notes](https://github.com/SciML/ComponentArrays.jl/releases) - [Changelog](https://github.com/SciML/ComponentArrays.jl/blob/main/NEWS.md) - [Commits](SciML/ComponentArrays.jl@v0.1.0...v0.15.39) Updates `LabelledArrays` to 1.19.0 - [Release notes](https://github.com/SciML/LabelledArrays.jl/releases) - [Commits](SciML/LabelledArrays.jl@v0.0.1...v1.19.0) Updates `OffsetArrays` to 1.17.0 - [Release notes](https://github.com/JuliaArrays/OffsetArrays.jl/releases) - [Commits](JuliaArrays/OffsetArrays.jl@v0.1.0...v1.17.0) Updates `InvertedIndices` to 1.3.1 - [Release notes](https://github.com/JuliaData/InvertedIndices.jl/releases) - [Commits](https://github.com/JuliaData/InvertedIndices.jl/commits) Updates `Unitful` to 1.28.0 - [Release notes](https://github.com/JuliaPhysics/Unitful.jl/releases) - [Changelog](https://github.com/JuliaPhysics/Unitful.jl/blob/master/NEWS.md) - [Commits](JuliaPhysics/Unitful.jl@v0.0.1...v1.28.0) --- updated-dependencies: - dependency-name: ArrayInterface dependency-version: 7.25.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Functors dependency-version: 0.5.2 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Tracker dependency-version: 0.2.38 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: StaticArrays dependency-version: 1.9.18 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: ForwardDiff dependency-version: 1.3.3 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: BenchmarkTools dependency-version: 1.8.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: ComponentArrays dependency-version: 0.15.39 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: LabelledArrays dependency-version: 1.19.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: OffsetArrays dependency-version: 1.17.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: InvertedIndices dependency-version: 1.3.1 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Unitful dependency-version: 1.28.0 dependency-type: direct:production dependency-group: all-julia-packages ... Signed-off-by: dependabot[bot] <support@github.com>
Brings CI in line with the SciML standard (matching Sundials.jl): - Add a Spell Check workflow using crate-ci/typos, with a .typos.toml configuring the one project-specific exception (`temp_noth` test variable). - Move the `crate-ci/typos` Dependabot ignore from the `julia` ecosystem (where it had no effect — typos is a GitHub Action) to the `github-actions` ecosystem, so the pinned typos version in the new workflow is not bumped by patch/minor PRs. - Drop `enable-beta-ecosystems: true`; per the current Dependabot options reference this flag is "Not currently in use", so the Julia ecosystem no longer requires it. Resolves the cleanup requested in SciML#371. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…ndard-spellcheck-dependabot CI: add SpellCheck workflow and clean up Dependabot config (SciML#371)
…ia-packages-bb99d7dfe0 Bump the all-julia-packages group across 1 directory with 11 updates
Re-enables the downgrade workflow and sets allow_reresolve: false so the test suite runs against the minimal (downgraded) dependency versions, not a re-resolved set. Raises the [compat] lower bounds that were below what the package's own tests require, to the minimal mutually-consistent versions (all already released), so the floor set is self-consistent. Verified locally on Julia 1.11 in a clean depot: downgrade resolve + build + Pkg.test(allow_reresolve=false) all pass at the floor (0 re-resolve events). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-testatfloor Re-enable downgrade CI (genuine test-at-floor)
Convert Tests (ci.yml), Documentation (docs.yml), Format Check (Runic), Spell Check (typos), and Downgrade workflows to call the centralized reusable workflows in SciML/.github pinned at @v1. Update dependabot.yml to drop the per-dependency crate-ci/typos ignore block. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…entralized-workflows Migrate CI to centralized SciML reusable workflows
…erge, docs-preview-cleanup) (SciML#379) Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The reusable SciML/.github downgrade workflows now always use allow_reresolve: false and no longer accept an allow-reresolve input (see SciML/.github#71). Remove the now-invalid input so this caller keeps working once @v1 is retagged. Co-authored-by: Chris Rackauckas <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Convert the root CI workflow (ci.yml) to the canonical thin caller of SciML/.github grouped-tests.yml@v1, with the group x version matrix declared once in test/test_groups.toml instead of hand-maintained YAML. The previously inlined matrix (group: Core/Autodiff/GPU/Downstream/ Reactant/nopre x version: lts/1/pre, with pre excluded for nopre/ Downstream/Reactant) is reproduced exactly by test_groups.toml: 15/15 (group, version) cells match the compute_affected_sublibraries.jl --root-matrix output. runtests.jl already dispatches on the standard GROUP env var, so no with: overrides and no runtests.jl change needed. Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ciML#381) Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Restructure test/ into the v1.2 folder layout and replace the hand-written GROUP dispatch ladder with a single run_tests call: - Core: the monolithic core_tests.jl is split into self-contained per-feature files at the top level (each includes shared/test_setup.jl); core_tests.jl becomes a @safetestset manifest that includes them, run isolated per file. - Named groups Autodiff/GPU/Downstream/Reactant get their own test/<Group>/ folder (renamed to match test_groups.toml casing) carrying the existing per-group Project.toml sub-env. - The nopre group keeps its folder and gains a nopre_tests.jl manifest that @safetestset-includes jet_tests.jl and aqua_tests.jl. - shared/test_setup.jl holds the Core fixtures, included explicitly. runtests.jl uses explicit-args run_tests with a curated all = ["Core"] so the local GROUP=All default keeps running Core only (matching the old dispatch); CI dispatches each declared group by name. SciMLTesting + SafeTestsets added to the test env and every @safetestset-running sub-env Project.toml; Pkg dropped from the test env (no test file uses it). test_groups.toml unchanged. Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The nopre group carried only standard QA checks (JET, Aqua), so it is renamed to the canonical QA group at versions ["lts","1"]. The dep env test/nopre is renamed to test/qa and the runtests dispatch keys on GROUP == "QA". Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciML#385) * Fix QA test group harness wiring for SciMLTesting v1.2 The v1.2 conversion (SciML#384) placed the QA group inside the `groups` Dict passed to `run_tests`. SciMLTesting treats "QA" as a reserved group that must be supplied via the dedicated `qa` keyword argument; with `qa` unset, requesting `GROUP=QA` threw ArgumentError: run_tests: GROUP="QA" was requested but no `qa` body was provided Move the QA spec out of `groups` and into the `qa` keyword. Also add SafeTestsets and SciMLTesting (with compat) to test/qa/Project.toml. The QA body runs in the activated qa env and is wrapped in @safetestset, so that env must provide both packages, matching every other group env (test/Project.toml, test/Autodiff, test/Downstream all declare them). Verified locally on Julia 1.10 via the faithful CI path (GROUP=QA Pkg.test("ComponentArrays")): QA group 22/22 passed. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Restructure Core/QA to SciMLTesting v1.2 folder-discovery Replace the explicit-args run_tests(core=..., groups=..., qa=..., all=["Core"]) with pure folder-discovery: test/runtests.jl is now just using SciMLTesting run_tests() Behavior is preserved exactly: - Core: delete test/core_tests.jl. The 19 self-contained top-level test/*.jl files (each begins with include("shared/test_setup.jl")) are discovered as Core, each run in its own isolated @safetestset (Core/<basename>) — identical isolation to what core_tests.jl did manually. Local Core run matches the pre-change aggregate exactly: 459 Pass, 9 Broken, 468 Total, each file once (no double-run). - QA: delete test/qa/qa.jl so test/qa/{aqua_tests,jet_tests}.jl are discovered directly (qa.jl was a bare include-aggregator; both files are already self-contained with their own using Aqua/JET/ComponentArrays/Test, so no shared usings needed migrating). Each runs once: QA/aqua_tests.jl, QA/jet_tests.jl. - All = Core only: the old all=["Core"] excluded Autodiff/GPU/Downstream/ Reactant from the All lane. In discovery mode this is in_all = false on each of those four groups (QA is auto-excluded from All). Verified GROUP=All runs the 19 Core testsets only — no Autodiff/GPU/Downstream/Reactant/QA. test/shared/ is a helper folder (not in test_groups.toml, a subdir not a top-level *.jl) so discovery auto-excludes it. Existing per-group versions are unchanged. GROUP=Autodiff still dispatches its sub-env (sanity-checked). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Convert the hand-rolled test/qa Aqua + JET files to a single qa.jl on the SciMLTesting 1.6 `run_qa` form, with ExplicitImports enabled. ExplicitImports findings, resolved FIX > IGNORE: - no_stale_explicit_imports: drop stale `SMatrix` import. - no_implicit_imports: make the 11 implicit LinearAlgebra names explicit (`using LinearAlgebra: LinearAlgebra, Adjoint, ...`). - all_qualified_accesses_via_owners: `Broadcast.unalias` -> `Base.unalias` (owner is Base). - all_qualified_accesses_are_public / all_explicit_imports_are_public: ignore Base/Base.Broadcast/Base.Iterators internals plus non-public names from Adapt/ChainRulesCore/ArrayInterface/StaticArrayInterface/StaticArraysCore/ Functors/LinearAlgebra (method-extension imports). Aqua `ambiguities`/`unbound_args` stay disabled as genuine aqua_kwargs (real, long-standing vcat/hcat/getindex/Axis findings, not tracked-broken). JET runs hard (test_package clean on 1.10). test/qa/Project.toml: drop Aqua + transitive ExplicitImports, bump SciMLTesting compat to "1.6". Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
….6-explicit-imports QA: run_qa v1.6 form + ExplicitImports
Raise the Mooncake [compat] floor to the latest registered release (0.5.36) in every Project.toml that declares Mooncake, replacing the old single floors (root weakdep 0.5.25, test/Autodiff dep 0.5.26). This is the "limit to latest Mooncake" fix for the promotion-caused Downgrade Unsatisfiable wall: pinning to the latest keeps the downgrade resolver from selecting an ancient Mooncake that the Resolver cannot satisfy. Bump the package patch version (0.15.40 -> 0.15.41); a [compat] narrowing on a weakdep floor is a patch-level change. Verified on Julia 1.12 by running julia-downgrade-compat's downgrade.jl (Resolver.jl min-resolution) after the bump: - root project (alldeps, --min): resolved, no Unsatisfiable - test/Autodiff env (deps, --min, Mooncake a hard dep): resolved, Mooncake pinned to 0.5.36 in the resulting manifest Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Contributor
Author
|
Closing. Verified locally (ran the action's own downgrade.jl on the identical commit CI failed on) that raising the Mooncake compat floor does NOT fix the Downgrade lane. The failure is |
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
Raise the
Mooncake[compat]floor to the latest registered release 0.5.36 in everyProject.tomlthat declares Mooncake, collapsing the old single floors to one floor at the latest. This is the "limit to latest Mooncake" fix for the promotion-caused DowngradeUnsatisfiablewall: pinning to the latest keeps the downgrade resolver from selecting an ancient Mooncake that Resolver.jl cannot satisfy at minimum versions.Raised floors
Project.toml(weakdep)0.5.250.5.36test/Autodiff/Project.toml(dep)0.5.260.5.36Package patch version bumped
0.15.40→0.15.41(a[compat]narrowing on a weakdep floor is a patch-level change;test/Autodiff/Project.tomlhas no version field).Verification (resolves_at_min = true)
Ran
julia-actions/julia-downgrade-compat'sdowngrade.jl(Resolver.jl min-resolution) on Julia 1.12 after the bump:alldeps,--min): resolved — noUnsatisfiable.test/Autodiffenv (deps,--min, where Mooncake is a hard dep): resolved —Mooncake = 0.5.36in the resulting manifest (104 packages), noUnsatisfiable.So the floor-raise alone clears the downgrade min-resolution wall for this repo;
#52is not required here. (Note: CI's Downgrade workflow only runs theCoregroup withmode: deps, which does not even pull the Mooncake weakdep — but the Autodiff env is the one that carries Mooncake as a hard dep, and it now resolves at min.)Please ignore until reviewed by @ChrisRackauckas.