Skip to content

ci(docs): replace lychee with fern broken-links config#331

Open
pdmack wants to merge 2 commits into
NVIDIA:mainfrom
pdmack:ci/fern-broken-links-config
Open

ci(docs): replace lychee with fern broken-links config#331
pdmack wants to merge 2 commits into
NVIDIA:mainfrom
pdmack:ci/fern-broken-links-config

Conversation

@pdmack

@pdmack pdmack commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

TL;DR

Replace the lychee link-check step in Fern docs CI with fern's native `check.rules.broken-links: error` setting in `docs.yml`, and fix the 14 nav-tree link errors that would otherwise block CI.

Additional Details

Fern's checker validates links against the navigation tree, not just the filesystem. The lychee `--offline` check only caught missing files; fern also catches nav-context resolution errors -- links that exist on disk but resolve to the wrong section in the published docs.

The deprecated `--broken-links` CLI flag and `fern docs broken-links` subcommand both point to this config-based approach as the intended path.

The 14 nav-tree errors were all relative link resolution issues where Fern interprets `./target.md` relative to the page's slug rather than the filesystem directory. Fixes applied to quickstart.md, infrastructure-sizing.md, installation.md, cluster-management/index.md, and cluster-management/self-managed.md. Note: Fern slugifies "gRPC" as `g-rpc`, so links to grpc-load-testing.md use slug `g-rpc-load-testing`.

`fern check` passes with 0 errors after this change.

For the Reviewer

8 files changed: `fern/docs.yml` (warn → error), `fern-docs-ci.yml` (lychee step removed), and 6 `docs/user/` files with corrected nav-tree link paths.

For QA

`fern check` -- 0 errors, 13 warnings (unrelated redirect warnings, tracked in #351).

Issues

Fixes #330

Checklist

  • I am familiar with the Contributing Guidelines.
  • I have signed off my commits for Developer Certificate of Origin (DCO) compliance.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

Summary by CodeRabbit

  • Documentation
    • Updated documentation links for cluster management, infrastructure sizing, installation, and quickstart guides.
    • Corrected references to local development and fake GPU operator documentation.
  • Bug Fixes
    • Broken documentation links are now treated as errors during validation.
    • Improved link validation coverage across the documentation site.

@pdmack
pdmack requested a review from a team as a code owner July 21, 2026 22:19
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d7dea900-c325-4e58-aa6a-e950948f65df

📥 Commits

Reviewing files that changed from the base of the PR and between b47f36a and dc783ff.

📒 Files selected for processing (7)
  • .github/workflows/fern-docs-ci.yml
  • docs/user/cluster-management/index.md
  • docs/user/cluster-management/self-managed.md
  • docs/user/infrastructure-sizing.md
  • docs/user/installation.md
  • docs/user/quickstart.md
  • fern/docs.yml
💤 Files with no reviewable changes (1)
  • .github/workflows/fern-docs-ci.yml
🚧 Files skipped from review as they are similar to previous changes (5)
  • fern/docs.yml
  • docs/user/cluster-management/self-managed.md
  • docs/user/cluster-management/index.md
  • docs/user/quickstart.md
  • docs/user/installation.md

📝 Walkthrough

Walkthrough

Fern documentation CI now uses Fern’s broken-link validation instead of the Lychee workflow step. Internal documentation links were updated to use Fern-compatible parent-directory and extensionless paths.

Changes

Fern documentation link validation

Layer / File(s) Summary
Fern check wiring
.github/workflows/fern-docs-ci.yml, fern/docs.yml
Removes Lychee link scanning, retains fern check, and configures broken links as errors.
Documentation link path corrections
docs/user/cluster-management/*, docs/user/infrastructure-sizing.md, docs/user/installation.md, docs/user/quickstart.md
Updates internal links to parent-directory paths and extensionless documentation targets.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title uses Conventional Commits and accurately describes replacing Lychee with Fern broken-link validation in docs CI.
Linked Issues check ✅ Passed The PR removes Lychee, adds Fern broken-link validation, and fixes the nav-tree link errors so fern check passes.
Out of Scope Changes check ✅ Passed All changes are docs link-path fixes or CI/config updates directly needed for the broken-link migration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Checkov (3.3.8)
fern/docs.yml

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'


Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

@sbaum1994

Copy link
Copy Markdown
Contributor

Lets switch it to error instead of warn please

@pdmack

pdmack commented Jul 22, 2026

Copy link
Copy Markdown
Contributor Author

Done -- switched to error in b47f36a along with fixes for the 14 nav-tree errors that would have blocked CI.

The errors were all relative link resolution issues where Fern interprets ./target.md relative to the page's slug rather than the filesystem directory. Fixes:

  • quickstart.md, installation.md, infrastructure-sizing.md: changed ./target.md to ../target (no .md extension, one level up so Fern resolves from the version root)
  • cluster-management/index.md, self-managed.md: same pattern for fake-gpu-operator
  • infrastructure-sizing.md grpc-load-testing links: Fern slugifies gRPC as g-rpc, so the correct slug is g-rpc-load-testing not grpc-load-testing

fern check now passes with 0 errors.

pdmack and others added 2 commits July 22, 2026 09:02
Switch docs link checking from the lycheeverse/lychee-action step to
fern's native check.rules.broken-links setting in docs.yml. Fern's
checker is authoritative for a Fern docs site -- it validates links
against the navigation tree, not just the filesystem. The lychee
--offline check only caught missing files; fern also catches nav-context
resolution errors.

Set broken-links to warn for now; 29 pre-existing nav-tree errors remain
and will be addressed in a follow-up before hardening to error.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Switch broken-links from warn to error as requested. Fix the 14 nav-tree
link resolution errors that would otherwise fail CI:

- quickstart.md, installation.md: change ./target.md to ../target so
  Fern resolves relative to the version root, not the page slug.
- infrastructure-sizing.md: same fix for g-rpc-load-testing, http-load-testing,
  local-development, and fake-gpu-operator.
- cluster-management/index.md, self-managed.md: change
  ../fake-gpu-operator.md to ../fake-gpu-operator.

fern check now passes with 0 errors.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@pdmack
pdmack force-pushed the ci/fern-broken-links-config branch from 0b690fc to dc783ff Compare July 22, 2026 13:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci(docs): replace lychee link checker with fern broken-links config

2 participants