Skip to content

docs: repair 7 broken internal links - #580

Merged
Corey-T1000 merged 2 commits into
mainfrom
docs/fix-broken-internal-links
Aug 13, 2026
Merged

docs: repair 7 broken internal links#580
Corey-T1000 merged 2 commits into
mainfrom
docs/fix-broken-internal-links

Conversation

@Corey-T1000

Copy link
Copy Markdown
Contributor

Corey spotted dead links on /materialize/getting-started/overview — under Event Streams, both "permission set" and "The Permission Set Lifecycle" land on the SpiceDB FAQ. Confirmed, plus five more found in a full sweep.

Root cause

Relative MDX hrefs are emitted raw into the HTML (href="../../concepts/x") and resolved by the browser against a URL with no trailing slash. So ./x is a sibling, not a child, and ../ climbs one level higher than it looks like it should.

Introduced by #574 (materialize-feature-badges)

File Was Resolved to Live
materialize/getting-started/overview ../../concepts/permission-sets /docs/concepts/permission-sets 200 → redirects to SpiceDB FAQ
same ../../concepts/permission-set-lifecycle /docs/concepts/permission-set-lifecycle 200 → FAQ
materialize/api/download-permission-sets ×2 ./concepts/permission-set-lifecycle /docs/materialize/api/concepts/… 404

All four become ../concepts/…. The ../concepts/snapshots#… link already in download-permission-sets was correct and is the reference form.

Pre-existing

  • spicedb/getting-started/protecting-a-blog — the [running instance] reference definition pointed at getting-started/installing-spicedb, which no longer exists (same dead path docs: fix broken doc links (redirects + dead card link) #569 fixed on first-steps; this file was missed). → install/docker
  • spicedb/ops/data/migrations../getting-started/installing-zed resolved to /spicedb/ops/getting-started/installing-zed (404). Made absolute; the absolute path returns 200.
  • spicedb/tutorials/federated-authorization/spicedb/getting-started/install 404s: that directory has _meta.ts and six per-OS children but no page.*. → install/docker, matching the "Install the SpiceDB server binary" card on first-steps.

If an install index page is wanted later, that link can point back at the folder.

Verification

  • Every broken target confirmed against the live site by status code, and the broken hrefs confirmed in the rendered HTML, not just the source.
  • Swept all 93 pages for relative-link resolution against the route map and next.config.mjs redirects. After this change the only remaining report is a false positive — a [^1]: SpiceDB … footnote matching the reference-definition pattern.
  • All 10 /images/* references verified present in public/.
  • pnpm format:check and pnpm build both green.

Non-issue, for the record

Sidebar folder headings emit basePath-less hrefs (/spicedb/getting-started/install) that 404 if opened directly. This is Nextra's collapsible-group markup — /spicedb/api, /spicedb/concepts, and /spicedb/getting-started all behave the same way — and the anchors are intercepted client-side. Not touched here.

Relative MDX hrefs are emitted raw into the HTML and resolved by the browser
against a URL with no trailing slash, so `./x` is a sibling and `../` climbs
one level higher than expected.

Materialize (introduced in #574):
- overview: `../../concepts/permission-sets` and
  `../../concepts/permission-set-lifecycle` resolved to `/docs/concepts/*`,
  which redirects to the SpiceDB FAQ.
- download-permission-sets: two `./concepts/permission-set-lifecycle` links
  resolved to `/docs/materialize/api/concepts/*` (404). The `../concepts/
  snapshots` link in the same file was already correct.

SpiceDB (pre-existing):
- protecting-a-blog: `[running instance]` pointed at the removed
  `getting-started/installing-spicedb`.
- ops/data/migrations: `../getting-started/installing-zed` resolved to
  `/spicedb/ops/getting-started/installing-zed` (404); made absolute.
- tutorials/federated-authorization: `/spicedb/getting-started/install` has
  no index page, only per-OS children. Points at `install/docker`, matching
  the first-steps card.

Verified against the live site and with a full sweep of all 93 pages; the
only remaining relative-link report is a false positive on a footnote.
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Preview deployment status for this pull request.

Name Status Preview Updated (UTC)
docs 🟢 Ready Visit Preview Aug 13, 2026 06:33pm

The Materialize pages referenced SpiceDB and AuthZed concepts with
fully-qualified https://authzed.com/docs/... URLs, carried over from the
original authzed/concepts/authzed-materialize page. Nextra's anchor
component treats any http(s) href as external, so those links rendered
with target="_blank" and an external-link arrow — while links within the
Materialize section stayed in-tab.

Rewrites the 10 affected link definitions to root-relative paths, matching
how app/spicedb already links across sections. Also fixes preview deploys,
where the absolute URLs navigated away to production.

@authzed-catherine authzed-catherine left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for catching these!

@Corey-T1000
Corey-T1000 merged commit 30bcd71 into main Aug 13, 2026
11 of 12 checks passed
@Corey-T1000
Corey-T1000 deleted the docs/fix-broken-internal-links branch August 13, 2026 18:57
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants