Skip to content

Fix docs build for Documenter 1.17 (compat bump #139 follow-up)#140

Merged
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:claude/documenter-1.17-fix
Jun 4, 2026
Merged

Fix docs build for Documenter 1.17 (compat bump #139 follow-up)#140
ChrisRackauckas merged 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:claude/documenter-1.17-fix

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

This supersedes / builds on the Dependabot compat bump in #139
(dependabot/julia/docs/all-julia-packages-27dc8c0b02). It carries the same
compat bumps (Documenter 1.17, Flux, Plots, Distributions, NLSolversBase,
Revise, MLDatasets, StableRNGs, PyCall, SymPy, IJulia across docs/ and
examples/) and adds the code/docs changes needed to make the docs build pass
under Documenter 1.17. Opened from a fork because ChrisRackauckas-Claude only
has triage/pull (not push) on the SciML repo.

(A) Documenter 1.17 docs-build fixes

Documenter 1.17 promotes two doc-check categories from warnings to hard errors.
Reproduced locally (julia +1.11, Documenter 1.17.0) — the unmodified bump
branch failed with:

┌ Error: 12 docstrings not included in the manual:
│     Evolutionary.psin, Base.rand(::AbstractRNG, ::TreeGP), Evolutionary.plog,
│     Evolutionary.psqrt, Evolutionary.cond, Evolutionary.pexp, Evolutionary.pdiv,
│     Evolutionary.genop, Evolutionary.pcos, Evolutionary.ppow,
│     Evolutionary.nop(::AbstractStrategy), Evolutionary.aq
┌ Error: unused footnote named '1'..'9' in docs/src/mutation.md.
┌ Error: unused footnote named '1'..'3' in docs/src/selection.md.
┌ Error: unused footnote named '1'..'7' in docs/src/crossover.md.
ERROR: LoadError: `makedocs` encountered errors [:footnote, :missing_docs]

Fix 1 — 12 missing docstrings

The GP protected operators (pdiv, aq, pexp, plog, psqrt, psin, pcos, ppow, cond), Base.rand(::AbstractRNG, ::TreeGP), the no-op genop(recombinant) GA
operator and the strategy nop(::AbstractStrategy) operator had docstrings but
were never referenced by any @docs/@autodocs block. Added:

  • docs/src/gp.md: a "Protected Functions" @docs block plus
    Base.rand(::AbstractRNG, ::TreeGP) (under a CurrentModule = Evolutionary
    @meta block).
  • docs/src/mutation.md: Evolutionary.genop(recombinant) and
    Evolutionary.nop(::AbstractStrategy).

Fix 2 — "unused footnote" errors

The footnote references ([^N]) live inside the docstrings that are spliced
into mutation.md / selection.md / crossover.md via @docs blocks, but the
footnote definitions ([^N]:) lived in the page body under a ## References
heading. Documenter 1.17 scopes docstring footnotes separately from page-body
footnotes, so every body definition looked orphaned (verified with a minimal
reproduction: ref-in-docstring + def-in-body errors; ref+def both in
docstrings, including across two docstrings on the same page, passes).

Fix: moved each footnote definition into a # References section of the
docstring(s) that reference it (src/mutations.jl, src/recombinations.jl,
src/selections.jl); one definition per id per page is shared across all
docstrings on that page. The genuinely stale crossover.md [^1] (Mühlenbein
1993, referenced by no docstring) was removed. The bibliographies still render
(now inside the docstrings) — nothing was silenced; warnonly/doctest=:none
were not used.

Local docs-build evidence (after fix)

[ Info: SetupBuildDirectory ... Doctest: skipped.
[ Info: ExpandTemplates ... CrossReferences ... CheckDocument: running document checks.
[ Info: Populate ... RenderDocument ... HTMLWriter: rendering HTML pages.
┌ Warning: Documenter could not auto-detect the building environment. Skipping deployment.
EXIT: 0

Zero errors. Confirmed the rendered HTML contains the new docstrings and the
footnote bibliographies (gp/index.html has all 9 protected fns; mutation /
crossover / selection retain their references).

(B) The ubuntu Julia "1" / "pre" "test failure" is a Codecov upload flake, not a test failure

The root Project.toml is unchanged by this bump (only docs/Project.toml
and examples/Project.toml changed), and the package test target only depends
on Test + StableRNGs. So the bump cannot affect the package test
environment.

Looking at the actual CI job steps for run 26918986336:

Job Run tests step Report Coverage with Codecov step Overall
ubuntu 1 pass FAIL "Server failed to authenticate the request" -> exit 255 FAIL
ubuntu pre pass FAIL "Server failed to authenticate the request" -> exit 255 FAIL
ubuntu lts pass pass pass
windows 1 pass pass pass

The test step itself passed on every job, including the two "failing" ones.
The X is on the Codecov upload step, which hit a transient Codecov auth error
(Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature) and exited
255. The same auth annotation shows up on other jobs too; lts (also ubuntu,
also ~1h14m) had the identical test step pass and Codecov succeed. The ~1h job
duration is just the coverage-instrumented run time (lts took 1h14m and
passed), not a hang.

This is a transient Codecov infrastructure flake — not caused by the bump and
not a test regression. A re-run should clear it.

Local test evidence (julia +1.11)

  • This branch: Testing Evolutionary tests passed, exit 0, ~219s
    (all testsets pass: n-Queens, Knapsack, OneMax, Multi-objective EA,
    Regression, Genetic Programming).
  • Clean master: Testing Evolutionary tests passed, exit 0 — identical,
    confirming no pre-existing test failure and no bump-induced regression.

(Local runs are faster than CI because CI runs with coverage instrumentation.)

Formatting

Runic v1 (1.7.0) reports 0 files need reformatting across src/, test/,
and docs/make.jl.


🤖 Generated with Claude Code

dependabot Bot and others added 2 commits June 3, 2026 23:13
Updates the requirements on [Documenter](https://github.com/JuliaDocs/Documenter.jl), [Evolutionary](https://github.com/SciML/Evolutionary.jl), [NLSolversBase](https://github.com/JuliaNLSolvers/NLSolversBase.jl), [Revise](https://github.com/timholy/Revise.jl), [Distributions](https://github.com/JuliaStats/Distributions.jl), [MLDatasets](https://github.com/JuliaML/MLDatasets.jl), [StableRNGs](https://github.com/JuliaRandom/StableRNGs.jl), [PyCall](https://github.com/JuliaPy/PyCall.jl), [SymPy](https://github.com/JuliaPy/SymPy.jl), [IJulia](https://github.com/JuliaLang/IJulia.jl), [Flux](https://github.com/FluxML/Flux.jl) and [Plots](https://github.com/JuliaPlots/Plots.jl) to permit the latest version.

Updates `Documenter` to 1.17.0
- [Release notes](https://github.com/JuliaDocs/Documenter.jl/releases)
- [Changelog](https://github.com/JuliaDocs/Documenter.jl/blob/master/CHANGELOG.md)
- [Commits](JuliaDocs/Documenter.jl@v0.26.0...v1.17.0)

Updates `Evolutionary` to 0.11.2
- [Release notes](https://github.com/SciML/Evolutionary.jl/releases)
- [Commits](https://github.com/SciML/Evolutionary.jl/commits)

Updates `NLSolversBase` to 8.0.0
- [Release notes](https://github.com/JuliaNLSolvers/NLSolversBase.jl/releases)
- [Commits](JuliaNLSolvers/NLSolversBase.jl@v0.0.1...v8.0.0)

Updates `Evolutionary` to 0.11.2
- [Release notes](https://github.com/SciML/Evolutionary.jl/releases)
- [Commits](https://github.com/SciML/Evolutionary.jl/commits)

Updates `Revise` to 3.14.5
- [Release notes](https://github.com/timholy/Revise.jl/releases)
- [Changelog](https://github.com/timholy/Revise.jl/blob/master/NEWS.md)
- [Commits](timholy/Revise.jl@v0.0.1...v3.14.5)

Updates `Distributions` to 0.25.125
- [Release notes](https://github.com/JuliaStats/Distributions.jl/releases)
- [Commits](JuliaStats/Distributions.jl@0.2.2...v0.25.125)

Updates `MLDatasets` to 0.7.21
- [Release notes](https://github.com/JuliaML/MLDatasets.jl/releases)
- [Commits](JuliaML/MLDatasets.jl@v0.0.1...v0.7.21)

Updates `StableRNGs` to 1.0.4
- [Release notes](https://github.com/JuliaRandom/StableRNGs.jl/releases)
- [Commits](JuliaRandom/StableRNGs.jl@v0.1.0...v1.0.4)

Updates `PyCall` to 1.96.4
- [Release notes](https://github.com/JuliaPy/PyCall.jl/releases)
- [Commits](JuliaPy/PyCall.jl@v0.0.1...v1.96.4)

Updates `SymPy` to 2.3.3
- [Release notes](https://github.com/JuliaPy/SymPy.jl/releases)
- [Commits](JuliaPy/SymPy.jl@v0.2.2...v2.3.3)

Updates `IJulia` to 1.34.4
- [Release notes](https://github.com/JuliaLang/IJulia.jl/releases)
- [Commits](JuliaLang/IJulia.jl@v0.0.1...v1.34.4)

Updates `Flux` to 0.16.10
- [Release notes](https://github.com/FluxML/Flux.jl/releases)
- [Changelog](https://github.com/FluxML/Flux.jl/blob/master/NEWS.md)
- [Commits](FluxML/Flux.jl@v0.1.0...v0.16.10)

Updates `Plots` to 1.41.6
- [Release notes](https://github.com/JuliaPlots/Plots.jl/releases)
- [Changelog](https://github.com/JuliaPlots/Plots.jl/blob/v2/NEWS.md)
- [Commits](JuliaPlots/Plots.jl@Plots-v1.41.5+docs...Plots-v1.41.6)

---
updated-dependencies:
- dependency-name: Documenter
  dependency-version: 1.17.0
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: Evolutionary
  dependency-version: 0.11.2
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: NLSolversBase
  dependency-version: 8.0.0
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: Evolutionary
  dependency-version: 0.11.2
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: Revise
  dependency-version: 3.14.5
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: Distributions
  dependency-version: 0.25.125
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: MLDatasets
  dependency-version: 0.7.21
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: StableRNGs
  dependency-version: 1.0.4
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: PyCall
  dependency-version: 1.96.4
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: SymPy
  dependency-version: 2.3.3
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: IJulia
  dependency-version: 1.34.4
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: Flux
  dependency-version: 0.16.10
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: Plots
  dependency-version: 1.41.6
  dependency-type: direct:production
  dependency-group: all-julia-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
Documenter 1.17 promotes two doc-check warnings to hard errors:

1. "12 docstrings not included in the manual": the GP protected
   functions (pdiv, aq, pexp, plog, psqrt, psin, pcos, ppow, cond),
   `Base.rand(::AbstractRNG, ::TreeGP)`, the no-op `genop(recombinant)`
   GA operator, and the `nop(::AbstractStrategy)` strategy operator
   were never referenced by any `@docs`/`@autodocs` block. They are now
   documented on the GP and Mutation manual pages.

2. "unused footnote named ..." in mutation.md, selection.md and
   crossover.md: the footnote *references* (`[^N]`) live inside the
   docstrings spliced in via `@docs`, but the footnote *definitions*
   (`[^N]:`) lived in the page body. Documenter scopes docstring
   footnotes separately from page-body footnotes, so every definition
   looked orphaned. Definitions are moved into the docstrings that use
   them (co-located with the reference; a single definition per id per
   page is shared across docstrings on that page). The genuinely unused
   crossover footnote `[^1]` (Muhlenbein 1993, referenced by nothing)
   is removed.

Docs build now completes with zero errors under Documenter 1.17.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 4, 2026 14:37
@ChrisRackauckas ChrisRackauckas merged commit a7b06e8 into SciML:master Jun 4, 2026
8 of 10 checks passed
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