Add maintenance guardrails for CI and local workflow#14
Conversation
Add local and CI checks to prevent recurring regressions from recent PRs. Introduces staged node_modules blocking, fail-fast search clone diagnostics, markdown bare-link lint gating, and about fallback/content sync verification.
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughAdds CI guardrails (Node.js setup and Markdown lint step in Jekyll workflow), hardens the search update clone step with logging and error annotations, introduces Husky pre-commit + node_modules blocker, adds markdownlint config and scripts, enhances thesis/about sync checks, and updates documentation and badges. Changes
Sequence Diagram(s)mermaid Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In @.github/workflows/jekyll.yml:
- Around line 60-64: The workflow uses actions/setup-node@v4 with node-version:
"22" which can install a Node 22.x below the package.json engines.node minimum;
update the GitHub Actions job to ensure the Node runtime matches package.json by
either setting node-version to a minimum-compatible semver like "22.16" (or
"22.16.x") or create a .nvmrc at the repo root with the required version and
switch the setup-node step to use node-version-file: ".nvmrc"; reference the
actions/setup-node@v4 step and the node-version property as well as
package.json's engines.node when making the change.
There was a problem hiding this comment.
Pull request overview
This PR adds workflow “guardrails” to prevent common maintenance regressions (accidental node_modules commits, markdown bare-link linting, and docs/content drift), and improves CI visibility/failure behavior for the search DB update workflow.
Changes:
- Add local + CI protections against committing/changing
node_modules/**(new script + husky hook + CI checks). - Add markdown linting in CI, with markdownlint-cli2 scoped to MD034 (bare URLs) and a
lint:md:fixhelper script. - Extend the existing docs sync script to also verify
about.mdfallback content matchesaboutVatsal.md, and sync the content accordingly. - Harden the search DB workflow clone step to fail fast and emit detailed diagnostics to the step summary.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/check-phd-thesis-nav-docs.sh |
Adds a drift check between aboutVatsal.md and the fallback section in about.md. |
scripts/check-node-modules.sh |
New script to block commits that stage changes under node_modules/. |
package.json |
Adds npm scripts for check:node-modules and lint:md:fix. |
about.md |
Syncs fallback “Find me” content to match aboutVatsal.md. |
README.md |
Documents the new local commit guardrails and cleanup steps. |
AGENTS.md |
Adds a MathJax update checklist and references guardrail scripts. |
.markdownlint-cli2.jsonc |
Disables all markdownlint rules except MD034 (bare URLs). |
.husky/pre-commit |
Adds a pre-commit hook to run the node_modules staged-change blocker. |
.github/workflows/update-search.yml |
Makes clone failures explicit and adds richer diagnostics to GITHUB_STEP_SUMMARY. |
.github/workflows/jekyll.yml |
Adds markdown linting to CI via Node setup + npm ci + npm run lint:md. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@scripts/check-phd-thesis-nav-docs.sh`:
- Around line 63-77: The sed extraction that writes to "${tmp_about_fallback}"
currently uses the range "/^${ABOUT_HEADING}\$/,$p" which grabs to EOF and
causes false diffs; change the extraction to stop at the next top-level heading
or closing marker so only the fallback section is captured (e.g., use a sed
range that ends just before the next /^# / heading or switch to an awk pattern
that prints from /^${ABOUT_HEADING}$/ until the next /^# / and writes to
"${tmp_about_fallback}"), ensuring the variables ABOUT_HEADING and
ABOUT_FALLBACK_FILE and the temp file "${tmp_about_fallback}" are updated
accordingly so the diff compares only the intended fallback content.
Bumps [faraday](https://github.com/lostisland/faraday) from 2.12.2 to 2.14.1. - [Release notes](https://github.com/lostisland/faraday/releases) - [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md) - [Commits](lostisland/faraday@v2.12.2...v2.14.1) --- updated-dependencies: - dependency-name: faraday dependency-version: 2.14.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Summary
node_modulesdrift, markdown bare-link linting, and docs/content sync.Changes Made
node_modules/**via/scripts/check-node-modules.shand wire it through/.husky/pre-commit.check:node-modulesandlint:md:fix./scripts/check-phd-thesis-nav-docs.shto also verifyaboutVatsal.mdmatches the fallback section inabout.md.about.mdfallback content withaboutVatsal.md(location/email link block)..github/workflows/update-search.ymlclone behavior to fail fast and emit repository/branch/URL/error details toGITHUB_STEP_SUMMARY..github/workflows/jekyll.ymland scope markdownlint config to MD034 (bare URL checks) to avoid blocking on unrelated legacy markdown debt.AGENTS.mdand document local guardrail usage inREADME.md.Testing
./scripts/check-phd-thesis-nav-docs.shnpm run lint:mdruby -e "require 'yaml'; YAML.load_file('.github/workflows/jekyll.yml'); YAML.load_file('.github/workflows/update-search.yml'); puts 'workflow YAML OK'"