#977

fix(docs): llms.txt omits the landing page and the Limitations overview

Opencoygeekopened 24d ago

Summary

The published Monty llms.txt index lists 63 of the 65 pages in the mkdocs.yml nav. The two missing pages are the landing page (nav "Introduction", source docs/index.md, published at /docs/monty/get-started/) and the Limitations overview (nav "Limitations > Overview", source docs/limitations/index.md, published at /docs/monty/limitations/). Both pages are live, have working index.md variants, and appear in llms-full.txt, so only the llms.txt index leaves them out. An agent that discovers pages through llms.txt finds no link to the introduction or to the page that describes the shape of the supported Python subset; the ## Limitations section starts directly with per-topic pages such as assert.

Runtime or environment

  • Site: https://pydantic.dev/docs/monty/ (page meta reports Astro v7.2.4 and Starlight v0.41.7), observed 2026-10-06.
  • Docs source: main at commit 591527397445bf734873252d1ee20c1b6308fe7f (v1.1.0 release day); the docs-source branch tip's commit message names this source commit; that the live site was built from that tip is inferred, not observed.
  • llms.txt at observation time: 102 lines, sha256 a949ad72e877ca4f1feab8871b0b402a862b2f8d987787298adaef43fd209974. llms-full.txt: 20,574 lines, sha256 4938719141d13733950cc05193502400e43c900cdbd9ae70192c0471492fd71b.

Steps to reproduce

  1. Run these commands against the live site (no query parameters needed):
# llms.txt: no link to either page
curl -s https://pydantic.dev/docs/monty/llms.txt | grep -c -F 'monty/get-started/index.md'
curl -s https://pydantic.dev/docs/monty/llms.txt | grep -c -F 'monty/limitations/index.md'
# llms.txt page links vs llms-full.txt page sections
curl -s https://pydantic.dev/docs/monty/llms.txt | grep -c -E '^- \[.*\]\(https://pydantic.dev/docs/monty/'
curl -s https://pydantic.dev/docs/monty/llms-full.txt | grep -c -E '^# \[.*\]\(https://pydantic.dev/docs/monty/'
# llms-full.txt does contain both pages
curl -s https://pydantic.dev/docs/monty/llms-full.txt | grep -E '^# \[(Monty|Limitations)\]\('
# both pages and their markdown variants are live
curl -s -o /dev/null -w '%{http_code}\n' https://pydantic.dev/docs/monty/get-started/index.md
curl -s -o /dev/null -w '%{http_code}\n' https://pydantic.dev/docs/monty/limitations/index.md
  1. In a checkout of the baseline commit, count the nav pages: grep -c -E "^ *- .*: '[^']+\.md'" mkdocs.yml.

Expected behavior

The site-wide https://pydantic.dev/docs/llms.txt describes each library's llms.txt as "an index of every documentation page with a one-line description" and tells agents: "To answer a question about one library, fetch its llms.txt, pick the relevant pages, and fetch the markdown links it lists." That file does not list Monty, but Monty's llms.txt is served from the same site in the same format, so the same promise reasonably applies. Under it, Monty's llms.txt should link every published nav page, as it already does for the other 63, including the "Introduction" landing page and the "Limitations > Overview" page that mkdocs.yml lists first in its section. The overview matters for this workflow: docs/limitations/index.md says of the topic pages, "They exist for development and for agents debugging code that runs on Monty; most users need only this page." The same pipeline's llms.txt for other Pydantic doc sets does list directory-level landing and overview pages (see the control under Additional context), and Monty's own llms-full.txt includes both pages, so their absence from the index is inconsistent with the rest of the generated output.

Actual behavior

Observed on 2026-10-06 with the commands above:

0
0
63
65
# [Monty](https://pydantic.dev/docs/monty/get-started/)
# [Limitations](https://pydantic.dev/docs/monty/limitations/)
200
200

The nav count in mkdocs.yml is 65. The ## Limitations section of llms.txt has 37 entries, one per topic page, and no overview entry. No other section links /docs/monty/get-started/index.md. /docs/monty/ returns a 302 redirect to /docs/monty/get-started/.

Evidence

  • Expected source: the site-wide llms.txt ("How to use these docs" list: each library's llms.txt is "an index of every documentation page"), the mkdocs.yml nav at the baseline commit (Introduction: 'index.md' and Overview: 'limitations/index.md'), plus the published llms-full.txt, which contains both pages as sections.
  • Failure source: the published /docs/monty/llms.txt, whose page links omit exactly these two nav pages (63 links against 65 nav pages and 65 llms-full.txt sections).
  • Evidence provenance: observed
  • Local verification: reproduced
  • Reproduction completeness: complete

These two pages are the only nav entries whose source file is named index.md. That is a correlation, not an established cause. The llms.txt generator runs outside this repository (the publish-docs job in .github/workflows/ci.yml pushes docs/ and mkdocs.yml to the docs-source branch and dispatches a docs-update event to the site build), so this report does not identify the code path that drops them.

Restoration check

Fetch /docs/monty/llms.txt after the next docs deploy. Today the first two commands print 0 and the third prints 63. Restoration means llms.txt contains a link to /docs/monty/get-started/index.md and a link to /docs/monty/limitations/index.md, and its page-link count equals the llms-full.txt section count (65 for the current nav). Control: the existing 63 links, including all 37 Limitations topic pages, stay present.

Additional context

Control from the other doc sets on the same site, observed the same day, showing that their llms.txt files do list directory-level landing and overview pages:

curl -s https://pydantic.dev/docs/logfire/llms.txt | grep -c -E '/docs/logfire/(get-started|instrument|cookbook)/index\.md\)'
# 3
curl -s https://pydantic.dev/docs/ai/llms.txt | grep -c -E '/docs/ai/(overview|harness|comparisons/overview)/index\.md\)'
# 3

Triage assessment

  • Impact level: P2
  • Assessment status: supported
  • Impact basis: An agent following the site's documented retrieval workflow (fetch the library's llms.txt, pick pages, fetch their markdown) is not shown a link to the Limitations overview, which the docs describe as the only limitations page most users need, or to the introduction. No documentation content is wrong and the pages themselves render, so the failure is bounded to page discovery through llms.txt.
  • Workaround status: available
  • Workaround basis: The HTML sidebar links both pages, and the site documents that appending index.md to any page URL returns its markdown (both index.md URLs observed returning 200); llms-full.txt also contains both pages but is about 1 MB, which the site says to fetch only when the whole corpus is needed.

Activity

0

No activity yet.