Fix minimum extension dependency compatibility - #508
Conversation
Raise the ChainRules lower bound to the first release that defines OneElement and constrain ComponentArrays to versions providing the positional ComponentVector constructor used by the test suite. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: OpenAI Codex <noreply@openai.com> Agent-Harness: Codex CLI 0.151.0 Agent-Model: gpt-5.6-sol Agent-Session: local session ID 01a0598f-11b9-72d1-91d9-b2fbb186557d
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #508 +/- ##
=======================================
Coverage 61.35% 61.35%
=======================================
Files 16 16
Lines 634 634
=======================================
Hits 389 389
Misses 245 245 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Terminal CI auditCI reached a terminal state with 19 successful, 2 failed, 0 pending, 0 cancelled, and 0 skipped checks. The checks specific to this compat fix are green:
The two downstream failures are not caused by this lower-bound-only Project.toml change:
The branch is current with |
Ignore this PR until it has been reviewed by @ChrisRackauckas.
What changed and why
ArrayInterface's ChainRules extension imports
OneElement, but the declaredChainRules = "1"bound allowed ChainRules 1.35.0, before that type existed. The Core tests also construct a positionalComponentVector(::NamedTuple)without declaring any ComponentArrays compat, so the downgrade resolver selected ComponentArrays 0.1.0, before that name existed.Set the ChainRules API floor to 1.51, the first release defining
OneElement, and allow ComponentArrays 0.x releases starting at 0.4.1, the first release supporting the exact constructor used by the test. No dependency was added or default changed, so this has no dependency-license impact.Failing before
On clean
master(97b9fe8), I ran the same downgrade implementation and locked Core test as CI:This reproduces the failures from the prior merged PR and the current PR507 downgrade jobs.
Passing after
The same locked downgrade commands resolve ComponentArrays 0.4.1 and the jointly compatible ChainRules 1.72.0, then pass:
I separately probed the version boundaries on Julia 1.10.12:
I also loaded the current ArrayInterface source from an environment pinned to the exact
ChainRules floor and asserted that the extension loads and both
can_setindexmethodsdispatch correctly:
ChainRules 1.51 cannot coexist with ArrayInterface's hard
Adapt = "4"constraint; ChainRules first supports Adapt 4 in 1.60. The minimum installable graph was therefore exercised directly by checking the ChainRules extension dispatches, constructing the ComponentArrays 0.4.1 positionalComponentVector, and running the exact Corehas_trivial_array_constructor(typeof(cv), rand(6))path:MINIMUM_GRAPH_PASS ArrayInterface=7.30.1 ChainRules=1.60.0 ComponentArrays=0.4.1 GPUArraysCore=0.1.6 Adapt=4.7.0Current-dependency Core tests also pass on both supported runtimes:
Additional checks:
No formatter applies to this Project.toml-only diff.
QA and unverified paths
This repository declares no
GROUP=QAand has no QA workflow. An optional manualAqua.test_all(ArrayInterface)run is not green on the unchanged baseline conditions: Aqua reports Adapt as stale because it is used only by GPU extension files, and reports eight longstanding test extras without compat (Aqua,JuliaFormatter,Pkg,Random,SafeTestsets,StaticArrays,SuiteSparse, andTest). ComponentArrays is no longer in that missing-compat list. Those unrelated repository-wide QA issues are deliberately not mixed into this focused fix.I did not run GPU hardware tests or local macOS/Windows tests.
🤖 Generated with Codex CLI 0.151.0 (model: gpt-5.6-sol).
Session: local session ID 01a0598f-11b9-72d1-91d9-b2fbb186557d