Commit 9f48529
Fix master CI: DataDrivenLux downgrade resolution + docs linkcheck (#624)
* Fix master CI: DataDrivenLux downgrade resolution and docs linkcheck
Two unrelated master CI failures.
1. downgrade-sublibraries / test (lib/DataDrivenLux): the test target listed
`OrdinaryDiffEq` as a dependency, but it is not used anywhere in
DataDrivenLux's sources or tests. Under the strict downgrade resolver it
forced the entire OrdinaryDiffEq solver split-package ecosystem
(OrdinaryDiffEqBDF, OrdinaryDiffEqNonlinearSolve, ...) to its ancient floor
(v6/7.0.x), which no longer co-resolves with the modern SciMLBase 3 /
ModelingToolkit 11 / Symbolics 7 stack that DataDrivenDiffEq pins, yielding
"Unsatisfiable requirements". Removing the unused dependency lets the
downgrade `Pkg.test` resolve and the suite pass on Julia 1.10.
2. Documentation / Build and Deploy: `linkcheck` errored on
docs.sciml.ai/ModelingToolkit/.../AbstractSystem (HTTP 403 anti-crawler) and
on dead ai.damtp.cam.ac.uk/symbolicregression/.../api/#Options and
#EquationSearch anchors (404 after the SymbolicRegression docs reorganized).
Repoint the dead API links to the maintained canonical SciML-hosted docs
(#EquationSearch -> #equation_search, the current function name) and add a
linkcheck_ignore regex for docs.sciml.ai, which rejects the linkcheck bot
with 403 even though the cross-doc links resolve in a browser.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Fix DataDrivenLux QA: real Aqua/JET findings + local-source resolution
The sublibraries QA group (Aqua + JET) for DataDrivenLux has failed since it
was added (#618). The findings are genuine source bugs:
Aqua (unbound type parameter):
- update_path(f, id, states::PathState{T}...) left T unbound when called with
zero states. Require at least one state (state1::PathState{T}, states...) so
T always binds.
JET (5 possible errors):
- custom_priors.jl summary referenced an undefined `E` ($E) in its interpolated
string; print the error-model name (nameof(typeof(d.errormodel))) instead.
- dataset.jl built the empty t-interval with Interval{T}(zero(T), zero(T)),
which is no longer a valid IntervalArithmetic constructor (errors at runtime);
use interval(zero(T), zero(T)), matching the other branch.
- The DataDrivenFunction OOP/IIP *matrix* dispatch was missing the
{true, true} (implicit + controls) methods in DataDrivenDiffEq's
build_function.jl, so a Basis{true,true}(::Dataset) call had no matching
method. Add the two missing matrix methods (additive, mirrors the existing
{true,false} pair).
- Candidate / CommonAlgOptions: the @concrete field type-constraints made the
generated inner constructors unprovable to JET when fed Any-typed values.
Drop the (non-load-bearing) Candidate field bounds, and give CommonAlgOptions
an explicit type-asserting keyword constructor in place of @kwdef so the
positional @concrete constructor receives concretely-typed arguments.
QA now resolves the in-repo DataDrivenDiffEq (not the registered release): add
DataDrivenDiffEq to the qa env [deps]/[sources], and in activate_qa_env develop
the local paths on Julia < 1.11 (where [sources] is ignored), mirroring
.github's develop_sources helper.
Verified locally: DataDrivenLux QA (Aqua + JET) passes 12/12 on both Julia 1.10
(lts) and 1.12, and the DataDrivenLux Core test suite passes on 1.12.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs: repoint remaining dead SymbolicRegression api link in DataDrivenSR docstring
PR #624 repointed the dead ai.damtp.cam.ac.uk/symbolicregression/.../api/#Options
links in the datadrivensr examples, but missed the same dead link in the
DataDrivenSR `Options` docstring (lib/DataDrivenSR/src/DataDrivenSR.jl), which is
rendered into the docs and linkchecked. That URL 404s, failing the docs build.
Repoint it to the maintained docs.sciml.ai host (already covered by the
linkcheck_ignore added in #624).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Fix DataDrivenSR QA: coef field bug + local-source resolution
Touching DataDrivenSR's source makes the affected-sublibrary detector run its
QA group, which (like DataDrivenLux's) had never passed. Two real findings:
- JET: coef(x::SRResult) read getfield(x, :k), but SRResult has no :k field
(the accessor errored on every call and is untested). Return the model
coefficients — the parameter values of the result's basis,
get_parameter_values(x.basis) — matching how the parameters are produced in
the SRResult constructor and used in solution.jl.
- Aqua deps_compat failed because, on Julia < 1.11, the qa env's [sources] is
ignored and QA analyzed the *registered* DataDrivenSR (whose Project.toml
lacks compat for the test extras); the in-repo Project already declares them.
Resolve the in-repo DataDrivenSR/DataDrivenDiffEq by adding DataDrivenDiffEq
to the qa env [deps]/[sources] and developing the local paths on Julia < 1.11
in activate_qa_env (no-op effect on >= 1.11), mirroring the DataDrivenLux fix.
Verified locally: DataDrivenSR QA (Aqua + JET) passes 12/12 on Julia 1.12.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Revert DataDrivenLux OrdinaryDiffEq removal; downgrade waits on upstream release
Restores `OrdinaryDiffEq = "6, 7"` to [compat], the OrdinaryDiffEq UUID to
[extras], and OrdinaryDiffEq to [targets].test in lib/DataDrivenLux/Project.toml
(reverts the 10af37c removal).
The DataDrivenLux downgrade lane does NOT actually require dropping
OrdinaryDiffEq: with OrdinaryDiffEq removed, the lane is still red, and the
failure is identical with it present. The CI failing step is
`julia-runtest` (step 11), not the resolver step (8) or buildpkg (10): the
downgrade-compat resolve and buildpkg both succeed; the `Pkg.test()` test-env
re-resolve is what fails Unsatisfiable. Reproduced locally on Julia 1.10 with
the exact CI sequence (downgrade.jl alldeps 1.10 -> Pkg.test allow_reresolve=false):
Unsatisfiable requirements detected for package ModelingToolkitBase:
ModelingToolkit [restricted to 11.21.0-11 by DataDrivenDiffEq]
-> ModelingToolkitBase 1.30.0-1.45.0
-> SymbolicUtils 4.23.1-4
but SymbolicUtils is held at <= 4.21.0 at the downgrade floor -> no versions left
Root cause (release-dependent, not test-dep-dependent): DataDrivenDiffEq's
master floor `ModelingToolkit = "11.21.0"` (set in 24ae52c for the Julia 1.10
precompile) transitively requires ModelingToolkitBase >= 1.30.0, whose
SymbolicUtils floor is 4.23.1 (monotone: every MTKBase >= 1.30 needs >= 4.23.1).
Under the strict downgrade min-resolve the symbolic stack is held at its floor
(Symbolics 7.0-7.21 guarantee only SymbolicUtils >= 4.21.0), so SymbolicUtils
cannot reach 4.23.1 and there is no overlap. This is the broader SciML
symbolic-stack downgrade-floor wall; it resolves once an upstream
ModelingToolkit 11.x release raises its `Symbolics` compat floor to >= 7.22.0
(the first Symbolics whose SymbolicUtils floor, 4.27.0, satisfies MTKBase 1.30),
forcing the downgrade min to a SymbolicUtils >= 4.23.1. Verified: pinning the
test floor to Symbolics >= 7.22.0 (or SymbolicUtils >= 4.23.1) resolves cleanly.
Per the directive: do not drop a real test dependency to dodge the downgrade
resolver. The DataDrivenLux downgrade lane stays red until that upstream release
lands; the rest of #624 (DataDrivenSR coef fix, docs linkcheck, QA source fixes,
qa [sources]) is release-independent and ready.
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>1 parent 30b860d commit 9f48529
14 files changed
Lines changed: 131 additions & 40 deletions
File tree
- docs
- src/libs/datadrivensr
- lib
- DataDrivenLux
- src
- algorithms
- caches
- lux
- test
- qa
- DataDrivenSR
- src
- test
- qa
- src/basis
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
90 | 93 | | |
91 | 94 | | |
92 | 95 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | | - | |
| 49 | + | |
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
19 | 45 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
53 | | - | |
| 53 | + | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | | - | |
| 57 | + | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | | - | |
| 71 | + | |
72 | 72 | | |
73 | | - | |
| 73 | + | |
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
51 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
52 | 55 | | |
53 | 56 | | |
54 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
| 52 | + | |
52 | 53 | | |
| 54 | + | |
53 | 55 | | |
54 | | - | |
55 | | - | |
| 56 | + | |
| 57 | + | |
56 | 58 | | |
57 | 59 | | |
58 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
13 | 25 | | |
14 | 26 | | |
15 | 27 | | |
| |||
0 commit comments