Skip to content

Conversation

@flyingrobots
Copy link
Owner

Closes #212

Summary:

  • Upgrade docs site generator from vitepress@0.1.1 to vitepress@1.6.4 and regenerate pnpm-lock.yaml.
  • Make docs build pass under modern VitePress by fixing a handful of angle-bracket / generic-type strings that were being parsed as HTML tags, and by resolving newly-enforced dead-link checks.

Verification:

  • pnpm docs:build (green)

Notes:

  • VitePress warns that the rhai language is not loaded for syntax highlighting (falls back to txt). This is warning-only.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 2, 2026

Warning

Rate limit exceeded

@flyingrobots has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 24 minutes and 35 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between b65004f and eb88ea0.

⛔ Files ignored due to path filters (63)
  • docs/public/assets/collision/dpo_broad_phase_pairing.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_broad_phase_pairing_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_broad_phase_pairing_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_broad_phase_pairing_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_build_temporal_proxy.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_build_temporal_proxy_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_build_temporal_proxy_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_build_temporal_proxy_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_contact_events.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_contact_events_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_contact_events_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_contact_events_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_gc_ephemeral.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_gc_ephemeral_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_gc_ephemeral_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_gc_ephemeral_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_ccd.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_ccd_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_ccd_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_ccd_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_discrete.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_discrete_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_discrete_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/dpo_narrow_phase_discrete_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/graph_collision_overview.svg is excluded by !**/*.svg
  • docs/public/assets/collision/legend.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/build_proxy_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/build_proxy_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/build_proxy_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/ccd_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/ccd_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/ccd_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/discrete_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/discrete_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/discrete_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/events_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/events_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/events_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/gc_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/gc_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/gc_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_build_proxy_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_build_proxy_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_build_proxy_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_ccd_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_ccd_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_ccd_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_discrete_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_discrete_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_discrete_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_events_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_events_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_events_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_gc_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_gc_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_gc_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_pairing_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_pairing_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/graph_pairing_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/pairing_step1.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/pairing_step2.svg is excluded by !**/*.svg
  • docs/public/assets/collision/pip/pairing_step3.svg is excluded by !**/*.svg
  • docs/public/assets/collision/scheduler_phase_mapping.svg is excluded by !**/*.svg
📒 Files selected for processing (31)
  • .gitignore
  • AGENTS.md
  • README.md
  • docs/.vitepress/config.ts
  • docs/DETERMINISTIC_MATH.md
  • docs/SPEC_DETERMINISTIC_MATH.md
  • docs/architecture-outline.md
  • docs/book/echo/sections/01-what-is-echo.tex
  • docs/decision-log.md
  • docs/docs-index.md
  • docs/execution-plan.md
  • docs/guide/collision-tour.md
  • docs/guide/eli5.md
  • docs/guide/start-here.md
  • docs/guide/warp-primer.md
  • docs/index.md
  • docs/legacy-excavation.md
  • docs/math-validation-plan.md
  • docs/public/assets/collision/README.md
  • docs/public/assets/collision/animate.js
  • docs/public/assets/collision/broad_phase_pairing.mmd
  • docs/public/assets/collision/build_temporal_proxy.mmd
  • docs/public/assets/collision/contact_events.mmd
  • docs/public/assets/collision/diagrams.css
  • docs/public/assets/collision/graph_collision_overview.mmd
  • docs/public/assets/collision/narrow_phase_ccd.mmd
  • docs/public/assets/collision/narrow_phase_discrete.mmd
  • docs/spec-geom-collision.md
  • docs/spec-merkle-commit.md
  • e2e/collision-dpo-tour.spec.ts
  • package.json

Walkthrough

Documentation formatting standardization across multiple guides and decision logs, VitePress dependency upgrade from 0.1.1 to 1.6.4 for modern Node compatibility, link path corrections to remove file extensions, and addition of new specification stubs and execution plan entries.

Changes

