Skip to content

ci(workflows): add monthly cargo outdated dependency scan#8176

Open
ConYel wants to merge 1 commit into
zeroclaw-labs:masterfrom
ConYel:ci/cargo-outdated
Open

ci(workflows): add monthly cargo outdated dependency scan#8176
ConYel wants to merge 1 commit into
zeroclaw-labs:masterfrom
ConYel:ci/cargo-outdated

Conversation

@ConYel

@ConYel ConYel commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Design

Why monthly, not daily?

Outdated dependencies are a maintenance concern, not a security emergency. A daily scan would desensitize the team to the output β€” noise that gets ignored. Monthly gives a regular, low-pressure pulse.

The advisory scan (daily-audit.yml) runs daily and catches security-relevant advisories. They serve different purposes:

Scan Cadence Surface When to care
Advisory (cargo deny check advisories) Daily CVEs with known security impact Immediately
Outdated (cargo outdated) Monthly Rust crates + toolchain versions When triaging maintenance

Toolchain versions included

The issue body includes rustc --version and cargo --version alongside the outdated crate table. Useful context when deciding whether to bump the pinned toolchain separately from crate updates.

Why --exit-code 1?

cargo outdated defaults to exit 0 even with outdated deps. Passing --exit-code 1 makes it exit 1 if anything is outdated, which we use to trigger issue creation. Without this flag, we'd need to grep the output β€” brittle.

Dedup logic (same pattern as daily-audit)

If an "Outdated dependencies found" issue is already open, the workflow skips creation. This prevents a pile-up of monthly issues that nobody triaged. If you close the issue without fixing the deps, next month's scan opens a fresh one.

Issue body

The created issue contains the toolchain versions and cargo outdated output in a code block plus a link to the workflow run, making it easy to see what's stale without running the tool locally.

Files changed

File Change
.github/workflows/monthly-outdated.yml +116 lines: New workflow for monthly outdated dependency scan

What this completes in RFC #7675

Phase Item Status
1 cargo audit βœ… #8129
1 Lockfile integrity βœ… #8056
1 npm dependency review βœ… #8056
1 Semgrep (PR) + CodeQL (master) βœ… ci/codeql-static-analysis
2 SBOM generation (Rust + npm) βœ… ci/sbom-generation
2 Trivy container scanning βœ… ci/trivy-container-scanning
3 cargo outdated monthly ⬆️ This PR
3 Cosign signing + SLSA provenance ❌
4 deny.toml hardening ❌

Sliding steadily through the RFC. Two items left: Cosign/SLSA (Phase 3) and deny.toml policy (Phase 4).

Security & Privacy Impact

  • New permissions, capabilities, or file system access scope? (Yes β€” issues: write added for automated issue creation)
  • New external network calls? (Yes β€” cargo install cargo-outdated downloads from crates.io; cargo outdated queries crates.io for version info)
  • Secrets / tokens / credentials handling changed? (No)
  • PII, real identities, or personal data in diff, tests, fixtures, or docs? (No)

Compatibility

  • Backward compatible? (Yes β€” new workflow, zero changes to existing CI)
  • Config / env / CLI surface changed? (No)

Rollback

git revert removes the workflow file with no side effects.

Phase 3 of RFC zeroclaw-labs#7675 (Job 7). Runs on the 1st of each month, captures
toolchain versions (rustc, cargo) alongside crate status, opens a GitHub
issue with dependencies label when any dep is outdated. Deduplicates
β€” links to existing issue if one is still open.
@github-actions github-actions Bot added the ci Auto scope: CI/workflow/hook files changed. label Jun 22, 2026
@Audacity88 Audacity88 added enhancement New feature or request type: ci dependencies Auto scope: dependency manifest/lock/policy changed. domain:ci CI domain risk: high Auto risk: security/runtime/gateway/tools/workflows. size: S Auto size: 81-250 non-doc changed lines. labels Jun 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Auto scope: CI/workflow/hook files changed. dependencies Auto scope: dependency manifest/lock/policy changed. domain:ci CI domain enhancement New feature or request risk: high Auto risk: security/runtime/gateway/tools/workflows. size: S Auto size: 81-250 non-doc changed lines. type: ci

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants