Skip to content

chore: enforce 7-day minimum release age for supply chain hardening#550

Merged
backnotprop merged 3 commits intomainfrom
chore/supply-chain-age-gating
Apr 13, 2026
Merged

chore: enforce 7-day minimum release age for supply chain hardening#550
backnotprop merged 3 commits intomainfrom
chore/supply-chain-age-gating

Conversation

@backnotprop
Copy link
Copy Markdown
Owner

Summary

  • Adds minimumReleaseAge: "7 days" + internalChecksFilter: "strict" to Renovate config — PRs for GitHub Actions versions younger than 7 days won't be created
  • Adds minimumReleaseAge = 604800 to bunfig.tomlbun install / bun update won't resolve npm packages published less than 7 days ago

Motivation

The Bun 1.3.12 codesign regression (#541) exposed a gap: Renovate opened #548 just 2 days after the broken Bun release, which would have reintroduced the exact bug we hotfixed in v0.17.9. A 7-day hold period at both layers (CI dependency updates and local package resolution) provides a buffer for regressions and supply chain attacks to surface before they reach our toolchain.

Test plan

  • Verify Renovate respects the new config on next scheduled run (Monday)
  • Verify bun install with a freshly published package respects the age gate

Add age gating at two layers:

- Renovate: minimumReleaseAge + internalChecksFilter prevent PRs for
  GitHub Actions versions younger than 7 days
- Bun: minimumReleaseAge in bunfig.toml blocks bun install/update from
  resolving npm packages published less than 7 days ago

Motivated by the Bun 1.3.12 codesign regression (#541) — Renovate
opened #548 two days after the broken release, which would have
reintroduced the exact bug we hotfixed in v0.17.9. A 7-day hold also
mitigates supply chain attacks (e.g., Axios compromise) where malicious
packages are typically caught within hours but naive installs pull them
immediately.

For provenance purposes, this commit was AI assisted.
…e gate

Bumped after supply chain audit (maintainer verification, tarball diff,
age check):

- diff 8.0.3 → 8.0.4
- @anthropic-ai/claude-agent-sdk 0.2.86 → 0.2.92
- @openai/codex-sdk 0.116.0 → 0.118.0
- marked 17.0.5 → 17.0.6
- @types/node 25.5.0 → 25.5.2

Deferred @opencode-ai/sdk 1.3.5 → 1.3.15 (new cross-spawn runtime dep,
server spawning changes need integration testing).

Added @pierre/diffs to minimumReleaseAgeExcludes — current ^1.1.12
specifier can't resolve under the 7-day gate since 1.1.12 is only 6
days old, which would break fresh installs and CI.

For provenance purposes, this commit was AI assisted.
User-invocable only (/update-deps) — spawns parallel Sonnet sub-agents
to verify maintainers, publish age, tarball diffs, and provenance for
each outdated package. Safe packages get bumped, risky ones are deferred
to ~/.supply-chain/notes/ with review-by dates. Recap includes
previously deferred packages that still haven't been updated.

For provenance purposes, this commit was AI assisted.
@backnotprop backnotprop force-pushed the chore/supply-chain-age-gating branch from 01dd9eb to 28af701 Compare April 13, 2026 03:43
@backnotprop backnotprop merged commit 04848af into main Apr 13, 2026
4 checks passed
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.

1 participant