Skip to content

feat: bring well-lit path guides onto the docs site - #453

Open
UgaTheDev wants to merge 2 commits into
llm-d:mainfrom
UgaTheDev:feat/docs/well-lit-path-guides
Open

feat: bring well-lit path guides onto the docs site#453
UgaTheDev wants to merge 2 commits into
llm-d:mainfrom
UgaTheDev:feat/docs/well-lit-path-guides

Conversation

@UgaTheDev

@UgaTheDev UgaTheDev commented Jul 28, 2026

Copy link
Copy Markdown

What does this PR do?

Brings the well-lit-path deployment guides from llm-d/llm-d onto this site as their own docs section at /guides, the same way community/ mirrors repo-root files.

This is a first slice: the full sync plumbing plus two guides migrated end to end (Optimized Baseline, Multi-Model Routing). Guide pages are generated from guides/<name>/README.md in llm-d/llm-d by the llmd-site sync tool rather than copied by hand, so they stay current the way the community files do. guides/index.md is authored; the sidebar is autogenerated and ordered by sidebar_position.

Remaining guides, and the faceted model/server/accelerator/router-mode navigation the issue describes, are deliberately left for follow-up PRs. The overview page says so explicitly, and a guide that isn't on the site yet still resolves from its well-lit path's "Deploy" link, which falls back to the recipe on GitHub, so this lands incrementally without leaving dead links behind.

The second commit fixes two things found in self-review. rewriteURL was routing any guides/... path through toSiteDocURL, producing /docs/guides/<name>/... links that aren't a real route here; a regex repair pass then collapsed those to the guide's own root, so all three "Benchmarking Reports" links on optimized-baseline.md became self-links to the page the reader was already on. The fix is in rewriteURL itself: only docs/... targets go through toSiteDocURL, and guides/... targets that aren't a migrated guide's own README fall through to GitHub blob/tree with the full path intact. That let the regex pass be deleted entirely. Separately, guides/ isn't run through the JS markdown preprocessor (it bails outside docsDir), so ten GitHub alert blockquotes across the two pages were rendering as literal [!NOTE] text; convertGithubAdmonitions is now ported to Go and run in the guides sync step.

Why is this change needed?

Fixes #380. The deployment recipes are the thing readers need after picking a well-lit path, and today they only exist as READMEs in llm-d/llm-d, so the "Deploy" links leave the site. Generating them through the existing sync tooling means they don't have to be maintained twice.

How was this tested?

  • Tests added/updated (npm test)
  • Site builds successfully (npm run build:all)
  • Check links after buildling (npm run check-links)
  • Manual testing performed (npm run serve)

npm test isn't defined as a script in this repo, so there was nothing to run under that name. The test surface for the sync tooling is Go: go test ./... in tools/llmd-site passes, including new cases covering the guides manifest entries, the guide file helpers, and the corrected link rewriting.

npm run build:all completes with ✓ build complete. npm run check-links reports 0 broken links across 403 pages / 446 links, with all 304 GitHub URLs checked.

Served the built site locally and checked both generated pages. /guides/optimized-baseline and /guides/multi-model-routing both return 200, the ten GitHub alerts render as Docusaurus admonitions (16 admonition elements, zero literal [!NOTE] strings left in the HTML), and the three "Benchmarking Reports" links resolve to their full upstream paths under guides/optimized-baseline/benchmark-results/... rather than back to the page itself.

One thing worth flagging: the generated /guides/optimized-baseline page carries a broken-anchor warning (distinct from the link check above, which is clean), because its source README links to #benchmarking-report while the heading it points at is ## Benchmarking Reports. That's pre-existing in llm-d/llm-d (guides/optimized-baseline/README.md), not introduced here, and since the page is generated I left it rather than patching a file the next sync would overwrite. Happy to send the one-word fix upstream separately. onBrokenAnchors is already warn and the site has a number of these today, so the build isn't affected either way.

Checklist

  • Commits are signed off (git commit -s) per DCO
  • Code follows project contributing guidelines
  • Tests pass locally (npm test)
  • Site builds without errors (npm run build:all)
  • No broken links after building full site (npm run check-links)
  • Documentation updated (if applicable)

"Tests pass locally" is checked on the basis of the Go suite, since there's no npm test script. "Documentation updated" refers to the authored guides/index.md overview page.

Related Issues

Fixes #380.

Context: #421 replaced the old sync-docs.sh approach with the llmd-site Go tooling, and this builds on that rather than reviving the earlier shell-script approach from the closed #387.

@netlify

netlify Bot commented Jul 28, 2026

Copy link
Copy Markdown

Deploy Preview for llm-d ready!

Name Link
🔨 Latest commit b8ebdb8
🔍 Latest deploy log https://app.netlify.com/projects/llm-d/deploys/6a7abc0a7d600e0008ace051
😎 Deploy Preview https://deploy-preview-453--llm-d.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions

Copy link
Copy Markdown
Contributor

Unsigned commits detected! Please sign your commits.

For instructions on how to set up GPG/SSH signing and verify your commits, please see GitHub Documentation.

@UgaTheDev
UgaTheDev force-pushed the feat/docs/well-lit-path-guides branch 2 times, most recently from 750d3be to 14a2e40 Compare July 30, 2026 09:43
Mirrors the top-level well-lit-path deployment guides from llm-d/llm-d
(guides/<name>/README.md) onto the site as their own docs-plugin
instance at /guides, the same way community/ already mirrors
repo-root files from that repo.

This first slice wires up the full pipeline end to end and migrates
two guides (Optimized Baseline, Multi-Model Routing):

- docs-sync.yaml gains a `guides:` list (docs-sync.yaml, manifest.go,
  validate.go) and a sync step (sync/guides.go) analogous to the
  existing community sync.
- docusaurus.config.js registers a second @docusaurus/plugin-content-docs
  instance rooted at guides/, with its own sidebar (sidebarsGuides.js)
  and a navbar entry, and adds /guides to the local search index.
- guides/index.md is the authored landing page for the section.
- preprocess.mjs now resolves a well-lit path's "Deploy" link to the
  migrated guide's page under /guides when that guide has been
  synced, instead of always sending it to GitHub.
- guides/guides.go additionally repairs two classes of absolute
  /docs/... links that appear in guide READMEs (written assuming
  guides render inline with a docs snapshot): /docs/guides/<name>
  isn't a real path here (guides live at /guides/<name>), and other
  /docs/<section>/... targets that haven't shipped in the latest
  release yet are routed through /docs/dev/ instead of 404ing.

Guides not yet migrated keep resolving via their existing GitHub
fallback, so this ships without any broken links or orphaned nav
entries; `make check-links` passes clean, matching main.

Remaining guides (predicted-latency-routing, precise-prefix-cache-
routing, tiered-prefix-cache, pd-disaggregation, wide-ep-lws,
flow-control, workload-autoscaling, fast-model-actuation, the two
workload guides, and the recipes/ directory) are left for follow-up
PRs, along with the faceted model/server/accelerator/router-mode
navigation the issue asks for — this PR is the plumbing plus a
working example, not the full information architecture.

Fixes llm-d#380

Signed-off-by: Kush Zingade <kush.zingade@gmail.com>
Review of the well-lit path guides sync found the guide READMEs'
relative links resolving wrong on the two shipped pages: rewriteURL
was mapping any guides/... path (not just the two migrated guide
roots) through toSiteDocURL, producing /docs/guides/<name>/... links
that are not a real route on this site. A regex repair pass then
collapsed those broken links down to the guide's own root, so e.g.
all three Benchmarking Reports links on optimized-baseline.md became
self-links to the page the reader is already on, and the calibration
recipe / configuration matrix links pointed at guides/recipes instead
of the file their link text named.

The links themselves are relative in the upstream READMEs (e.g.
./benchmark-results/<x>/README.md, ../recipes/router/calibration/
README.md) - the /docs/guides/... form was never present upstream,
it was produced by this repo's own rewriter. So the fix is in
rewriteURL: only route docs/... targets through toSiteDocURL;
guides/... targets that aren't a migrated guide's own README (the
pathMap case) now fall through to GitHub blob/tree, same as any
other out-of-tree link, preserving the full path. This removes the
regex repair pass in guides.go entirely along with the incorrect
comment that blamed upstream READMEs for the rewriter's own bug.

Also convert GitHub alert blockquotes (> [!NOTE] etc.) into
Docusaurus admonitions for guide pages. guides/ isn't run through
the JS markdown preprocessor (it bails on anything outside docsDir),
so the ten alerts across the two migrated guides were rendering as
literal blockquotes containing "[!NOTE]". Ported preprocess.mjs's
convertGithubAdmonitions to Go and run it in the guides sync step.

Also drop the guides docs-plugin instance's editUrl - it points
"Edit this page" at llm-d/llm-d for guides/index.md, a file that
only exists in this repo, matching how the community instance
already omits it (synced pages have their own custom_edit_url).

Added a table test over rewriteURL covering the guides link cases
above.

Signed-off-by: Kush Zingade <kush.zingade@gmail.com>
@UgaTheDev

Copy link
Copy Markdown
Author

Four weeks on this one with everything green (signed commits, DCO, deploy preview all passing) —
flagging it in case it's fallen off the queue. Note the "Unsigned commits detected" comment above
is stale; it was fixed in the following push and the check passes now.

Scope recap, since the diff looks bigger than the decision it asks for: this adds the sync
plumbing that generates /guides pages from guides/<name>/README.md in llm-d/llm-d — the same
mechanism community/ already uses — plus two guides migrated end to end as proof it works. The
remaining guides and the faceted navigation are deliberately follow-ups.

So the review is really one question: is generating the guides from the source repo the right
approach versus copying them in? If it would be easier to evaluate, I can split the sync tool and
the two migrated guides into separate PRs.

@petecheslock

Copy link
Copy Markdown
Member

@davidgs @chcost What was the status on if we wanted to include the guides on the website? I know that was an open question and tagging you to confirm if that is still the plan.

@davidgs

davidgs commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

I was waiting for clarification on this as well.

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.

[Feature]: Bring the how-to guides into the docs site

3 participants