Skip to content

Commit 09ec027

Browse files
docs: fix Pages publish + add strict link check to PR CI
The "Publish docs" workflow (mkdocs build --strict, push-to-main only) went red after #448 merged, so the live site froze at the pre-merge build and none of the V1->Control-Reconciler-Protocol changes appeared. Root cause: the orphaned, stale docs/guide/extensibility-preview.md has 10 broken ../specs/* links that abort the strict build. That page documents the retired provisional surface (UseV1Protocol flag, [Experimental], legacy MountXxx path) and is fully superseded by the Control Reconciler Protocol + Extending Reactor Controls pages, so delete it. Also surface the two new pages where they were still missing: - index.md landing page "9. Under the hood" list (hand-maintained; never got the two pages) - added after Reconciliation, matching their 33.5/33.7 order - mkdocs nav: moved both from after Architecture Overview to after Reconciliation so the sidebar and the index list agree Prevent recurrence: - ci.yml: the existing docs job (now "Docs build") runs `mkdocs build --strict` after compiling, mirroring the publish workflow, so a broken link fails the PR instead of the post-merge publish (the only place --strict ran before). One docs build job rather than two. - ai-author-skill.md: author checklist + navigation guidance now require `python -m mkdocs build --strict` before submitting. Verified: `python -m mkdocs build --strict` passes locally (exit 0) after the deletion; remaining items are INFO-level anchor hints (non-fatal, pre-existing). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent c1cb896 commit 09ec027

7 files changed

Lines changed: 34 additions & 349 deletions

File tree

.github/workflows/ci.yml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,8 @@ jobs:
286286
- name: Tier-lint
287287
run: dotnet run --project src/Reactor.Cli -- docs check-tier
288288

289-
docs-compile:
290-
name: Docs compile
289+
docs-build:
290+
name: Docs build
291291
needs: changes
292292
if: needs.changes.outputs.non-md == 'true'
293293
runs-on: windows-latest
@@ -301,3 +301,21 @@ jobs:
301301

302302
- name: Compile docs
303303
run: dotnet run --project src/Reactor.Cli -- docs compile --no-screenshots --ci
304+
305+
- uses: actions/setup-python@v5
306+
with:
307+
python-version: '3.12'
308+
cache: pip
309+
cache-dependency-path: docs/requirements.txt
310+
311+
- name: Install MkDocs
312+
run: pip install -r docs/requirements.txt
313+
314+
# Strict link/anchor check against the docs just compiled above,
315+
# mirroring the Pages publish workflow (.github/workflows/docs.yml).
316+
# `--strict` turns a broken cross-link or missing nav file into a
317+
# failure, so it fails the PR instead of the post-merge publish (the
318+
# only place --strict ran before). Folded into this job so there is a
319+
# single docs build.
320+
- name: mkdocs build --strict
321+
run: python -m mkdocs build --strict

docs/_pipeline/ai-author-skill.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,11 @@ these rules:
491491
by order number so readers can follow the learning path linearly.
492492
- **Link format.** Use relative `.md` paths: `[Getting Started](getting-started.md)`.
493493
Do not use absolute paths or `screenshot://` syntax for page links.
494+
- **Validate with `--strict`.** Before submitting, run `python -m mkdocs build --strict`
495+
locally. The GitHub Pages publish *and* the PR CI both build with `--strict`, so any
496+
broken cross-link or missing heading anchor aborts the build. Always link to a target
497+
that exists; never rely on the non-strict build tolerating a dangling link, and never
498+
silence the check — fix the link or the anchor.
494499

495500
**Topic order for sequential navigation:** see the full 64-page index in
496501
the "Topic Ideas" table at the bottom of this file. Authors should always
@@ -907,3 +912,4 @@ doc to link from a reference page into the conceptual guide.
907912
- [ ] Page has a `## Next Steps` section with links to related and sequential topics
908913
- [ ] Readme links to all topic pages; all pages are reachable via link traversal
909914
- [ ] Run `mur docs compile --validate-only` to check all references resolve
915+
- [ ] Run `python -m mkdocs build --strict` — the publish step and PR CI both use it; a broken cross-link or missing heading anchor aborts the build. Fix the link, don't silence the check.

docs/_pipeline/templates/index.md.dt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ does, not just how to use it.
158158
- **[Reactor vs XAML](reactor-vs-xaml.md)** — (also in §1) the architectural essay
159159
- **[Hooks Internals](hooks-internals.md)** — Hook slot table, dispatcher, closure capture
160160
- **[Reconciliation](reconciliation.md)** — Element-record diff, identity, the three phases
161+
- **[Control Reconciler Protocol](control-reconciler-protocol.md)** — The per-control handler protocol: `IElementHandler`, descriptors, children strategies, pooling
162+
- **[Extending Reactor Controls](extending-reactor-controls.md)** — Cookbook: add a native control end-to-end with a descriptor
161163
- **[Element Pool](element-pool.md)** — Allocation reduction under scroll-heavy lists
162164
- **[Effects Scheduling](effects-scheduling.md)** — When effects run; dep semantics; cleanup ordering
163165
- **[Threading and Dispatch](threading-and-dispatch.md)** — UI-thread invariants, trampoline, batched renders

docs/guide/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ does, not just how to use it.
184184
- **[Reactor vs XAML](reactor-vs-xaml.md)** — (also in §1) the architectural essay
185185
- **[Hooks Internals](hooks-internals.md)** — Hook slot table, dispatcher, closure capture
186186
- **[Reconciliation](reconciliation.md)** — Element-record diff, identity, the three phases
187+
- **[Control Reconciler Protocol](control-reconciler-protocol.md)** — The per-control handler protocol: `IElementHandler`, descriptors, children strategies, pooling
188+
- **[Extending Reactor Controls](extending-reactor-controls.md)** — Cookbook: add a native control end-to-end with a descriptor
187189
- **[Element Pool](element-pool.md)** — Allocation reduction under scroll-heavy lists
188190
- **[Effects Scheduling](effects-scheduling.md)** — When effects run; dep semantics; cleanup ordering
189191
- **[Threading and Dispatch](threading-and-dispatch.md)** — UI-thread invariants, trampoline, batched renders

0 commit comments

Comments
 (0)