[doc] Add legacy-version 404 redirect coverage to current.yaml#63880
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates the documentation and adds 21 legacy-version 404-coverage catch-all redirect rules (DOC-892) to handle high-traffic, out-of-support documentation paths for various components like RLlib, Serve, Data, Ray AIR, Tune, Train, and others. Feedback on the changes suggests updating the /rllib/ redirect target to /rllib/index.html to ensure consistency with other rules and avoid potential double-redirects or canonical URL resolution issues.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| type: page | ||
| description: "DOC-892: rllib-models -> RL Modules" | ||
| - from: /rllib/rllib-* | ||
| to: /rllib/ |
There was a problem hiding this comment.
There was a problem hiding this comment.
Adopted to: /rllib/index.html for consistency with the rest of the file — the existing /rllib.html and /rllib-toc.html rules already target /rllib/index.html. Applied in the latest push.
One note for the record: the double-redirect concern doesn't actually apply here. /en/latest/rllib/ returns 200 in a single hop, and the trailing slash is the server-canonical form (/en/latest/rllib 302s to /en/latest/rllib/, not the reverse). So /rllib/ wouldn't have chained — but index.html is still the right call for consistency.
6d2b526 to
2ad8b36
Compare
Adds 21 page catch-all redirects for high-traffic out-of-support docs paths that have no equivalent on current docs. A 6-month GA4 audit found 2,017 such paths receiving ~552K legacy-version views with no redirect rule; under any legacy-cohort cutover they would land on 404s. These 21 wildcard rules cover ~96% of that gap by views and by paths, landing each cluster on its nearest surviving section index (RLlib, Serve, Data, Tune, Train, Ray Core, Observability, Kubernetes), with Ray AIR and Ray Workflows (both deprecated) routed to their current homes and Sphinx _modules/ source views routed to the Ray source on GitHub. All rules are type: page with force omitted (defaults to false), so each fires only when the path would 404: pages that still exist with the same name on any version resolve untouched. Three targeted rllib- overrides precede the RLlib catch-all so high-traffic renamed pages land on their real equivalents. Validated with rtd-redirects validate doc/redirects/current.yaml: 0 errors. The 49 chain warnings are benign -- each is an existing rule whose target is a live page that sits under one of the new section wildcards, which never fires on a live page given force: false. Application to Read the Docs is manual post-merge per doc/redirects/README.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Douglas Strodtman <douglas@anyscale.com>
2ad8b36 to
d037eb0
Compare
…roject#63880) ## Why A 6-month GA4 audit of `docs.ray.io` found **2,017 out-of-support legacy-version paths receiving ~552K views with no redirect rule and no equivalent on current docs**. Under any legacy-cohort cutover, that traffic lands on 404s. This PR adds the redirect coverage for the bulk of that gap. ## What 21 `page` catch-all rules appended to `doc/redirects/current.yaml`, covering **~96% of the gap by views and by paths**. Each cluster lands on its nearest surviving section index: - **Autodoc / API refs** (RLlib `package_ref`, Serve, Data, Tune, Train, Ray Core, Observability) → that library's API reference index. - **Examples** (Ray AIR, Tune, Train, Ray Core) → the examples gallery. - **Restructured sections** (Kubernetes, Serve tutorials) → the section index. - **Deprecated, no current equivalent**: Ray AIR → AIR getting-started; Ray Workflows → Ray overview. - **Sphinx `_modules/` source views** → the Ray source on GitHub (a view-source request for a symbol that no longer exists is better served by GitHub search than a 404). - Three targeted `rllib-*` overrides precede the RLlib catch-all so high-traffic renamed pages land on their real equivalents. ## Design All rules are `type: page` with `force` omitted (defaults to `false`), so each **fires only when the path would 404**. Pages that still exist with the same name on any version resolve untouched; only moved/deleted/renamed paths hit the catch-all. This composes with the planned legacy-cohort cutover (`/en/releases-X.Y.Z/*` → `/en/latest/:splat`): the cutover preserves same-name paths, and these rules catch what no longer exists on current docs. ## Validation ``` rtd-redirects validate doc/redirects/current.yaml → 0 error, 49 warning ``` Zero ordering/shadow errors. The 49 chain warnings are benign: each is an existing rule whose `to` is a live page that happens to sit under one of the new section wildcards, which never fires on a live page given `force: false`. ## Notes - Follows the source-of-truth workflow established in ray-project#63367. - Application to Read the Docs is a manual maintainer step post-merge per `doc/redirects/README.md`. Signed-off-by: Douglas Strodtman <douglas@anyscale.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Why
A 6-month GA4 audit of
docs.ray.iofound 2,017 out-of-support legacy-version paths receiving ~552K views with no redirect rule and no equivalent on current docs. Under any legacy-cohort cutover, that traffic lands on 404s. This PR adds the redirect coverage for the bulk of that gap.What
21
pagecatch-all rules appended todoc/redirects/current.yaml, covering ~96% of the gap by views and by paths. Each cluster lands on its nearest surviving section index:package_ref, Serve, Data, Tune, Train, Ray Core, Observability) → that library's API reference index._modules/source views → the Ray source on GitHub (a view-source request for a symbol that no longer exists is better served by GitHub search than a 404).rllib-*overrides precede the RLlib catch-all so high-traffic renamed pages land on their real equivalents.Design
All rules are
type: pagewithforceomitted (defaults tofalse), so each fires only when the path would 404. Pages that still exist with the same name on any version resolve untouched; only moved/deleted/renamed paths hit the catch-all. This composes with the planned legacy-cohort cutover (/en/releases-X.Y.Z/*→/en/latest/:splat): the cutover preserves same-name paths, and these rules catch what no longer exists on current docs.Validation
Zero ordering/shadow errors. The 49 chain warnings are benign: each is an existing rule whose
tois a live page that happens to sit under one of the new section wildcards, which never fires on a live page givenforce: false.Notes
doc/redirects/README.md.