You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is broken link checking but that won't catch existing links elsewhere back into the documentation site. We should be able to at least post a message to check for redirects, if not just check in ci, if a path is (re)moved.
Feature Category
Other
Problem This Solves
Don't break existing links to docs
Proposed Solution
In ci, check for redirect coverage if paths are (re)moved
User Stories
No response
Alternatives Considered
No response
Priority/Impact
None
Examples or References
No response
Additional Context
No response
Are you planning to fix this issue?
No, just reporting the issue
First-time contributor support
I'm new to contributing and would appreciate guidance on the process
I'd like help understanding the project structure
I need assistance with setting up the development environment
I'm comfortable contributing but new to this project specifically
Folding a related finding in here, since it is the same class of problem — a link that silently stops resolving and nothing catches it.
onBrokenAnchors is never set, so it defaults to warn.docusaurus.config.ts:57 sets onBrokenLinks: 'throw', and onBrokenMarkdownLinks: 'warn' is set on the plugin, but broken anchors are unconfigured. So a link to a heading that no longer exists builds green.
Two are live on main right now, both found while verifying unrelated PRs:
reference/backups/overview.md:35 -> ../cli/commands.md#backing-up-with-volume-snapshots — no such heading exists in that file
release-notes/v5-lincoln/5.1.md:160 -> #deployment-operations — a same-page anchor that does not exist, and the sentence says the target is the Operations API reference
Both are being fixed in a link-hygiene PR. Once they are clean, onBrokenAnchors: 'throw' becomes safe to turn on, and that belongs in this issue's scope: it closes the intra-repo half of the gap for free, while the redirect-coverage check this issue describes handles inbound links from outside the site.
So this issue has two deliverables rather than one:
CI redirect coverage for removed/renamed paths — the original ask. scripts/verify-redirects.mjs already exists and checks configured from paths against the live site; what is missing is the inverse, detecting that a PR removed or renamed a path without adding a redirect.
onBrokenAnchors: 'throw' — cheap, mechanical, catches the in-repo case, gated only on the two fixes above landing.
Activity
Ethan-Arrowood commentedon Aug 27, 2026
Folding a related finding in here, since it is the same class of problem — a link that silently stops resolving and nothing catches it.
onBrokenAnchorsis never set, so it defaults towarn.docusaurus.config.ts:57setsonBrokenLinks: 'throw', andonBrokenMarkdownLinks: 'warn'is set on the plugin, but broken anchors are unconfigured. So a link to a heading that no longer exists builds green.Two are live on
mainright now, both found while verifying unrelated PRs:reference/backups/overview.md:35->../cli/commands.md#backing-up-with-volume-snapshots— no such heading exists in that filerelease-notes/v5-lincoln/5.1.md:160->#deployment-operations— a same-page anchor that does not exist, and the sentence says the target is the Operations API referenceBoth are being fixed in a link-hygiene PR. Once they are clean,
onBrokenAnchors: 'throw'becomes safe to turn on, and that belongs in this issue's scope: it closes the intra-repo half of the gap for free, while the redirect-coverage check this issue describes handles inbound links from outside the site.So this issue has two deliverables rather than one:
scripts/verify-redirects.mjsalready exists and checks configuredfrompaths against the live site; what is missing is the inverse, detecting that a PR removed or renamed a path without adding a redirect.onBrokenAnchors: 'throw'— cheap, mechanical, catches the in-repo case, gated only on the two fixes above landing.sent with Claude Opus 5