Skip to content

DOC-6939 Document feed coverage and the section role vocabulary - #3759

Merged
andy-stark-redis merged 1 commit into
mainfrom
DOC-6939-feed-docs
Aug 6, 2026
Merged

DOC-6939 Document feed coverage and the section role vocabulary#3759
andy-stark-redis merged 1 commit into
mainfrom
DOC-6939-feed-docs

Conversation

@andy-stark-redis

@andy-stark-redis andy-stark-redis commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Documents feed coverage and the section role vocabulary 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":

  • Their observation 08 — the feed has 27 fewer URLs than sitemap.xml and nothing says why, so anyone diffing the two derives an unexplained shortfall.
  • Their observation 06role is 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 section and page kinds 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: never is 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/cache is 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 history rather than compatibility purely because history is 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 content rather than discarding the section. We can't offer a contract on these names until there's a schema_version to signal a change, which remains open as ticket item C1.

The sections[].id description 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

  • The documented vocabulary matches the feed exactly — fifteen values documented, fifteen emitted across the corpus, nothing in one set and not the other. Verified against built output rather than transcribed from ROLE_PATTERNS.
  • The role table's order and trigger words check out line-by-line against ROLE_PATTERNS in build/transform_json_sections.ts.
  • Both new sections reach the JSON and Markdown outputs, not just the rendered page.

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 JSON content rather than assuming it.

Follow-up this doesn't do

The commit carries a Constraint trailer recording that the published table is now the vocabulary consumers filter on, so a future change to ROLE_PATTERNS has 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.xml and use sections[].role safely.

Adds What the feeds cover, explaining why the NDJSON corpus has fewer URLs than the sitemap (JSON/Markdown only for Hugo section/page kinds—no taxonomy, term, or home records) and the reverse case where _build.list: never pages appear in feeds but not the sitemap, plus a note that counts are snapshots.

Adds Section roles with all fifteen role values, trigger heading prefixes, and priority order (first match wins). The JSON schema now states that sections[].id matches on-page heading anchors for # links, and includes a note that roles are descriptive—not a stable contract—and unknown values should be treated as content.

Reviewed by Cursor Bugbot for commit b030675. Bugbot is set up for automated code reviews on this repo. Configure here.

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>
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

DOC-6939

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🧠 Redis Memory

Found 5 related items from repository history:

Memory updated at b030675

@andy-stark-redis
andy-stark-redis requested a review from a team August 6, 2026 12:57
@andy-stark-redis andy-stark-redis self-assigned this Aug 6, 2026
@andy-stark-redis andy-stark-redis added infrastructure AI-friendliness Features that help AI tools understand and use the doc pages more easily. labels Aug 6, 2026

@dwdougherty dwdougherty left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved.

@andy-stark-redis

Copy link
Copy Markdown
Contributor Author

Thanks again @dwdougherty !

@andy-stark-redis
andy-stark-redis merged commit d27c54f into main Aug 6, 2026
89 checks passed
@andy-stark-redis
andy-stark-redis deleted the DOC-6939-feed-docs branch August 6, 2026 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI-friendliness Features that help AI tools understand and use the doc pages more easily. infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants