[Claude CI Failure] Fix broken /dev/reference/apis/* redirects for removed/renamed API pages - #5227
[Claude CI Failure] Fix broken /dev/reference/apis/* redirects for removed/renamed API pages#5227btshrewsbury-viam wants to merge 4 commits into
Conversation
The Org docs-link check job (#5170) flagged 30 internal broken links: the `/dev/reference/apis/*` netlify redirect dropped the path (`:splat` was missing), collapsing every sub-path to the bare `/reference/apis/` index instead of the specific page. This made generic, input-controller, and vision component/service API links land on a dead-end index page even though their pages still exist. It also surfaced that the "encode" component was renamed to "encoder" with no redirect for the old slug, and that removed SLAM API pages only had Hugo aliases pointing at the same dead-end `/reference/apis/` index rather than the motion-planning replacement content (the existing convention used for other removed SLAM URLs elsewhere in netlify.toml). Fixes: - Restore :splat on the /dev/reference/apis/* redirect so sub-paths reach their real destination page instead of the index. - Add a redirect for the encode -> encoder component rename. - Replace the removed-SLAM-page aliases in docs/reference/apis/_index.md (which redirected to the generic apis index) with netlify redirects to /motion-planning/, matching the existing SLAM redirect convention already in netlify.toml. Verified against the current live "Org docs-link check" run (30193440177): fixes all 30 broken-link findings. The remaining 321 stale-redirect findings require updating links in the SDK/rdk source repos (out of this repo's access scope), and the 17 broken-anchor findings are two already-tracked, non-fixable-by-edit cases: 8 are SDK methods with no documented anchor yet (the sdk_protos_map.csv coverage-gap backlog tracked in #5142) and 9 are Navigation service API methods whose docs content was intentionally removed with no replacement anchor to point to. Refs #5170
✅ Deploy Preview for viam-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Status update: all content-side checks are green — The only failing checks are Netlify's own deploy-preview annotations (
I don't have access to the actual Netlify deploy log (it 403s without dashboard auth from this environment), so I can't pin down the exact platform-side cause, but the evidence rules out this PR's content. Flagging for a human to check the Netlify dashboard/build minutes/site status directly if this persists — I won't keep retriggering deploys since two consecutive failures (one with real changes, one with none) already isolate the cause to something outside this diff. Generated by Claude Code |
The new SLAM redirect added in this branch sat after the broader /reference/services/* catch-all, so Netlify's redirect-rule check flagged it as unreachable (never triggers) and failed the deploy preview. Move it before the catch-all so it's reachable.
|
Follow-up on the Netlify deploy-preview failure, since it's still failing after That fix was a real bug — I confirmed against git history that the original commit did place New evidence pointing at a platform-side issue rather than anything in this diff:
I still can't reach the actual Netlify deploy log (403s without dashboard auth from this environment) to identify the real cause. Given a real, valid docs-side bug fix didn't change the outcome, and there's nothing left to find via static analysis or a local build, I believe this needs a human with Netlify dashboard access — worth checking build minutes/quota, the Netlify plugin/site configuration, or an active Netlify incident, rather than further redirect-content changes here. Generated by Claude Code |
The 5 Hugo aliases removed from docs/reference/apis/_index.md (SLAM
and slam, under /reference/apis/, /dev/reference/apis/, and
/appendix/apis/) each need a direct netlify.toml redirect: Netlify
(and its no-more-404 build plugin) matches paths case-sensitively, so
the existing lowercase-only rules left "/reference/apis/services/SLAM/"
completely uncovered, and the "/dev/reference/apis/services/{slam,SLAM}/"
paths only resolved through the generic /dev/reference/apis/* catch-all
which the no-more-404 plugin's single-hop check can't verify since its
resolved target isn't a real page. Verified against the actual
no-more-404 plugin source (Collector/Plugin) run standalone against a
build of this branch plus a simulated prior-build cache: 0 missing
paths after this fix, versus 1 (this exact uppercase path) before it.
|
All checks are green now ( Status: Generated by Claude Code |

What
The Org docs-link check job (
check-org-docs-links.yml, issue #5170) scansrdk,app,api,viam-python-sdk,viam-typescript-sdk, andviam-flutter-sdkfordocs.viam.comlinks and classifies each as broken / stale-redirect / broken-anchor. The latest run (30193440177, 2026-07-26) found 368 problems: 30 broken, 321 stale-redirect, 17 broken-anchor.I pulled the complete findings (job log + live per-URL classification output, not just the truncated issue-body summary) and root-caused all 30 "broken" entries to two bugs entirely on the docs.viam.com side:
/dev/reference/apis/*→/reference/apis/redirect was missing:splat. Every sub-path collapsed to the bare/reference/apis/index instead of the specific page.components/generic,components/input-controller, andservices/visionall still exist as real pages (docs/reference/apis/components/generic.md,input-controller.md,docs/reference/apis/services/vision.md) — they just never got a working redirect. This alone accounts for 18 of the 30 broken findings.netlify.tomlfor other removed SLAM URLs (/operate/reference/services/slam/*,/services/slam/*,/mobility/slam/*→/motion-planning/). Accounts for 11 of the 30.encodecomponent was renamed toencoderwith no redirect for the old slug (viam-flutter-sdk/lib/src/components/encoder/encoder.dart:82still links to/dev/.../components/encode/). Accounts for the last 1 of the 30.Fix (fixes 30 of 30 broken-link findings)
netlify.toml: restore:splaton the/dev/reference/apis/*redirect.netlify.toml: add a redirect for theencode→encoderrename.netlify.toml: add 3 new SLAM redirects (/reference/apis/services/slam/*,/reference/services/slam/*,/appendix/apis/services/slam/*→/motion-planning/), matching the existing convention for other removed SLAM URLs in the same file.docs/reference/apis/_index.md: remove the now-redundant SLAM aliases that were producing the dead-end redirect (superseded by the netlify redirects above, which point at the correct destination instead of the generic index).Out of scope (left unchanged, with counts)
/dev/reference/apis/components/arm/→/reference/apis/components/arm/) via existing Hugo alias stubs or (after this fix) the corrected splat redirect — the "fix" the checker wants is updating the source links inviam-python-sdk/viam-typescript-sdk/viam-flutter-sdk/rdk/app/apito use the canonical URL directly. This repo doesn't own those repos, so out of scope here./reference/apis/fleet/(disablebillingservice,getbillingserviceconfig,listoauthapps,organizationgetlogo,organizationgetsupportemail,organizationsetlogo,organizationsetsupportemail,transferregistryitem) — I confirmed these methods have no corresponding heading at all in the generatedstatic/include/app/apis/generated/app.md, i.e. genuine SDK-coverage documentation gaps, the samesdk_protos_map.csv-backlog category already tracked and being chipped away at under CI failure: SDK method coverage #5142./reference/apis/services/navigation/(addwaypoint,getlocation,getmode,getobstacles,getpaths,getproperties,getwaypoints,removewaypoint,setmode) — the Navigation service API page is now an intentional stub ("The navigation service API has been removed... see Motion service API") with no method-level content left to anchor to.Verification
npx prettier@3.2.5 --check docs/reference/apis/_index.md— passesnpx markdownlint-cli --config .markdownlint.yaml docs/reference/apis/_index.md— cleanvale docs/reference/apis/_index.md— 0 errors/warnings/suggestionsmake build-prod— completes with only the expected old-page-date warnings, no errorsdocs/reference/apis/*anddocs/motion-planning/page structure to confirm every new/changed redirect target is a real, existing page before pointing anything at itRefs #5170 (the stale-redirect and broken-anchor categories above remain open items requiring other-repo edits or a coverage-gap decision, so this does not fully resolve what the job checks).
Generated by Claude Code