Skip to content

docs CI: re-clone OrdinaryDiffEq fresh in env setup (fix master Documentation build)#870

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:harden-docs-ode-dev-checkout
Jun 16, 2026
Merged

docs CI: re-clone OrdinaryDiffEq fresh in env setup (fix master Documentation build)#870
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:harden-docs-ode-dev-checkout

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

The master Documentation build (from #869) failed at Set up environment:

ERROR: empty intersection between OrdinaryDiffEq@6.111.0 and project compatibility 7

Pkg.develop("OrdinaryDiffEq") reuses an existing ~/.julia/dev/OrdinaryDiffEq instead of re-cloning. The self-hosted runner had a stale 6.111.0 checkout from an earlier run, which conflicts with the docs OrdinaryDiffEq = "7" compat. OrdinaryDiffEq master is 7.0.0, so a fresh clone resolves cleanly — and PR #869's run (different runner) passed env-setup for exactly that reason.

This removes any stale dev checkout before Pkg.develop, so master is always cloned fresh and the build is robust to leftover runner state (applied in both Documentation.yml env-setup, which runs before make.jl's using).

Opened non-draft so the Documentation workflow runs (it's skipped on drafts via the !github.event.pull_request.draft gate).

Note

Heads-up for @ChrisRackauckas: if the build now gets past env-setup but the AlgebraicMultigrid preconditioner blocks fail, that's the runner's registry being stale (AMG v2.0.0, registered 2026-06-12, needs a current registry to resolve; otherwise AMG v1.x's Pinv coarse solver crashes on the non-SPD W). I could not verify that locally — this machine's General registry is a stale ChrisRackauckas-Claude/General fork (missing e.g. PureKLU).

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits June 15, 2026 11:37
…heckout)

The master Documentation build failed at "Set up environment" with
`empty intersection between OrdinaryDiffEq@6.111.0 and project compatibility 7`.
`Pkg.develop("OrdinaryDiffEq")` reuses an existing `~/.julia/dev/OrdinaryDiffEq`
rather than re-cloning, and the self-hosted runner had a stale 6.111.0 checkout
left by an earlier run, which conflicts with the docs `OrdinaryDiffEq = "7"` compat.
OrdinaryDiffEq master is 7.0.0, so a fresh clone resolves it.

Remove any stale dev checkout before `Pkg.develop` so master is always cloned fresh,
making the build robust to leftover runner state.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The full Documentation build (now that env-setup is fixed) failed on two things:

1. `:example_block` — the AlgebraicMultigrid preconditioner blocks in
   advanced_ode_example.md crash with `ArgumentError: invalid argument SciML#4 to
   LAPACK call` (gesdd!). The runner resolves AlgebraicMultigrid v1.x, whose
   default `Pinv` coarse solver forms a dense pseudo-inverse via SVD that fails
   on the non-SPD `W = I - γJ`. Use a direct sparse-LU coarse solver instead
   (`coarse_solver = AlgebraicMultigrid.LinearSolveWrapper(LS.UMFPACKFactorization())`),
   which exists in both AMG 1.x and 2.x and avoids the SVD path entirely.

2. `:linkcheck` — add two URLs to `linkcheck_ignore`:
   - github.com/SciML/LinearSolve.jl (linkcheck got HTTP 429 / rate-limited)
   - mathworks.com/.../nonnegative-ode-solution.html (HTTP 403 / bot-blocked,
     like the other mathworks links already ignored).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas merged commit 94ae41b into SciML:master Jun 16, 2026
7 checks passed
ChrisRackauckas added a commit that referenced this pull request Jun 16, 2026
…fix) (#872)

* docs: build against released (registry) OrdinaryDiffEq/StochasticDiffEq

Drop the `Pkg.develop` of OrdinaryDiffEq and StochasticDiffEq in the docs build
(and the env-setup re-clone dance), resolving them — and all the solver
subpackages — from the registry at their released versions instead of master.

Why:
  - StochasticDiffEq is a subpackage of the OrdinaryDiffEq.jl monorepo as of v7
    (registry `repo = OrdinaryDiffEq.jl`, `subdir = lib/StochasticDiffEq`), so
    `Pkg.develop("StochasticDiffEq")` re-cloned the same monorepo and the stale
    leftover checkout of the old `SciML/StochasticDiffEq.jl` repo (6.100.0) broke
    resolution against the docs `[compat] = "7"`:
        ERROR: empty intersection between StochasticDiffEq@6.100.0 and compat 7
  - `Pkg.develop`ing the monorepo master also risks version skew: the dev'd
    master meta-package's subpackage [compat] must be satisfiable by the
    *registered* subpackages (sources don't propagate to the docs project), which
    breaks whenever master races ahead of the registry.
  - The released packages already ship their `docs/` (OrdinaryDiffEq 7.0.0's
    tarball includes `docs/` with pages.jl + src + common_*_steps.jl), so the API
    docs can be copied from the installed stable packages with no dev checkout.

Net effect: the stable docs reflect released versions, the stale-checkout failure
mode and the monorepo skew are both gone, and env-setup is just instantiate.

(StochasticDiffEq's registered tarball does not yet ship `docs/` — its docs/ needs
to be migrated into lib/StochasticDiffEq in the monorepo; until then the
"StochasticDiffEq.jl API" section stays dropped, as added in #869.)

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs: source EnsembleProblem from SciMLBase in the low_dep example

Building against the stable release (previous commit) surfaced that
OrdinaryDiffEq 7.0.0 does not re-export `EnsembleProblem` (master does), so the
low-dependency example's `ODE.EnsembleProblem` was an `UndefVarError`. Source it
from SciMLBase, which defines it — consistent with this page's own point that
"you will always need SciMLBase.jl, since it defines all of the fundamental
types." This is the only docs `@example` affected: across all of docs/src the
only OrdinaryDiffEq-exported-on-master-but-not-7.0.0 symbol used via the alias is
`EnsembleProblem`, here.

Verified locally on the released stack (OrdinaryDiffEq 7.0.0 + OrdinaryDiffEqLowOrderRK
+ DiffEqCallbacks + SciMLBase): the example's ensemble solve runs successfully.

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants