Dependency Management¶
KiCad MCP Pro uses reviewable dependency declarations, lockfiles, audit jobs, and pinned release infrastructure to reduce supply-chain risk.
Dependency sources¶
| Ecosystem | Primary files | Policy |
|---|---|---|
| Python | pyproject.toml, uv.lock |
Use uv lockfiles and review dependency updates through pull requests. |
| Node / npm / pnpm | package.json, pnpm-lock.yaml, package-level lockfiles |
Use lockfiles and Corepack-managed package managers. |
| Docker | Dockerfile |
Pin base images by digest and avoid unpinned package-manager bootstrap steps. |
| GitHub Actions | .github/workflows/*.yml |
Pin third-party Actions to full commit SHAs and keep job permissions minimal. |
| Rust / Tauri | Cargo manifests and lockfiles where present | Keep generated lockfiles under version control when used for release artifacts. |
Automated update ownership¶
GitHub Dependabot is the single normal dependency-update source for this repository.
.github/dependabot.yml covers the root uv project, npm/pnpm package locations,
GitHub Actions, Docker/Docker Compose, and the Tauri Cargo project. Renovate is not
part of the active update path, so the repository does not keep a second bot
configuration that could create duplicate update pull requests.
Dependabot runs weekly on Monday using the repository's Europe/Istanbul maintenance window. Routine minor/patch version updates are grouped per ecosystem and package-manager boundary to reduce PR and CI churn; major updates remain individual pull requests. The npm/pnpm configuration uses separate single-directory entries for the root pnpm project, the ChatGPT Apps npm project, the fixture pnpm package, and the npm wrapper so Dependabot does not mix independent lockfile/workspace scopes in one update job. Docker version automation is more conservative: only patch updates are grouped, leaving runtime-sensitive image minor/major changes for explicit maintainer review. Security updates use separate groups and are never mixed with routine version-update groups.
Dependabot pull requests are ordinary protected pull requests: required CI and the
main ruleset still apply, and no dependency bot is allowed to bypass those gates.
Mergify provides a serial, one-PR-at-a-time queue for the routine grouped version
updates only. The queue explicitly mirrors every required status-check context from
.github/rulesets/main.json. Eligibility and required-check conditions are identical at
queue and merge time so strict up-to-date rulesets use Mergify's in-place check model
instead of a second draft-PR CI phase. Automatic GitHub ruleset discovery is
defense-in-depth rather than the enforcement source. Repository regression tests prevent
ruleset/check or queue/merge-condition drift. The queue uses squash merges and does not
retry failed checks automatically.
Human-authored, release, security, major, and otherwise ungrouped dependency pull
requests remain a maintainer decision.
Lockfile maintenance¶
When a supported dependency update changes resolution, Dependabot updates the matching manifest and lockfile together where the ecosystem supports it. The tracked lockfiles remain authoritative build inputs:
- Python:
pyproject.toml+uv.lock; - pnpm/npm:
package.json+pnpm-lock.yamlor the package-localpackage-lock.json; - Rust/Tauri:
src-tauri/Cargo.toml+src-tauri/Cargo.lock.
Lockfile-only refreshes that are not caused by an available dependency version are a maintainer task and must use the repository's pinned toolchain. CI uses frozen/locked installs and therefore rejects stale or unexpectedly regenerated lockfiles.
Update process¶
- Dependabot opens either a routine ecosystem group or an individual higher-risk dependency pull request from the default branch.
- Review the dependency source, package name, version change, release notes, and license impact.
- Run the required CI, security checks, tests, and relevant package builds.
- Confirm the matching lockfile changed only as expected.
- Routine grouped minor/patch version updates may enter the Mergify queue automatically; the GitHub ruleset and required checks remain mandatory.
- Security, major, runtime-sensitive, release, human-authored, and ungrouped updates require an explicit maintainer merge decision.
Vulnerability monitoring¶
Dependabot alerts and Dependabot security updates own automated vulnerable-dependency
remediation. Dependency audit scripts, CodeQL, Gitleaks, Trivy, and Scorecard provide
additional detection and policy evidence. Security-sensitive updates should be
prioritized according to SECURITY.md.
Vendoring and generated code¶
Vendored code and generated artifacts should be avoided unless there is a clear release or interoperability reason. If unavoidable, document:
- upstream source and version;
- license;
- update procedure;
- verification command;
- reason the dependency cannot be consumed through normal package management.
Release dependency evidence¶
Release workflows should produce SBOMs, checksums, and provenance evidence when supported by the artifact class. See ../security/release-security.md and ../security/release-integrity.md.