Skip to content

CI: Dependabot for npm (wiki), pip and GitHub Actions - #80

Merged
Deicyde merged 4 commits into
mainfrom
claude/dependabot-config
Oct 19, 2026
Merged

Deicyde merged 4 commits into
mainfrom
claude/dependabot-config

Conversation

@Deicyde

@Deicyde Deicyde commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Closes #10.

Problem

WikiLean has no Dependabot or Renovate configuration, so npm, pip and SHA-pinned GitHub Actions updates pile up silently. An npm audit of wiki/package-lock.json on main today reports 10 advisories (3 moderate, 5 high, 2 critical). They are in hono, wrangler's transitive deps (miniflare, sharp, undici), vitest/tinypool, ajv and source-map-js.

Change

New .github/dependabot.yml, per the issue's acceptance criteria:

  • npm for /wiki, weekly, with minor and patch dev-dependency updates grouped into one PR. wrangler, ajv and esbuild stay out of the group and arrive alone: wrangler is the deploy, backup and rollback tool, which no CI job runs, and an ajv or esbuild bump changes the committed companion validator. @types/node majors are ignored, since the project runs Node 22;
  • pip for the root requirements-ci.txt, weekly, as one grouped PR, because the file is a resolved freeze with lockstep pairs (pydantic/pydantic_core, mcp/mcp-types, httpx2/httpcore2). The six pins that brain code seals and CI checks (pg8000, scramp, asn1crypto, python-dateutil, six and PyYAML) are ignored, to be bumped by hand with a profile reseal;
  • GitHub Actions, monthly, so the SHA pins in the workflows get reviewed bumps;
  • open PRs capped per ecosystem (5, 3, 3).

ci.yml runs on every pull_request with no path filter and uses no secrets, so each update PR runs the protected CI / required gate (worker, python and browser).

Two npm directories are left out on purpose: .github/claude-cli (the poller's pinned CLI, bumped by hand) and .github/backup-wrangler, which scripts/backup_wrangler_lock.py generates from wiki/package-lock.json and CI checks, so it follows wiki's wrangler.

CONTRIBUTING.md (Pull requests) gains a paragraph saying when to merge these PRs. npm and pip PRs change release-affecting files, so they merge at the start of a release cycle and never between a build and its promotion. A wrangler PR (or any npm PR that moves a package Wrangler depends on) also runs python3 scripts/backup_wrangler_lock.py --write, since CI's check fails until it does, and updates the runbook's Wrangler notes. An ajv or esbuild PR may need the validator regenerated. After an upload-artifact bump, Backup D1 should be dispatched once.

How tested

  • The file parses as YAML with the three ecosystems, the ignores and the groups above. The sealed pins and lockstep pairs are the ones in requirements-ci.txt and brain/lmfdb_source_dependencies.py / brain/git_harvest_dependencies.py.
  • Release-neutral per site/ops/brain_release_authority.py.
  • Dependabot itself validates the config after merge, on the repo's Insights → Dependency graph → Dependabot page.

Risks

  • Update PRs start arriving after merge, up to the caps.
  • wiki/package.json and wiki/package-lock.json are release-affecting, so a merged npm update to the Worker's runtime dependencies rides the next Brain release, like any Worker change.

What Jack must do

Weekly npm updates for /wiki with minor/patch dev dependencies grouped, weekly pip updates for requirements-ci.txt, and monthly GitHub Actions updates so the SHA pins get reviewed bumps. Open PRs are capped per ecosystem. CI runs on every pull_request and needs no secrets, so each update PR goes through the protected CI / required gate, browser soak included. Closes #10.
@Deicyde

Deicyde commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner Author

Recommendation: merge (at 2173af5d, CI green; the review's fixes are in):

  • The six brain-sealed pip pins are ignored, and the pip freeze moves as one grouped PR.
  • wrangler, ajv and esbuild stay out of the dev group, and @types/node majors are ignored.
  • CONTRIBUTING.md says when to merge these release-affecting PRs: at the start of a release cycle. Any wrangler move also needs scripts/backup_wrangler_lock.py --write, and an ajv or esbuild bump needs the validator regenerated.
  • .github/backup-wrangler is named as left out, since it's generated from wiki/package-lock.json.

With #81 closing, there's no merge ordering. Release-neutral.

Posted by the WikiLean PR swarm (lead); updated 2026-10-18.

…keep wrangler/ajv/esbuild apart

Six pip pins (pg8000, scramp, asn1crypto, python-dateutil, six, PyYAML) are exact versions sealed by brain code and checked in CI, so a single bump can never pass; they are ignored and bumped by hand with a profile reseal. requirements-ci.txt is a resolved freeze with lockstep pairs, so pip updates are grouped into one PR. The npm dev group excludes wrangler (the deploy, backup and rollback tool, which no CI job runs) and ajv/esbuild (their bumps change the committed companion validator), and @types/node majors are ignored. CONTRIBUTING.md says when to merge these release-affecting PRs and what each special case needs.
#84 added .github/backup-wrangler, the exact Wrangler subset of wiki/package-lock.json that scripts/backup_wrangler_lock.py generates and CI checks. It gets no Dependabot entry; it follows wiki's wrangler. CONTRIBUTING.md now says a wrangler PR (or any npm PR that moves a package Wrangler depends on) must run 'python3 scripts/backup_wrangler_lock.py --write' in the same PR, since CI's check fails until it does.
@Deicyde
Deicyde merged commit 905c6de into main Oct 19, 2026
5 checks passed
@Deicyde
Deicyde deleted the claude/dependabot-config branch October 19, 2026 01:05
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.

ci: automate dependency update pull requests

1 participant