docs: drop the inert section frontmatter and the unpublished root llms.txt - #141
Merged
vpetersson merged 2 commits intoAug 31, 2026
Merged
Conversation
… llms.txt Two related things, both consequences of sbomify#138 moving the action docs out of /guides/. ## The section key does nothing 53 pages carried `section:` in their frontmatter - 19 guides, 19 sbomify-action, 15 compliance. Nothing reads it. Every template uses Hugo's built-in `.Section`, which is derived from the file's directory and cannot be set from frontmatter: $ grep -rniE '\.params\.section|param "section"' layouts/ $ (no matches) The 20 matches are all `.Section` or `where ... "Section" ...`, which resolve the page method, not params. It is not merely dead, it is a trap: it went stale during the /guides/ move, leaving pages declaring `section: guides` while actually living in `sbomify-action`. Removed rather than wired up, since `.Section` is the idiomatic mechanism and already works. ## The action pages had fallen out of llms.txt Both /llms.txt and /llms-full.txt are generated from a fixed list of sections. That list had no entry for `sbomify-action`, so when sbomify#138 moved those pages out of `guides` they landed in no group at all and stopped being emitted - all 20 of them, silently, including the full text in llms-full.txt. Added a "sbomify Action" group to both. 18 pages return to llms.txt and 19 to llms-full.txt. ## Verification The build was diffed file by file against a baseline built from b54f243. After committing - so `enableGitInfo` reads the same git state CI does - the only differences are: - 19 guides pages and sitemap.xml, where `dateModified` and `lastmod` move because those files genuinely changed - llms.txt and llms-full.txt, gaining the action pages Nothing else in 493 pages changed, which is the point: removing the key has no rendered effect. Worth recording, because it cost time: building with an uncommitted tree made the `cra` taxonomy term render as "Cra" instead of "CRA". The tag is spelled `CRA` in two posts and `cra` in five, and Hugo takes the casing from page order, which shifts when `enableGitInfo` cannot read dates for dirty files. It is not a real difference - it disappears once committed - but it makes a dirty-tree build diff misleading. Also confirmed: two consecutive builds from identical sources are byte-identical, so the diff above is signal rather than noise. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UatuV4CjoCupLTRYNbD3Wq
/llms.txt is generated from layouts/home.llms.txt via the `llms` output format, as hugo.toml itself documents. The file at the repository root is not in static/, so Hugo never copies it and it has never been served. It was not harmless. It looked authoritative, so it got maintained - f473861 'fix: update llms.txt hierarchy description' edited a file nobody could read - and it misled me during sbomify#138, where I added the new action pages to it and reported them as registered. The pages that actually needed adding were missing from the generated file until the previous commit. Nothing is lost. Every section it carried exists in the generated output, and the two that looked unique to it - Content Policy and Contact - are byte-identical there. Verified by building with and without the file: the two runs are byte-identical across all 493 pages, which is the proof it was never published. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UatuV4CjoCupLTRYNbD3Wq
vpetersson
approved these changes
Aug 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two related things, both consequences of #138 moving the action docs out of
/guides/.The
section:key does nothing53 pages carried it — 19 guides, 19 sbomify-action, 15 compliance. Nothing reads it:
All 20 matches for "section" in
layouts/are.Sectionorwhere … "Section" …, which resolve Hugo's built-in page method — derived from the file's directory, and not settable from frontmatter.It is not merely dead, it is a trap: it went stale during the
/guides/move, leaving 19 pages declaringsection: guideswhile actually living insbomify-action. Removed rather than wired up, since.Sectionis the idiomatic mechanism and already works.The action pages had silently fallen out of
llms.txtThis is the more consequential half, and it is a regression from #138 that nobody would have noticed.
/llms.txtand/llms-full.txtare generated from a fixed list of sections inlayouts/home.llms.txtandlayouts/home.llmsfull.txt. That list had nosbomify-actionentry, so when #138 moved those pages out ofguidesthey landed in no group at all and stopped being emitted:All 20 pages, gone from both — including their full text in
llms-full.txt. For a site whose whole point is being read by machines, the action documentation had become invisible to them.Added a "sbomify Action" group to both. 18 pages return to
llms.txt, 19 tollms-full.txt.Verification
I diffed the built site file by file against a baseline built from
b54f243. After committing — soenableGitInforeads the same git state CI does — the only differences are:sitemap.xmldateModified/lastmodmove, because those files genuinely changedllms.txt,llms-full.txtNothing else in 493 pages changed, which is the point: removing the key has no rendered effect.
Also confirmed two consecutive builds from identical sources are byte-identical, so that diff is signal rather than noise.
One trap worth recording
Building with an uncommitted tree made the
crataxonomy term render asCrainstead ofCRA, across 7 blog posts and 2 tag pages. The tag is spelledCRAin two posts andcrain five, and Hugo takes the display casing from page order — which shifts whenenableGitInfocannot read dates for dirty files.It is not a real difference and disappears once committed, but it makes a dirty-tree build diff actively misleading. Worth knowing before anyone else diffs a Hugo build here.
(Separately: the tag genuinely is spelled two ways across posts, so the rendered casing is decided by build ordering rather than intent. Normalising it is a small, separate cleanup.)
The root
llms.txtis deleted/llms.txtis generated fromlayouts/home.llms.txtvia thellmsoutput format — ashugo.tomlitself documents on line 50. The file at the repository root is not instatic/, so Hugo never copies it and it has never been served.It was not harmless. It looked authoritative, so it got maintained —
f473861"fix: update llms.txt hierarchy description" edited a file nobody could read — and it misled me during #138, where I added the new action pages to it and reported them as registered. The pages that actually needed adding were the ones missing from the generated file, fixed in the previous commit.Nothing is lost: every section it carried exists in the generated output, and the two that looked unique to it (Content Policy, Contact) are byte-identical there.
Proven by building with and without the file — byte-identical across all 493 pages:
🤖 Generated with Claude Code
https://claude.ai/code/session_01UatuV4CjoCupLTRYNbD3Wq