Commit 7db8842
test: CI-enforced docs IA guards (tests/test_docs_ia.py)
Structural invariants protecting the #703 information architecture - all
valid-Sphinx states the -W build cannot catch:
1. docs/index.rst root toctree = exactly the 5 section landing pages (a
6th entry regrows the navbar "More" dropdown).
2. Every tutorial notebook registered in docs/tutorials/index.rst with
BOTH a short-labeled toctree entry (<=40 chars) and a grid card, in
the SAME group section; duplicates anywhere in the file are counted.
3. Homepage "Supported Estimators" table 1:1 with the api/index.rst
Estimators autosummary, compared by OBJECT IDENTITY (a same-named
distinct class cannot satisfy parity; submodule/re-export aliases
match). Full list-table row blocks are parsed, so multiline or empty
first cells fail loudly.
4. No class documented only under :no-index: (dead :class: xrefs - the
pre-#703 RDD failure mode): every :no-index:'d autoclass (any
indentation, nested api/ dirs included) must resolve to the same
object as a stub-generating (:toctree:) autosummary entry; committed
class stubs may not carry :no-index: themselves.
Parsers are directive-scoped (contiguous option blocks, :toctree:-gated
autosummary, module-shadow-aware qualname resolution) with negative
fixtures per failure shape; scope is explicitly bounded to the RST
conventions this repo uses. Mutation-verified: seeded violations of each
invariant fail. Wired into the docs-tests doc-snippets job + path
filters; conventions documented in CONTRIBUTING.md ("Docs IA
invariants"), CLAUDE.md, /docs-check 5b, and CHANGELOG.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tt9ZXdhHdGsBvRTkNWb39M1 parent 709ddf6 commit 7db8842
6 files changed
Lines changed: 702 additions & 1 deletion
File tree
- .claude/commands
- .github/workflows
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
205 | 227 | | |
206 | 228 | | |
207 | 229 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| 31 | + | |
30 | 32 | | |
31 | 33 | | |
32 | 34 | | |
| |||
81 | 83 | | |
82 | 84 | | |
83 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
84 | 94 | | |
85 | 95 | | |
86 | 96 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
43 | 53 | | |
44 | 54 | | |
45 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
156 | 160 | | |
157 | 161 | | |
158 | 162 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
84 | 102 | | |
85 | 103 | | |
86 | 104 | | |
| |||
0 commit comments