[PR #5044] [CLOSED] feat(docs): add VitePress dead-link verification to CI workflow (#5030) #6755

Closed
opened 2026-11-01 21:42:49 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/5044
Author: @SohamXYZDev
Created: 10/18/2026
Status: ❌ Closed

Base: main ← Head: feat/docs-dead-link-verification


📝 Commits (1)

  • b939bb5 feat(docs): add VitePress dead-link verification to CI workflow (#5030)

📊 Changes

3 files changed (+15 additions, -4 deletions)

View changed files

📝 .github/workflows/ci.yml (+1 -0)
📝 CONTRIBUTING.md (+5 -4)
📝 tests/boundary/filesystem/ciTestReports.test.ts (+9 -0)

📄 Description

Summary

Currently npm run docs:check passes in CI while VitePress (npm run docs:build) can fail when relative links cross directory boundaries or point outside docs/. Because the full VitePress build was previously executed only in the manual pages.yml workflow, dead markdown links could pass regular PR CI checks unnoticed.

This PR integrates npm run docs:build into the PR CI docs (Docs Generation) job in .github/workflows/ci.yml, asserts its step execution and order in tests/boundary/filesystem/ciTestReports.test.ts, and updates CONTRIBUTING.md to reflect the verification requirement.

Fixes #5030.

Problem and expected behavior

npm run docs:check validates derived product facts and README consistency, but it does not execute the VitePress link validation pipeline. When broken or out-of-tree links are introduced in docs/, they go undetected until either a contributor runs npm run docs:build locally or pages.yml is triggered.

Expected behavior: pull requests modifying documentation automatically run npm run docs:build in CI, failing the build if broken markdown links exist.

Change and scope

  • Added - run: npm run docs:build to the docs job in .github/workflows/ci.yml directly after npm run docs:check and before git diff --exit-code.
  • Added an assertion in tests/boundary/filesystem/ciTestReports.test.ts verifying that jobs.docs.steps contains npm run docs:build and that it runs before Generation leaves authored files unchanged.
  • Updated CONTRIBUTING.md to document that PRs changing documentation run both npm run docs:check and npm run docs:build.
  • Scope: CI documentation verification workflow only. The 6 out-of-tree experiment link repairs landed in main via PR #6368.

Follow the contribution scope.
Unresolved scope, authority, side effects, or required verification block
integration. Link the required maintainer scope decision for new providers or
capabilities involving target execution, injection, mutation, or protection
recovery; ordinary fixes within existing boundaries may state "not applicable".
Draft PRs may leave the scope decision pending and the readiness and merge checklists
unchecked. Maintainers can help resolve open questions.

Contract and boundary impact

  • Semantic owner and earliest changed stage: CI workflow (.github/workflows/ci.yml) and contributor guide (CONTRIBUTING.md).
  • Contribution scope fit and linked maintainer decision: not applicable (documentation check workflow).
  • CLI and MCP/tool-catalog contract: none.
  • Provider, bridge, target-format, or platform compatibility: none.
  • Evidence, artifact, provenance, or reconstruction contract: none.
  • Target selection, authority, upstream behavior, and cleanup details (if applicable): not applicable.
  • Generated metadata (docs/public/product-catalog.json), package, or installation impact (CI generates and validates ignored catalogs and skills/; edit authored instructions in .agents/skills/reverse-engineer-anything/ and never commit build outputs): none (generated outputs remain ignored and verified clean by git diff --exit-code).

Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.

  • Read existing files or captured data.
  • Launch or attach to a process.
  • Inject instrumentation or run scripts/code.
  • Change process memory, registers, files, or configuration.
  • Contact network services.
  • Recover protected code or work around protections.
  • Documentation or usability only; no target interaction.
  • Not sure yet; investigation or maintainer guidance needed.

Evidence and regression coverage

  • Tests added or updated: updated tests/boundary/filesystem/ciTestReports.test.ts to assert that npm run docs:build is present in jobs.docs.steps and runs before the cleanliness check Generation leaves authored files unchanged.
  • Base reproduction or other evidence: verified that ci.yml on main lacked npm run docs:build in the docs job, allowing dead links to pass unnoticed in PR validation.
  • User-visible CLI/MCP output (if applicable): not applicable.
  • Remaining proof gaps: none; PR #6368 resolved the 6 out-of-tree link references on main.

For evidence-bearing changes:

  • Observed, derived, and inferred claims remain distinguishable.
  • Artifact identity, source provenance, and failed attempts remain preserved.
  • Unsupported, incomplete, unavailable, or uncertain outcomes remain visible.

Validation performed

  • git diff --check — clean (0 warnings)
  • python -c "import yaml; data = yaml.safe_load(open('.github/workflows/ci.yml')); ..." — verified step sequence npm ci -> npm run docs:check -> npm run docs:build (idx 5) -> git diff --exit-code (idx 6)
  • git log -1 --stat — verified 3 files changed (+15, -4)

Compatibility, safety, and release

  • Breaking changes or migration steps: none.
  • Real Hopper/Ghidra, browser, or OS coverage: not applicable.
  • Package or release metadata impact: none.
  • Security, privacy, process, or containment review: none.

Author readiness

Human owner: @SohamXYZDev

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

Before merge

  • This PR addresses a concrete problem or an agreed enhancement.
  • Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff.
  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above.
  • Tests cover changed observable behavior and meaningful failure paths.
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output (not applicable; documentation and CI workflow change only).
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/5044 **Author:** [@SohamXYZDev](https://github.com/SohamXYZDev) **Created:** 10/18/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/docs-dead-link-verification` --- ### 📝 Commits (1) - [`b939bb5`](https://github.com/morluto/rea/commit/b939bb5eff7c8b0a5f259e1da6680de2b582f3ff) feat(docs): add VitePress dead-link verification to CI workflow (#5030) ### 📊 Changes **3 files changed** (+15 additions, -4 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+1 -0) 📝 `CONTRIBUTING.md` (+5 -4) 📝 `tests/boundary/filesystem/ciTestReports.test.ts` (+9 -0) </details> ### 📄 Description ## Summary Currently `npm run docs:check` passes in CI while VitePress (`npm run docs:build`) can fail when relative links cross directory boundaries or point outside `docs/`. Because the full VitePress build was previously executed only in the manual `pages.yml` workflow, dead markdown links could pass regular PR CI checks unnoticed. This PR integrates `npm run docs:build` into the PR CI `docs` (Docs Generation) job in `.github/workflows/ci.yml`, asserts its step execution and order in `tests/boundary/filesystem/ciTestReports.test.ts`, and updates `CONTRIBUTING.md` to reflect the verification requirement. Fixes #5030. ## Problem and expected behavior `npm run docs:check` validates derived product facts and README consistency, but it does not execute the VitePress link validation pipeline. When broken or out-of-tree links are introduced in `docs/`, they go undetected until either a contributor runs `npm run docs:build` locally or `pages.yml` is triggered. Expected behavior: pull requests modifying documentation automatically run `npm run docs:build` in CI, failing the build if broken markdown links exist. ## Change and scope - Added `- run: npm run docs:build` to the `docs` job in `.github/workflows/ci.yml` directly after `npm run docs:check` and before `git diff --exit-code`. - Added an assertion in `tests/boundary/filesystem/ciTestReports.test.ts` verifying that `jobs.docs.steps` contains `npm run docs:build` and that it runs before `Generation leaves authored files unchanged`. - Updated `CONTRIBUTING.md` to document that PRs changing documentation run both `npm run docs:check` and `npm run docs:build`. - Scope: CI documentation verification workflow only. The 6 out-of-tree experiment link repairs landed in main via PR #6368. Follow the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope). Unresolved scope, authority, side effects, or required verification block integration. Link the required maintainer scope decision for new providers or capabilities involving target execution, injection, mutation, or protection recovery; ordinary fixes within existing boundaries may state "not applicable". Draft PRs may leave the scope decision pending and the readiness and merge checklists unchecked. Maintainers can help resolve open questions. ## Contract and boundary impact - Semantic owner and earliest changed stage: CI workflow (`.github/workflows/ci.yml`) and contributor guide (`CONTRIBUTING.md`). - Contribution scope fit and linked maintainer decision: not applicable (documentation check workflow). - CLI and MCP/tool-catalog contract: none. - Provider, bridge, target-format, or platform compatibility: none. - Evidence, artifact, provenance, or reconstruction contract: none. - Target selection, authority, upstream behavior, and cleanup details (if applicable): not applicable. - Generated metadata (`docs/public/product-catalog.json`), package, or installation impact (CI generates and validates ignored catalogs and `skills/`; edit authored instructions in `.agents/skills/reverse-engineer-anything/` and never commit build outputs): none (generated outputs remain ignored and verified clean by `git diff --exit-code`). Expected effects (check known effects; use documentation-only on its own). Unchecked items do not establish absence; leave uncertainties visible. - [ ] Read existing files or captured data. - [ ] Launch or attach to a process. - [ ] Inject instrumentation or run scripts/code. - [ ] Change process memory, registers, files, or configuration. - [ ] Contact network services. - [ ] Recover protected code or work around protections. - [x] Documentation or usability only; no target interaction. - [ ] Not sure yet; investigation or maintainer guidance needed. ## Evidence and regression coverage - Tests added or updated: updated `tests/boundary/filesystem/ciTestReports.test.ts` to assert that `npm run docs:build` is present in `jobs.docs.steps` and runs before the cleanliness check `Generation leaves authored files unchanged`. - Base reproduction or other evidence: verified that `ci.yml` on main lacked `npm run docs:build` in the `docs` job, allowing dead links to pass unnoticed in PR validation. - User-visible CLI/MCP output (if applicable): not applicable. - Remaining proof gaps: none; PR #6368 resolved the 6 out-of-tree link references on main. For evidence-bearing changes: - [ ] Observed, derived, and inferred claims remain distinguishable. - [ ] Artifact identity, source provenance, and failed attempts remain preserved. - [ ] Unsupported, incomplete, unavailable, or uncertain outcomes remain visible. ## Validation performed - `git diff --check` — clean (0 warnings) - `python -c "import yaml; data = yaml.safe_load(open('.github/workflows/ci.yml')); ..."` — verified step sequence `npm ci` -> `npm run docs:check` -> `npm run docs:build` (idx 5) -> `git diff --exit-code` (idx 6) - `git log -1 --stat` — verified 3 files changed (+15, -4) ## Compatibility, safety, and release - Breaking changes or migration steps: none. - Real Hopper/Ghidra, browser, or OS coverage: not applicable. - Package or release metadata impact: none. - Security, privacy, process, or containment review: none. ## Author readiness Human owner: @SohamXYZDev - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. ## Before merge - [x] This PR addresses a concrete problem or an agreed enhancement. - [x] Material scope and authority questions are resolved, and any required maintainer scope decision covers the final diff. - [x] The PR has one focused outcome and the title follows `type(scope): outcome`. - [x] Related issue is linked, or the reason for not linking one is stated above. - [x] Tests cover changed observable behavior and meaningful failure paths. - [x] Owning docs, contracts, and generated metadata are updated where needed. - [x] User-visible CLI/MCP changes include representative output (not applicable; documentation and CI workflow change only). - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-01 21:42:49 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#6755
No description provided.