Cohort / File(s) Summary
VitePress Dependency Upgrade
package.json
Updated vitepress devDependency from ^0.1.1 to pinned version 1.6.4 to resolve incompatibility with modern Node (e.g., Node 25) caused by removal of fs.promises.rmdir({ recursive: true })
Code Reference Formatting
docs/benchmarks/RESERVE_BENCHMARK.md, docs/decision-log.md, docs/scheduler-reserve-complexity.md, docs/scheduler-reserve-validation.md, docs/spec-merkle-commit.md
Standardized inline code formatting for type/data structure references: converted plain Vec<Footprint>, Vec<Hash> to backtick-wrapped equivalents (e.g., `Vec<Footprint>`) for visual consistency and semantic clarity
Link Path & Navigation Corrections
docs/guide/collision-tour.md, docs/index.md, docs/notes/scheduler-radix-optimization.md, docs/notes/scheduler-radix-optimization-2.md, docs/public/collision-dpo-tour.html
Removed .md file extensions from internal links, converted relative paths to absolute paths (e.g., /collision-dpo-tour.html, /docs-index), and updated hyperlink text formatting
Documentation Content Additions
docs/spec-geom-collision.md, docs/decision-log.md, docs/execution-plan.md
Added new spec documentation stub for Geometry & Collision (with status, current artifacts, and future coverage outline); appended 2026-01-02 decision log entry documenting VitePress upgrade and Node version guidance; added execution plan entries for docs tooling upgrade and Issue #177 (deterministic trig audit oracle)
Miscellaneous Formatting
docs/roadmap-mwmr-mini-epic.md
Escaped ASCII < to HTML entity &lt; in Criterion bench target; converted Revision ID from plain text to inline code fragment for consistency

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes


Poem

✨ Docs shine bright with code so clear,
Links corrected, paths laid near,
VitePress leaps from old to new,
Modern Node now works straight through! 📚
Spec stubs emerge from planning's art—
The documentation takes a heart.

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title directly and concisely describes the main change: upgrading VitePress to version 1.6.4.
Description check ✅ Passed The description is directly related to the changeset, explaining the VitePress upgrade, build fixes, and verification.
Linked Issues check ✅ Passed The PR fully addresses issue #212 requirements: vitepress upgraded to 1.6.4, pnpm-lock.yaml regenerated, dead-link checks resolved, and pnpm docs:build passes.
Out of Scope Changes check ✅ Passed All changes are in-scope: VitePress dependency upgrade, lockfile update, and documentation fixes to resolve parsing/link issues caused by the upgrade.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

