Problem
website/ was removed in c8021e8 ("docs: move public docs into a docs/ bundle for rivet.dev", #1900), but the documented validation gates still point at it. Both are now unrunnable, so documentation changes have no local or CI validation at all.
CLAUDE.md instructs:
Validate docs changes with pnpm --dir website build when the site changes.
Run just docs-check-links when changing documentation paths, routes, redirects, headings used as link anchors, or shared navigation links.
Neither works on a clean checkout:
$ pnpm --filter @rivet-dev/agentos-website build
No projects matched the filters in "/home/user/agentos"
$ ls -d website
ls: cannot access 'website': No such file or directory
just docs-check-links depends on docs-build, which is the same missing filter:
justfile:244 docs-build: pnpm --filter @rivet-dev/agentos-website build
justfile:250 docs-check-links: depends on docs-build
The whole dev-website-* recipe family (justfile:148-236) vendors a theme into website/vendor/theme and serves a site directory that no longer exists.
Why it matters
.github/workflows/docs-sync.yml copies the docs/ bundle into rivet-dev/website on merge to main and opens a PR there. That means broken anchors, dead internal links, and MDX that fails to build are only discovered after merge, in a different repository. There is no pre-merge signal in this repo.
This is easy to hit right now: docs/content/docs/** is edited routinely, and CLAUDE.md tells contributors to run gates that silently match nothing rather than failing loudly.
Suggested resolution
Pick one and make CLAUDE.md match reality:
- Re-point the recipes at the sync target — build/crawl the
docs/ bundle the way rivet-dev/website does, so the check runs against the same renderer that ultimately publishes it.
- Add a lightweight local gate — validate MDX parses, frontmatter is present, and every in-repo
/agentos/docs/... link and #anchor resolves against docs/content/** and docs/sidebar.json. Cheap enough for the required PR CI budget, and catches the common failure.
- Delete the stale recipes and the CLAUDE.md instructions, and state explicitly that docs are validated downstream in rivet-dev/website.
Option 2 plus a docs/** path filter in CI would restore a real pre-merge signal without adding much wall-clock time.
Related loose end
pnpm-workspace.yaml:34-40 currently has the website globs uncommented in the committed tree, directly under a comment that says not to commit them:
# LOCAL WORKAROUND (do not commit): `website` needs @rivet-dev/docs-theme
# symlinked into website/vendor/theme, which isn't set up here and blocks
# `pnpm install` workspace-wide. Excluded to build/run the demo locally.
- website
- website/vendor/theme
- website/vendor/theme/vendor/components
- website/vendor/theme/vendor/icons
just dev-website-setup is what uncomments them (justfile:191-193), so a local run appears to have been committed. pnpm install --frozen-lockfile tolerates the missing directories today, so this is latent rather than breaking, but it should be reverted alongside whichever option above is chosen.
Context
Found while adding docs for the process-wide guest-execution cap (branch claude/maxactivevms-exposure-analysis-nd6qqa). That change edits docs/content/docs/resource-limits.mdx and docs/content/docs/debugging.mdx and adds a cross-page anchor link, exactly the kind of change docs-check-links exists to verify — and there was no way to run it.
Problem
website/was removed in c8021e8 ("docs: move public docs into adocs/bundle for rivet.dev", #1900), but the documented validation gates still point at it. Both are now unrunnable, so documentation changes have no local or CI validation at all.CLAUDE.mdinstructs:Neither works on a clean checkout:
just docs-check-linksdepends ondocs-build, which is the same missing filter:The whole
dev-website-*recipe family (justfile:148-236) vendors a theme intowebsite/vendor/themeand serves a site directory that no longer exists.Why it matters
.github/workflows/docs-sync.ymlcopies thedocs/bundle into rivet-dev/website on merge tomainand opens a PR there. That means broken anchors, dead internal links, and MDX that fails to build are only discovered after merge, in a different repository. There is no pre-merge signal in this repo.This is easy to hit right now:
docs/content/docs/**is edited routinely, and CLAUDE.md tells contributors to run gates that silently match nothing rather than failing loudly.Suggested resolution
Pick one and make
CLAUDE.mdmatch reality:docs/bundle the way rivet-dev/website does, so the check runs against the same renderer that ultimately publishes it./agentos/docs/...link and#anchorresolves againstdocs/content/**anddocs/sidebar.json. Cheap enough for the required PR CI budget, and catches the common failure.Option 2 plus a
docs/**path filter in CI would restore a real pre-merge signal without adding much wall-clock time.Related loose end
pnpm-workspace.yaml:34-40currently has thewebsiteglobs uncommented in the committed tree, directly under a comment that says not to commit them:just dev-website-setupis what uncomments them (justfile:191-193), so a local run appears to have been committed.pnpm install --frozen-lockfiletolerates the missing directories today, so this is latent rather than breaking, but it should be reverted alongside whichever option above is chosen.Context
Found while adding docs for the process-wide guest-execution cap (branch
claude/maxactivevms-exposure-analysis-nd6qqa). That change editsdocs/content/docs/resource-limits.mdxanddocs/content/docs/debugging.mdxand adds a cross-page anchor link, exactly the kind of changedocs-check-linksexists to verify — and there was no way to run it.