Skip to content

DOC-6909 Fix pre-existing broken links across the docs - #3795

Open
andy-stark-redis wants to merge 3 commits into
mainfrom
DOC-6909-1-link-fixes
Open

DOC-6909 Fix pre-existing broken links across the docs#3795
andy-stark-redis wants to merge 3 commits into
mainfrom
DOC-6909-1-link-fixes

Conversation

@andy-stark-redis

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

Copy link
Copy Markdown
Contributor

Part 1 of 4 of a stack that splits #3732 into independently reviewable pieces, after @paoloredis noted the single PR was too much to review at once.

Stack: #3795 (this)#3796#3797#3798

What this is

Links that were already broken on main, surfaced by pointing a link render hook at the whole corpus. Every fix stays in relref form and depends on nothing else in the stack, so this can merge on its own.

  • REST API permissions.md — missing # on an anchor, across four versions
  • nodejs/amr.md — a doubled [Authority]([Authority](...)) link
  • Alias canonicalisations, plus setbit, benchmarks and two release-note pages
  • aggregations-syntax.md — removes a note pointing at ./data/products.txt, a dataset that has never existed in the repo (confirmed with the team)

Two things reviewers should weigh

The 5 RedisVL files. @paoloredis asked about these on #3732. They are correct fixes, but RedisVL pages are regenerated from an external site on every sync, so they will be overwritten. While splitting this stack I found that 0.24.0 and 0.25.0 arrived (in ddebc77) carrying the same broken relative link this PR hand-fixes in 0.23.0 and the unversioned copy — so the defect is reproduced by every sync. That's paolo's point demonstrated: the durable fix belongs in build/redisvl_docs_sync.py. I've kept them here to keep the build clean now, but I'm happy to drop them and do the sync-script fix instead.

The aggregations note. Cursor Bugbot argued the removal also dropped useful context (that examples use a hypothetical products dataset), independent of the dead download link. Restoring just the sentence is a one-liner if preferred.


Note

Low Risk
Documentation-only link and copy fixes with no application or API behavior changes.

Overview
Repairs broken or fragile links that were already wrong on main, surfaced by link validation. Changes are documentation-only and use Hugo relref for internal targets where appropriate.

Command and reference pages replace footnote-style reference links and raw paths with {{< relref "..." >}} (for example transactions, key specs, ACL, latency monitor, data types). External URLs are inlined where reference blocks pointed off-site. Several pages update transaction doc paths from /develop/interact/transactions to /develop/using-commands/transactions.

Targeted fixes include: user_manager permission tables in multiple RS REST API permissions.md versions (missing # on view_all_nodes_alerts); doubled [Authority]([Authority](...)) in Node.js AMR docs; RedisVL MCP auth Transport Security links via relref; aggregations-syntax removal of a note linking to a non-existent ./data/products.txt; pipelining link path update in benchmarks; and minor release-note / integrate copy fixes.

RedisVL hand-edits in synced versioned pages may be overwritten on the next docs sync unless the sync script is updated separately.

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

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

DOC-6909

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Staging links:
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/bitcount/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/bitop/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/brpop/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/bzpopmax/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/bzpopmin/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/command-docs/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/command/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/discard/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/exec/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/expire/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/expireat/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/info/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/latency-doctor/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/latency-graph/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/latency-help/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/latency-history/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/latency-latest/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/latency-reset/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/multi/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/restore/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/setbit/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/sort/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/sync/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/unwatch/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/watch/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/commands/zadd/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/develop/ai/redisvl/0.14.0/user_guide/sql_to_redis_queries/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/develop/ai/redisvl/0.23.0/user_guide/how_to_guides/mcp_authentication/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/develop/ai/redisvl/0.6.0/user_guide/
https://redis.io/docs/staging/DOC-6909-1-link-fixes/develop/ai/redisvl/0.7.0/user_guide/

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

🧠 Redis Memory

Found 9 related items from repository history:

Memory updated at a14c849

@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.

Just the one bit of snark. Otherwise, LGTM.

Comment thread content/commands/unwatch.md Outdated
Flushes all the previously watched keys for a [transaction][tt].

[tt]: /develop/interact/transactions
[tt]: /develop/using-commands/transactions

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.

Gotta admit, these are weird. tt is defined separately, but only used once (same for the other pages below). I think these are a remnant from the site migration. It would be better to just use a normal relref here.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@dwdougherty Thanks for the warning. Would it be OK for me to replace these with normal links or is there some reason to keep them as they are?

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.

Sorry I wasn't clear. Please replace them with normal links.

@andy-stark-redis
andy-stark-redis marked this pull request as ready for review August 12, 2026 15:02
andy-stark-redis and others added 2 commits August 12, 2026 16:25
Corrects links that were already broken on main, found by pointing a link
render hook at the whole corpus. Every fix here stays in relref form and
depends on nothing else, so it stands alone.

Covers the REST API permissions anchor across four versions, a doubled link
in the Node.js AMR page, alias canonicalisations, and the setbit, benchmarks
and release-note pages. The malformed auto-tiering path in the flex overview
is absent because that fix reached main independently in the meantime. Also removes an aggregations-syntax note whose products.txt dataset
has never existed in the repo, which was confirmed with the team.

The redisvl pages are pulled from an external site on every sync, so these
hand-edits there will be overwritten within about a week; the durable fix
belongs in build/redisvl_docs_sync.py. They are included to keep the build
clean now, which was a deliberate call.

Ticket: DOC-6909
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Replaces the [text][label] form, with its separate [label]: target
definition, with ordinary inline links. A reviewer on #3795 pointed out the
indirection buys nothing here: the labels are opaque two-letter codes, the
definition sits paragraphs away from the text that uses it, and most labels
are used exactly once. 35 labels across 28 files, all in command pages bar
two.

Internal targets are wrapped in relref to match the surrounding convention
and to keep a bad target loud at build time; the six external URLs go inline
as plain URLs. Every internal target was checked to resolve to a real content
file first, because relref makes a missing target a build failure whereas the
bare path this replaces would have failed silently.

Two traps worth recording for anyone repeating this. A naive definition regex
also matches the URI templates in the import and export pages, where lines
like [protocol]://[username]:[password]@[host]:[port]/ sit inside fenced code
blocks; converting those would corrupt the page, so fenced content is excluded
and those files are untouched. And a usage can straddle a line break, as in
zadd.md where the text wraps between "sorted" and "sets][tdtss]" -- a
line-by-line matcher silently misses those, which cost three of the 35.

One definition is deliberately left in place: keyspace.md defines [tdts] but
never references it, so there is nothing to inline. It is dead weight rather
than a broken link, and removing it is a separate decision.

Learned: reference-link definitions cannot be found with a line-anchored regex alone, because fenced URI templates match the same shape and real usages can wrap across lines
Constraint: only convert an internal target to relref after confirming it resolves, since relref turns a missing target into a build failure while a bare path degrades silently
Ticket: DOC-6909
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@andy-stark-redis
andy-stark-redis marked this pull request as draft August 12, 2026 15:26
Each of these is a link that Markdown does not recognise as a link, so the
page shows the raw syntax to the reader. Found while sanity-checking the
reference-style conversion, and each pattern occurs exactly once in the
corpus.

The Kubernetes release note used the reference-style form but put a relref
shortcode where the label belongs, so nothing defined that label and the
whole construct rendered as text. The Redis OM for Java page used a relref as
the link *text* as well as the destination, so the reader saw a bare URL
instead of a title; it now shows the target page's own title. The clients
reference wrapped an already-complete link in a second link to the same page,
which nests an anchor inside an anchor.

All three targets were confirmed to exist before editing.

Ticket: DOC-6909
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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