Dependency management policy

This policy applies to reusable workflows, composite actions, queue automation, Nix inputs, GitHub Action references, and the Python and Nix test tooling in the ci repository. Dependency updates can change the permissions and trust boundary inherited by every caller, so they receive security review.

Inventory and provenance

The authoritative dependency records are flake.lock, Python dependency metadata, workflow and action references, and release scripts. Action references are immutable commit SHAs. This repository has no GitHub-supported dependency manifest for the dependency-review action to compare, so the reusable dependency-review workflow is tested as a caller contract; the repository's own Nix lock and action surface are checked by flake validation, Dependabot, the workflow contract validator, CodeQL, and repository tests.

Selection and review

Maintainers review upstream provenance, maintenance status, security advisories, licensing, compatibility, and permission changes. Updates to a reusable workflow identify affected callers and include a representative contract test. Inputs from callers are treated as untrusted and are validated or passed through quoted environment variables. Lockfiles and generated release metadata are updated together with their declarations.

Release gate and exceptions

Before a source release, applicable dependency, CodeQL, lock-health, contract, and test checks must pass. A high- or critical-severity finding, an unreviewed license problem, a failed provenance check, or an undocumented permission expansion blocks release. The only exception is a reviewed, time-bounded pull-request record that names the component, explains why it is not exploitable here, assigns an owner, and gives a remediation date. security/vex.json records reviewed non-affectability statements in OpenVEX form; it does not waive an affectable finding.

Update and rollback

Updates are exercised against the repository's contract tests and a representative caller. A regression is rolled back by reverting the lockfile, action pin, or workflow change, then tracked with a follow-up issue. Emergency security updates use the smallest safe change and receive normal review retrospectively if immediate action is required.