Skip to content

docs: drop the inert section frontmatter and the unpublished root llms.txt - #141

Merged
vpetersson merged 2 commits into
sbomify:masterfrom
vpetersson-bot:docs/drop-dead-section-frontmatter
Aug 31, 2026
Merged

docs: drop the inert section frontmatter and the unpublished root llms.txt#141
vpetersson merged 2 commits into
sbomify:masterfrom
vpetersson-bot:docs/drop-dead-section-frontmatter

Conversation

@vpetersson-bot

@vpetersson-bot vpetersson-bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Two related things, both consequences of #138 moving the action docs out of /guides/.

The section: key does nothing

53 pages carried it — 19 guides, 19 sbomify-action, 15 compliance. Nothing reads it:

$ grep -rniE '\.params\.section|param "section"' layouts/
$ (no matches)

All 20 matches for "section" in layouts/ are .Section or where … "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 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 silently fallen out of llms.txt

This is the more consequential half, and it is a regression from #138 that nobody would have noticed.

/llms.txt and /llms-full.txt are generated from a fixed list of sections in layouts/home.llms.txt and layouts/home.llmsfull.txt. That list had no sbomify-action entry, so when #138 moved those pages out of guides they landed in no group at all and stopped being emitted:

$ grep -c "sbomify.com/sbomify-action/" public/llms.txt
0
$ grep -c "sbomify.com/sbomify-action/" public/llms-full.txt
0

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 to llms-full.txt.

Verification

I diffed the built site file by file against a baseline built from b54f243. After committing — so enableGitInfo reads the same git state CI does — the only differences are:

What Why
19 guides pages + sitemap.xml dateModified / lastmod move, because those files genuinely changed
llms.txt, llms-full.txt gaining the action pages

Nothing 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 cra taxonomy term render as Cra instead of CRA, across 7 blog posts and 2 tag pages. The tag is spelled CRA in two posts and cra in five, and Hugo takes the display casing from page order — which shifts when enableGitInfo cannot 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.txt is deleted

/llms.txt is generated from layouts/home.llms.txt via the llms output format — as hugo.toml itself documents on line 50. 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 #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:

$ diff -rq with-root/ public/ | wc -l
0

🤖 Generated with Claude Code

https://claude.ai/code/session_01UatuV4CjoCupLTRYNbD3Wq

vpetersson-bot and others added 2 commits August 31, 2026 18:28
… 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-bot vpetersson-bot changed the title docs: drop the inert section frontmatter, restore the action pages to llms.txt docs: drop the inert section frontmatter and the unpublished root llms.txt Aug 31, 2026
@vpetersson
vpetersson merged commit bb03ff8 into sbomify:master Aug 31, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants