Skip to content

docs: polish - version switcher, robots.txt, notebook H1 normalization, llms.txt landing links#721

Merged
igerber merged 1 commit into
mainfrom
docs-polish
Jul 21, 2026
Merged

docs: polish - version switcher, robots.txt, notebook H1 normalization, llms.txt landing links#721
igerber merged 1 commit into
mainfrom
docs-polish

Conversation

@igerber

@igerber igerber commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • Final polish pass of the RTD docs UX overhaul (after docs: restructure RTD site around 5 top-level sections (IA overhaul) #703 IA restructure, test: CI-enforced docs IA guards (tests/test_docs_ia.py) #706 IA guards, docs: fix search-result excerpts (CSS-special anchors) + enable search-as-you-type #713 search fix); every item was scoped independently droppable.
  • Navbar version switcher: docs/_static/switcher.json (stable + latest, preferred: stable), version-switcher added to navbar_end, version_match from READTHEDOCS_VERSION. json_url points at the latest build so future entries propagate to all published versions without config changes. check_switcher stays off - the build-time URL probe would fail the -W build until the json first publishes; the dropdown populates client-side. ONE-SELECTOR POLICY (deploy coupling): the RTD flyout addon (Settings -> Addons -> Flyout menu) is being disabled in the RTD dashboard so the site has a single version control - decided after review flagged that the flyout (50 active versions) plus the navbar switcher would mean two selectors with different lists; documented in conf.py.
  • docs/robots.txt served at the domain root via html_extra_path: disallows only /en/*/_modules/ (~60 thin autogenerated source-view pages), preserving the sitemap line. RTD's autogenerated default allowed everything.
  • Dropped "Tutorial N:" prefixes from 8 notebook H1s (08, 18, 19, 20, 21, 22, 24, 27) so page titles and search-result snippets lead with the topic. Page URLs unchanged; only the H1's own fragment id changes, which resolves to the page top the bare URL already opens; sidebar labels were already short-form toctree overrides. Same byte-identity JSON round-trip gate as docs: fix search-result excerpts (CSS-special anchors) + enable search-as-you-type #713.
  • Linked the 5 section landing pages from diff_diff/guides/llms.txt.
  • Card copy refinement deliberately dropped - reviewed twice since docs: restructure RTD site around 5 top-level sections (IA overhaul) #703 and reads well.

Methodology references (required if estimator / math changes)

  • Method name(s): N/A - no methodology changes (diff_diff/guides/llms.txt is documentation data; no estimator code touched)
  • Paper / source link(s): N/A
  • Any intentional deviations from the source (and why): None

Validation

  • Tests added/updated: No test changes (existing suites cover the surfaces: docs IA guards, guides/discoverability tests, tutorial-drift suites, search smoke test)
  • Backtest / simulation / notebook evidence (if applicable): -W build clean; robots.txt + switcher.json + revised titles verified in built HTML; switcher button browser-verified (the only console entry is the expected 404 on the not-yet-published switcher json); search smoke test passes; 192 guides/IA/drift tests + 172 doc-deps tests pass; all 8 edited notebooks validate against the nbformat schema.

Security / privacy

  • Confirm no secrets/PII in this PR: Yes

…n, llms.txt landing links

Final polish pass of the RTD docs UX overhaul (after #703 IA restructure,
#706 IA guards, #713 search fix):

- Navbar version switcher (docs/_static/switcher.json, stable + latest;
  json_url reads the latest build so entries propagate without config
  changes). ONE-SELECTOR POLICY: replaces the RTD flyout, which is being
  disabled in the RTD dashboard - documented in conf.py. check_switcher
  stays off: the build-time URL probe would fail -W until the json first
  publishes; the dropdown populates client-side.
- docs/robots.txt served at the domain root via html_extra_path: keeps
  the ~60 thin _modules/ source-view pages out of crawlers, preserves
  the sitemap line (RTD's autogenerated default allowed everything).
- Drop "Tutorial N:" prefixes from 8 notebook H1s (08, 18-22, 24, 27) so
  page titles and search snippets lead with the topic. Page URLs
  unchanged; only the H1's own fragment id changes, which resolves to
  the page top the bare URL already opens; sidebar labels were already
  short-form overrides. Byte-identity JSON round-trip gate as in #713.
- Link the 5 section landing pages from diff_diff/guides/llms.txt.
- Card copy refinement deliberately dropped (reviewed twice since #703;
  reads well).

Verified: -W build clean; switcher button renders (expected 404 on the
not-yet-published json is the only console entry); robots.txt + titles
verified in built HTML; search smoke test passes; 192 guides/IA/drift
tests + 172 doc-deps tests pass; 8 edited notebooks nbformat-valid.
@github-actions

Copy link
Copy Markdown

Overall assessment: ✅ Looks good

Executive summary

  • Documentation-only changes; no estimator, inference, assumptions, or defaults changed.
  • Switcher JSON, landing-page targets, and robots directives validate correctly.
  • Notebook edits only normalize H1 titles; no repository links target the removed fragments.
  • One minor test-coverage observation; no P0/P1 findings.

Methodology

No findings. No methodology registry or paper contracts are affected.

Code Quality

No findings. Configuration and JSON are well-formed.

Performance

No findings.

Maintainability

No findings.

Tech Debt

No findings.

Security

No findings or exposed secrets.

Documentation/Tests

  • P3 — New documentation assets lack explicit regression guards
    • Location: docs/conf.py:L108-L149, docs/_static/switcher.json:L1-L13, docs/robots.txt:L1-L10
    • Impact: Future edits could silently break the client-side switcher or remove the robots override because check_switcher=False disables build-time validation.
    • Concrete fix: Optionally add assertions to tests/test_docs_ia.py covering the switcher schema, html_extra_path, and robots directives.

Static validation passed. The full test suite was not run because pytest is unavailable in the review environment.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Jul 21, 2026
@igerber
igerber merged commit bd571c6 into main Jul 21, 2026
39 of 40 checks passed
@igerber
igerber deleted the docs-polish branch July 21, 2026 12:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-ci Triggers CI test workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant