DOC-6939 Document feed coverage and the section role vocabulary - #3759
Merged
Conversation
Answers the two documentation gaps the applied AI team raised: nothing stated why
the feed has fewer URLs than sitemap.xml, and the role values a consumer might
filter or rank on were given as five examples followed by "etc."
The coverage section explains the exclusion as what it actually is, rather than as
a skip list. JSON and Markdown are configured for Hugo's section and page kinds
only, so taxonomy listings, term pages and the home page produce no JSON and
therefore no record. That is also why the count cannot be reconciled by adding a
filter description: there is no filter.
It documents the asymmetry in the other direction too, which the assessment spotted
but could not explain. A page carrying _build.list: never is dropped from Hugo's
page collections, and the sitemap is built from those collections, but the page is
still rendered -- so it has JSON and reaches the feed while being absent from the
sitemap. integrate/redis-data-integration/reference/data-transformation/cache is
the current example. It is genuine reference material reached by direct link, so
publishing it is right; only the mismatch needed explaining.
The role table is the full fifteen values in the order the patterns are tested,
with the trigger words for each, because first match wins and the patterns overlap:
a heading of "Version history" is history rather than compatibility purely because
history is tested first. Verified against the feed rather than transcribed from the
code -- the fifteen documented values and the fifteen the build emits are the same
set, with nothing in one and not the other.
The caveat about stability is deliberately explicit, and phrased as guidance rather
than a promise: treat an unrecognised role as content instead of discarding the
section. We cannot offer a contract on these names until there is a schema_version
to signal a change, which is still an open item.
One detail worth knowing about this page in particular: it is documentation about
the feed that also appears in the feed, so a caveat written inside a shortcode has
to survive the AI-output path. A paired shortcode does -- the catch-all strip
removes the {{< >}} delimiters but not the text between them -- and that was
checked rather than assumed, along with the whole section appearing in the JSON.
Constraint: the role table on content/ai-agent-resources.md is published as the vocabulary consumers filter on, so any change to ROLE_PATTERNS in build/transform_json_sections.ts has to update it, or we publish a vocabulary the feed no longer uses
Ticket: DOC-6939
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Contributor
Contributor
🧠 Redis MemoryFound 5 related items from repository history:
Memory updated at b030675 |
Contributor
Author
|
Thanks again @dwdougherty ! |
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.
Documents feed coverage and the section
rolevocabulary on the AI agent resources page — items B2 and B3 of DOC-6939. Documentation only: no output format changes, no build changes.Why
Two of the applied AI team's findings were "you don't explain this" rather than "this is broken":
sitemap.xmland nothing says why, so anyone diffing the two derives an unexplained shortfall.roleis documented as five examples followed by "etc.", and they flagged that filtering or ranking on an uncontracted vocabulary breaks silently if a value is ever renamed.What's added
A "What the feeds cover" section. It explains the exclusion as what it actually is rather than as a skip list: JSON and Markdown are configured for Hugo's
sectionandpagekinds only, so taxonomy listings, term pages and the home page produce no JSON and therefore no record. There is no filter to document — which is why the difference couldn't be explained by describing one.It also covers the asymmetry running the other way, which the assessment spotted but couldn't account for: a page carrying
_build.list: neveris dropped from Hugo's page collections, and the sitemap is generated from those collections, but the page is still rendered — so it has JSON and reaches the feed while being absent from the sitemap.integrate/redis-data-integration/reference/data-transformation/cacheis the current example. It's genuine reference material reached by direct link, so publishing it is correct; only the mismatch needed explaining.A "Section roles" section. All fifteen values, with the trigger words for each, in the order the patterns are tested — because first match wins and the patterns overlap. A heading of "Version history" is
historyrather thancompatibilitypurely becausehistoryis tested first, which looks like a bug from outside if you don't know the order.The stability caveat is explicit and phrased as guidance rather than a promise: treat an unrecognized role as
contentrather than discarding the section. We can't offer a contract on these names until there's aschema_versionto signal a change, which remains open as ticket item C1.The
sections[].iddescription now also states that the id matches the heading's anchor on the rendered page, so<url>#<section id>resolves. That became true with #3757 and is worth saying out loud.Verification
ROLE_PATTERNS.ROLE_PATTERNSinbuild/transform_json_sections.ts.One wrinkle worth knowing
This page is documentation about the feed that also appears in the feed, so a caveat written inside a
{{< note >}}has to survive the AI-output path. It does — the catch-all shortcode strip removes the{{< >}}delimiters but keeps the text between them — and I confirmed the caveat text is present in the JSONcontentrather than assuming it.Follow-up this doesn't do
The commit carries a
Constrainttrailer recording that the published table is now the vocabulary consumers filter on, so a future change toROLE_PATTERNShas to update this page or we publish a vocabulary the feed no longer uses. A build-time check would be better than a trailer; not in scope here.🤖 Generated with Claude Code
Note
Low Risk
Markdown-only documentation with no build, output format, or runtime behavior changes.
Overview
Documentation-only updates to the AI agent resources page so feed consumers can reconcile URLs with
sitemap.xmland usesections[].rolesafely.Adds What the feeds cover, explaining why the NDJSON corpus has fewer URLs than the sitemap (JSON/Markdown only for Hugo
section/pagekinds—no taxonomy, term, or home records) and the reverse case where_build.list: neverpages appear in feeds but not the sitemap, plus a note that counts are snapshots.Adds Section roles with all fifteen
rolevalues, trigger heading prefixes, and priority order (first match wins). The JSON schema now states thatsections[].idmatches on-page heading anchors for#links, and includes a note that roles are descriptive—not a stable contract—and unknown values should be treated ascontent.Reviewed by Cursor Bugbot for commit b030675. Bugbot is set up for automated code reviews on this repo. Configure here.