Skip to content

chore: enable Nimbus internal-link validation in CI#32263

Draft
mvvmm wants to merge 5 commits into
productionfrom
feat/nimbus-link-validation
Draft

chore: enable Nimbus internal-link validation in CI#32263
mvvmm wants to merge 5 commits into
productionfrom
feat/nimbus-link-validation

Conversation

@mvvmm

@mvvmm mvvmm commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Wires up nimbus/internal-link — currently "error" in config but never actually enforced, since it's an authoring-tier rule that only runs via nimbus-docs lint, which nothing in CI called.

  • Adds an ignore list, translated from the pre-Nimbus starlight-links-validator exclude config (git history, before chore: Starlight → Nimbus migration cleanup #32203) into picomatch glob syntax — needs cloudflare/nimbus#34, which adds real glob support (the old hand-rolled matcher couldn't express **/llms.txt-style leading wildcards the old exclude list depended on).
  • Adds a CI step (pnpm run lint:nimbus) in the build job, right after Build — needs .nimbus/routes.json, only materialized by a full astro build.
  • Fixes real broken links the rule surfaced once wired up:
    • /changelog/access/#2025-06-30 → wrong shape; real route is /changelog/post/2025-07-01-browser-based-rdp-open-beta/
    • /changelog/cloudflare-one-client/ (×4 files) → missing /product/ segment; real route is /changelog/product/cloudflare-one-client/
    • Stale references to retired workers-ai models (removed from the model catalog, pages now 404) — dropped the dead entries, swapped one for its current equivalent (llama-guard-3-8b)

Temporary: @cloudflare/nimbus-docs is pinned to the pkg.pr.new preview build for cloudflare/nimbus#34 (https://pkg.pr.new/@cloudflare/nimbus-docs@34), not a real release. Needs to be swapped to a published version once that PR merges and ships — do not merge this as-is until then.

Documentation checklist

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

This pull request requires reviews from CODEOWNERS as it changes files that match the following patterns:

Pattern Owners
/.github/ @cloudflare/content-engineering, @kodster28, @mvvmm, @colbywhite, @ahaywood, @MohamedH1998
*.ts @cloudflare/content-engineering, @kodster28
package.json @cloudflare/content-engineering
* @cloudflare/product-owners
/src/content/changelog/ @cloudflare/pm-changelogs, @cloudflare/product-owners, @hoan-pom
/src/content/changelog/cloudflare-one-client/ @ranbel, @cf-rhett, @csujedihy, @lpraneis, @jiulingz, @tojens-ietf, @cloudflare/pm-changelogs, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners, @hoan-pom
/src/content/docs/cloudflare-one/team-and-resources/devices/ @ranbel, @cf-rhett, @csujedihy, @lpraneis, @jiulingz, @tojens-ietf, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/learning-paths/ @cloudflare/product-owners
/src/content/docs/reference-architecture/ @securitypedant, @cloudflare/product-owners, @ncrouch-cflare
/src/content/docs/workers-ai/ @rita3ko, @craigsdennis, @mchenco, @zeke, @superhighfives, @mattrothenberg, @ethulia, @aninibread, @kflansburg, @cloudflare/product-owners

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Preview URL: https://63a9aa09.preview.developers.cloudflare.com
Preview Branch URL: https://feat-nimbus-link-validation.preview.developers.cloudflare.com

Files with changes (up to 15)

Original Link Updated Link
https://developers.cloudflare.com/workers-ai/platform/limits/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/workers-ai/platform/limits/
https://developers.cloudflare.com/changelog/post/2025-09-22-browser-based-rdp-ga/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/changelog/post/2025-09-22-browser-based-rdp-ga/
https://developers.cloudflare.com/changelog/post/2024-06-16-cloudflare-one/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/changelog/post/2024-06-16-cloudflare-one/
https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/lts-releases/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/lts-releases/
https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/support-lifecycle/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/support-lifecycle/
https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/update/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/update/
https://developers.cloudflare.com/learning-paths/sase-overview-course/series/connect-secure-from-any-network-to-anywhere-4/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/learning-paths/sase-overview-course/series/connect-secure-from-any-network-to-anywhere-4/
https://developers.cloudflare.com/learning-paths/sase-overview-course/series/secure-remote-access-to-critical-infrastructure-3/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/learning-paths/sase-overview-course/series/secure-remote-access-to-critical-infrastructure-3/
https://developers.cloudflare.com/learning-paths/sase-overview-course/series/stop-hosting-own-vpn-service-2/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/learning-paths/sase-overview-course/series/stop-hosting-own-vpn-service-2/
https://developers.cloudflare.com/reference-architecture/diagrams/ai/ai-asset-creation/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/reference-architecture/diagrams/ai/ai-asset-creation/
https://developers.cloudflare.com/workers-ai/guides/tutorials/image-generation-playground/image-generator-flux-newmodels/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/workers-ai/guides/tutorials/image-generation-playground/image-generator-flux-newmodels/
https://developers.cloudflare.com/learning-paths/sase-overview-course/series/protect-users-from-internet-risks-5/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/learning-paths/sase-overview-course/series/protect-users-from-internet-risks-5/
https://developers.cloudflare.com/workers-ai/features/json-mode/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/workers-ai/features/json-mode/
https://developers.cloudflare.com/workers-ai/guides/tutorials/image-generation-playground/image-generator-flux/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/workers-ai/guides/tutorials/image-generation-playground/image-generator-flux/
https://developers.cloudflare.com/workers-ai/guides/tutorials/image-generation-playground/image-generator-store-and-catalog/ https://feat-nimbus-link-validation.preview.developers.cloudflare.com/workers-ai/guides/tutorials/image-generation-playground/image-generator-store-and-catalog/

@mvvmm

mvvmm commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

/rebase

@cloudflare-docs-bot

cloudflare-docs-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review

⚠️ 3 warnings, 💡 1 suggestion found in full PR diff.

👉 Fix in your agent 👈
Fix the following review findings in PR #32263 (https://github.com/cloudflare/cloudflare-docs/pull/32263).

Before making changes, review each finding and present a brief summary table:
- For each finding, state whether you agree, disagree, or need clarification
- If you disagree (e.g. the fix requires disproportionate effort for minimal benefit,
  or the finding is factually incorrect), explain why
- If you need clarification before deciding, ask those questions
- Then share your plan for which issues to tackle and in what order

After triaging, follow this order:
1. Post a comment on this PR for any findings you are skipping, with the finding ID and your reasoning.
2. Then commit the fixes for the legitimate findings.

The comment must come before the commit — the bot reads PR comments when a new
push triggers a review, so skip comments posted after the push will be missed.

---

## Code Review

### Warnings (2)

#### CR-a3f6a079c68b · Platform-specific path separator
- **File:** `astro.config.ts` line 69
- **Issue:** `getPublicAssetPaths` uses `join()` (platform-specific) and then slices with the literal `"public/"` prefix. On Windows `join("public", "foo")` produces `"public\\foo"`, so `full.slice("public/".length)` keeps the leading backslash and emits malformed paths such as `"/\\foo"`.
- **Fix:** Normalize the separator before generating the URL path, e.g. `full.replace(/\\\\/g, "/").slice("public/".length)`, or use `path.relative("public", full).replace(/\\\\/g, "/")`.

#### CR-140c786d82ae · Unstable preview registry dependency
- **File:** `package.json` line 53
- **Issue:** The dependency `@cloudflare/nimbus-docs` resolves from `https://pkg.pr.new/@cloudflare/nimbus-docs@34`, a PR preview tarball that can disappear or change.
- **Fix:** Use a published npm registry version once available, or pin to a stable tarball URL with a checksum, so `pnpm install --frozen-lockfile` remains reproducible in CI.

---

## Style Guide Review

### Warnings (1)

#### SG-9a8f0976e380 · Contractions in prose
- **File:** `src/content/changelog/access/2025-09-22-browser-based-rdp-ga.mdx` line 11
- **Issue:** Added line contains the contraction `we've`
- **Fix:** Change `we've` to `we have`

### Suggestions (1)

#### SG-79cb887d3057 · Avoid semicolons joining independent clauses
- **File:** `src/content/docs/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/support-lifecycle.mdx` line 42
- **Issue:** Line uses a semicolon to join two independent clauses: "Cloudflare does not operate on a fixed release schedule; all releases for the Cloudflare One Client are incremental."
- **Fix:** Break into two sentences: "Cloudflare does not operate on a fixed release schedule. All releases for the Cloudflare One Client are incremental."

Code Review

This code review is in beta and may not always be helpful — use your judgment.

Warnings (2)
File Issue
astro.config.ts line 69 Platform-specific path separatorgetPublicAssetPaths uses join() (platform-specific) and then slices with the literal "public/" prefix. On Windows join("public", "foo") produces "public\\foo", so full.slice("public/".length) keeps the leading backslash and emits malformed paths such as "/\\foo". Fix: Normalize the separator before generating the URL path, e.g. full.replace(/\\\\/g, "/").slice("public/".length), or use path.relative("public", full).replace(/\\\\/g, "/").
package.json line 53 Unstable preview registry dependency — The dependency @cloudflare/nimbus-docs resolves from https://pkg.pr.new/@cloudflare/nimbus-docs@34, a PR preview tarball that can disappear or change. Fix: Use a published npm registry version once available, or pin to a stable tarball URL with a checksum, so pnpm install --frozen-lockfile remains reproducible in CI.

Conventions

No convention issues found.

Style Guide Review

Warnings (1)
File Issue
changelog/access/2025-09-22-browser-based-rdp-ga.mdx line 11 Contractions in prose — Added line contains the contraction we've Fix: Change we've to we have
Suggestions (1)
File Issue
cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/support-lifecycle.mdx line 42 Avoid semicolons joining independent clauses — Line uses a semicolon to join two independent clauses: "Cloudflare does not operate on a fixed release schedule; all releases for the Cloudflare One Client are incremental." Fix: Break into two sentences: "Cloudflare does not operate on a fixed release schedule. All releases for the Cloudflare One Client are incremental."
Commands

Only codeowners can run commands. Post a comment with the command to trigger it.

Command Description
/review Runs a review now. Incremental if a prior review exists, full if not.
/full-review Re-reviews the entire PR diff from scratch, ignoring incremental history. Useful after a rebase, when you want a fresh review, or if the bot gets out of sync and reports issues that no longer exist.
/ignore-review-limit Permanently lifts the 2-review automatic limit for this PR. Future pushes will trigger reviews as normal.
/disable-auto-review Stops automatic reviews from triggering on future pushes to this PR. Codeowners can still run /review or /full-review manually.
/rebase Rebases the PR branch against production. On conflict, attempts to resolve automatically using AI. Stops with an explanation if confidence is not high enough.

@cloudflare-docs-bot
cloudflare-docs-bot Bot force-pushed the feat/nimbus-link-validation branch from 74c641e to 48571f9 Compare July 24, 2026 16:48
mvvmm added 5 commits July 24, 2026 13:05
- Add ignore list to nimbus/internal-link, translated from the
  pre-Nimbus starlight-links-validator exclude config (glob syntax
  now works via cloudflare/nimbus#34 — picomatch-backed ignore
  matching).
- Add a Nimbus link validation step in the build CI job, after the
  Build step (needs .nimbus/routes.json, only materialized by a
  full astro build).
- Add a lint:nimbus script.
- Fix real broken links surfaced by the rule: changelog cross-refs
  to /changelog/access/ and /changelog/cloudflare-one-client/ (wrong
  path shape — missing /product/ segment), and stale references to
  retired workers-ai models.
- Temporarily pin @cloudflare/nimbus-docs to the pkg.pr.new preview
  build for cloudflare/nimbus#34 pending a real release.
- Remove prev/next: true from 7 pages (learning-paths series,
  workers-ai tutorials) — Nimbus's prev/next schema is
  string | {link,label} | false, no true (Starlight-era value with
  no Nimbus equivalent; omitting the field gives the same default
  sidebar-based pagination true was meant to convey).
- Turn off nimbus/frontmatter-shape for the compatibility-flags
  collection via a collections override — it's not a docs page (uses
  name, not title), so the docs frontmatter schema doesn't apply.
- Revert the internal-link ignore list back to an exact copy of the
  old starlight-links-validator exclude list, no additions.
Walk public/ at config-load time and feed every file's exact
root-relative path into internal-link's ignore list, instead of
hand-maintained per-product /product/static/** globs. Exact paths
can't mask a real broken link, and new files under public/ are
covered automatically with no config edit.

Also excludes RSS/index.xml endpoints (not real Astro page routes).
@mvvmm
mvvmm force-pushed the feat/nimbus-link-validation branch from 48571f9 to 63a9aa0 Compare July 24, 2026 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.