<style>
@import url('./assets/collision/diagrams.css');
body { background:#0b1020; color:#dfe7ff; font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, 'Helvetica Neue', Arial, sans-serif; line-height:1.5; padding: 24px; }
a { color:#8ab4ff; }

P1 Badge Fix collision tour asset paths after move to public/

After moving collision-dpo-tour.html into docs/public, its CSS and image references still point to ./assets/collision/.... That now resolves to docs/public/assets/..., but the assets are still stored under docs/assets/collision, so the built or dev-served page will 404 the stylesheet and all diagrams, rendering the interactive tour unstyled and without images. Update the relative paths (or relocate the assets) so the public copy can find them.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/scheduler-reserve-validation.md (1)

263-263: Double-backtick notation at line 263 — clarify intent.

The sequence `<from>-to-<to>` uses double backticks, which in Markdown renders a literal backtick inside code. The intent appears to be a template notation (placeholder angle brackets), which is typically styled as `<from>-to-<to>` (single backticks around the whole thing) or <from>-to-<to> (no backticks, in prose context).

Single backticks are cleaner here: `<from>-to-<to>`.

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2602bf4 and b65004f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (14)
  • docs/benchmarks/RESERVE_BENCHMARK.md
  • docs/decision-log.md
  • docs/execution-plan.md
  • docs/guide/collision-tour.md
  • docs/index.md
  • docs/notes/scheduler-radix-optimization-2.md
  • docs/notes/scheduler-radix-optimization.md
  • docs/public/collision-dpo-tour.html
  • docs/roadmap-mwmr-mini-epic.md
  • docs/scheduler-reserve-complexity.md
  • docs/scheduler-reserve-validation.md
  • docs/spec-geom-collision.md
  • docs/spec-merkle-commit.md
  • package.json
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: flyingrobots/echo PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-28T23:14:28.103Z
Learning: When a PR touches non-doc code, update `docs/execution-plan.md` and `docs/decision-log.md` in the same PR.
📚 Learning: 2025-12-28T23:14:28.103Z
Learnt from: CR
Repo: flyingrobots/echo PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-28T23:14:28.103Z
Learning: Start each session by updating *Today's Intent* in `docs/execution-plan.md` and capture milestones, blockers, and decisions in the Decision Log.

Applied to files:

  • docs/execution-plan.md
📚 Learning: 2025-12-28T23:14:28.103Z
Learnt from: CR
Repo: flyingrobots/echo PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-28T23:14:28.103Z
Learning: When a PR touches non-doc code, update `docs/execution-plan.md` and `docs/decision-log.md` in the same PR.

Applied to files:

  • docs/execution-plan.md
  • docs/decision-log.md
📚 Learning: 2025-12-28T23:14:28.103Z
Learnt from: CR
Repo: flyingrobots/echo PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-28T23:14:28.103Z
Learning: Consult `docs/architecture-outline.md` before touching runtime code in packages/echo-core.

Applied to files:

  • docs/notes/scheduler-radix-optimization.md
🪛 markdownlint-cli2 (0.18.1)
docs/notes/scheduler-radix-optimization.md

446-446: Emphasis style
Expected: underscore; Actual: asterisk

(MD049, emphasis-style)


446-446: Emphasis style
Expected: underscore; Actual: asterisk

(MD049, emphasis-style)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cargo Audit (stable)
🔇 Additional comments (13)
docs/notes/scheduler-radix-optimization.md (1)

446-446: LGTM: Link format standardization for VitePress compatibility.

The absolute path format aligns with VitePress's dead-link checking requirements mentioned in the PR objectives.

docs/roadmap-mwmr-mini-epic.md (1)

43-43: LGTM: HTML entity escaping and inline code formatting prevent parsing ambiguities.

Line 43 escapes the less-than operator to prevent VitePress from interpreting it as an HTML tag. Line 55's inline code formatting similarly protects the angle-bracketed revision ID syntax. Both changes align with the PR objective to fix angle-bracket/generic-type parsing issues.

Also applies to: 55-55

docs/notes/scheduler-radix-optimization-2.md (1)

277-277: LGTM: File path formatting standardization.

Converting the dashboard references from hyperlinks to inline code formatting provides literal path representation and aligns with the broader documentation formatting standardization in this PR.

Also applies to: 336-336

docs/spec-merkle-commit.md (1)

68-68: LGTM: Inline code formatting prevents angle-bracket parsing issues.

Wrapping Vec<Hash> in backticks prevents VitePress from misinterpreting the angle brackets as HTML tag delimiters, addressing the parsing issues noted in the PR objectives.

package.json (1)

16-16: No action needed—version pinning to 1.6.4 is appropriate and secure.

VitePress 1.6.4 is the latest stable release as of January 2026; VitePress 2.0 remains in alpha/next status. No published security advisories exist for 1.6.4, and Snyk reports no direct vulnerabilities. Pinning to the latest stable version ensures reproducibility without sacrificing currency or security coverage—this is exactly when exact pinning makes sense. The caret removal here is justified.

Likely an incorrect or invalid review comment.

docs/benchmarks/RESERVE_BENCHMARK.md (2)

105-105: Inline code formatting applied correctly.

Backticks around Vec<Footprint> prevent VitePress from misinterpreting generic-type syntax as HTML tags—essential for compatibility with VitePress 1.6.4's stricter parsing.


113-113: Consistent type reference formatting.

Type names properly wrapped in backticks across the "Future Work" section, maintaining readability and VitePress compatibility.

docs/scheduler-reserve-complexity.md (1)

77-77: VitePress 1.6.4 parsing safeguards applied correctly.

Both the section header and table column header properly escape Vec<Footprint> with backticks. This prevents ambiguity in VitePress 1.6.4's HTML/Markdown parser and maintains semantic correctness of type references.

Also applies to: 119-119

docs/spec-geom-collision.md (1)

1-19: All referenced artifacts are present and properly cross-referenced.

Verification confirms:

  • docs/public/collision-dpo-tour.html exists
  • docs/guide/collision-tour.md exists
  • docs/assets/collision/ exists

The spec stub's inventory is accurate. Additional searches reveal the interactive tour is consistently referenced across execution-plan.md, index.md, decision-log.md, and the book source files—confirming active use and no dead links at the documentation layer.

docs/index.md (1)

12-12: Link path formatting aligns with VitePress 1.6.4 conventions.

Removing the .md extension is correct for internal Markdown-to-Markdown navigation in VitePress 1.6.4; the router handles the extension implicitly.

docs/guide/collision-tour.md (1)

11-11: Link text formatting is clear and correct.

Code-formatting the reference to the HTML asset path improves readability without affecting routing. The href /collision-dpo-tour.html correctly points to the VitePress public asset root.

docs/public/collision-dpo-tour.html (2)

1-12: Confirm documentation plan and decision-log updates are included in this PR.

Per learnings, when a PR touches non-documentation code (e.g., package.json, pnpm-lock.yaml), the PR should also update docs/execution-plan.md and docs/decision-log.md.

The VitePress version bump and lockfile regeneration affect the documentation toolchain. These operational/decision changes should be reflected in those tracking documents.

Please confirm:

  1. Are docs/execution-plan.md and docs/decision-log.md updated in this PR?
  2. If yes, what entries were added or modified?
  3. If no, should they be updated to reflect the VitePress 1.6.4 upgrade decision and execution progress?

30-30: The absolute path /spec-geom-collision is correct and requires no changes.

The target file docs/spec-geom-collision.md exists, and VitePress's cleanUrls: true configuration automatically routes it to /spec-geom-collision without the .md extension. Static assets in docs/public/ are served from the site root, so the absolute path reference is the correct approach here. No fallback relative path is needed.

@flyingrobots
Copy link
Owner Author

Follow-up: made the VitePress home actually navigable and fixed a frontmatter gotcha.

  • docs/index.md and docs/guide/collision-tour.md: removed YAML frontmatter blocks because SPDX HTML headers must remain first-in-file, which prevents VitePress from parsing --- frontmatter (it was rendering title: ... as page content).
  • docs/.vitepress/config.ts: added nav + a minimal sidebar so the site isn’t an empty landing page.
  • .gitignore: ignore docs/.vitepress/cache.

pnpm docs:build still passes.

@flyingrobots
Copy link
Owner Author

Tweaked docs/architecture-outline.md to remove the “2013 Caverns” reference from the Vision section (it was confusing without context).

  • New phrasing keeps the intent (battle-tested ECS core → Echo) without requiring legacy project knowledge.

@flyingrobots
Copy link
Owner Author

Docs usability pass landed on this PR:

  • Purged all remaining "Caverns" references across docs + AGENTS.
  • Added a newcomer-facing entry path: and reshaped into a curated Docs Map.
  • Updated VitePress nav/sidebar to point at the golden paths (Start Here, WARP Primer, WVP demo, core specs) and fixed WARP Primer frontmatter rendering.
  • Added lightweight hub pages: and .
  • Added a status banner to and cleaned up / so they read cleanly in VitePress.

Build check:

echo-docs-and-tests@ docs:build /Users/james/git/echo
vitepress build docs

vitepress v1.6.4

build complete in 3.35s. is green (still shows the non-fatal Rhai highlight fallback warning).

@flyingrobots
Copy link
Owner Author

Corrected summary (previous comment had shell-substitution issues):

  • Purged remaining "Caverns" references across docs and AGENTS.
  • Added a newcomer entry path: docs/guide/start-here.md, and reshaped /docs-index into a curated Docs Map.
  • Updated VitePress nav/sidebar to point at the golden paths (Start Here, WARP Primer, WVP demo, core specs) and removed YAML frontmatter from the WARP primer so it renders correctly.
  • Added lightweight hub pages: docs/scheduler.md and docs/legacy-excavation.md.
  • Added a status banner to docs/math-validation-plan.md and cleaned up docs/DETERMINISTIC_MATH.md / docs/SPEC_DETERMINISTIC_MATH.md so they read cleanly in VitePress.

Build check: pnpm docs:build is green (still shows the non-fatal Rhai highlight fallback warning).

@flyingrobots
Copy link
Owner Author

Added a non-programmer spiral on-ramp and wired it into the docs flow:

  • New guide: docs/guide/eli5.md (progressive disclosure / spiral levels)
  • Home + Start Here now point to ELI5 first: docs/index.md, docs/guide/start-here.md
  • Docs Map includes it under Start Here: docs/docs-index.md
  • VitePress nav/sidebar includes “Echo (ELI5)”: docs/.vitepress/config.ts

Build check: pnpm docs:build is green.

coderabbitai[bot]
coderabbitai bot previously approved these changes Jan 3, 2026
@flyingrobots
Copy link
Owner Author

Update addressing latest review notes:

  • Fixed collision tour static assets: moved docs/assets/collision -> docs/public/assets/collision so docs/public/collision-dpo-tour.html can load CSS/JS/SVGs via ./assets/collision/*. Updated related doc references.
  • Updated spec-geom-collision status line to remove the hardcoded date and adjusted the diagram asset path.
  • Updated e2e collision tour Playwright test to point at docs/public/collision-dpo-tour.html.
  • Fixed VitePress build break in docs/decision-log.md by HTML-escaping generic type params (Vec<...>, Result<...>) so Vue template parsing no longer interprets them as tags.

Validation:

  • pnpm docs:build is green.
  • pnpm exec playwright test e2e/collision-dpo-tour.spec.ts is green.

Branch is merged with origin/main and pushed for a fresh CodeRabbit pass.

Signed-off-by: James Ross <james@flyingrobots.dev>
@flyingrobots flyingrobots enabled auto-merge January 3, 2026 01:54
# Conflicts:
#	docs/decision-log.md
#	docs/execution-plan.md
#	docs/scheduler-reserve-complexity.md
#	docs/scheduler-reserve-validation.md
#	docs/scheduler.md
@flyingrobots flyingrobots merged commit 28d5675 into main Jan 3, 2026
1 of 2 checks passed
@flyingrobots flyingrobots deleted the echo/vitepress-upgrade branch January 3, 2026 02:00
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.

Upgrade VitePress (docs site) to modern release

2 participants