Skip to content

chore(ci): supply-chain minimum-release-age gate + Renovate onboarding - #421

Merged
JosephSamirL merged 2 commits into
mainfrom
chore/supply-chain-age-gate
Jul 27, 2026
Merged

chore(ci): supply-chain minimum-release-age gate + Renovate onboarding#421
JosephSamirL merged 2 commits into
mainfrom
chore/supply-chain-age-gate

Conversation

@abbaseya

Copy link
Copy Markdown
Collaborator

What

Onboards javascript-sdk to the shared supply-chain controls in
convertcom/supply-chain — the
reference PR for the pattern being rolled out to the tracking script, the
Shopify app, and all six FullStack SDKs.

Two files:

  • renovate.json — extends the shared Renovate preset (minimumReleaseAge: 3 days, @convertcom/* exempt, GitHub Action SHA-pinning + maintenance).
  • .github/workflows/dep-age-check.yml — runs the shared composite age gate on every PR.

Why

Enforce a minimum release age wherever we install dependencies, to blunt
smash-and-grab supply-chain attacks (Claudiu's #developers ask · Asana
1216667157595351). Two complementary layers:

  1. Renovate holds back a dependency-update PR until the new version has aged past the 3-day floor (the update-proposal side).
  2. dep-age-check fails any PR that adds a lockfile dependency younger than 72h (the per-PR side), so a fresh dep can't be merged regardless of who added it. It reads the committed lockfile at PR time, so it always reflects current main.

Rollout

  • Warn mode for now (mode: warn) — reports but does not block, for a short bake.
  • After confirming no false positives on main, flips to mode: block + dep-age-check becomes a required status check.
  • The action is pinned by commit SHA (convertcom/supply-chain@1e6559c), per our own pinning policy; Renovate keeps it current.

Notes

  • @convertcom/* is exempt everywhere, so our internal release chain never stalls on its own freshly-published packages.
  • Zero third-party runtime deps in the gate itself.

🤖 Generated with Claude Code

@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@abbaseya
abbaseya force-pushed the chore/supply-chain-age-gate branch from 5dec0b3 to f83b52d Compare July 22, 2026 23:45
@abbaseya
abbaseya marked this pull request as draft July 22, 2026 23:57
@abbaseya abbaseya self-assigned this Jul 23, 2026
…e qa install

Supply-chain hardening (Asana 1216667157595351):
- .yarnrc.yml: npmMinimalAgeGate 4320 (3 days) + npmPreapprovedPackages
  @convertcom/* — Yarn refuses to install a dependency version younger than
  3 days (the smash-and-grab filter), exempting our internal scope.
- qa.yml: freeze the dependency install (yarn -> yarn install --immutable) so
  CI installs strictly from the committed lockfile.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@abbaseya
abbaseya force-pushed the chore/supply-chain-age-gate branch from f83b52d to 26f295e Compare July 24, 2026 15:26
@abbaseya
abbaseya marked this pull request as ready for review July 24, 2026 15:28
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@abbaseya
abbaseya requested a review from a team July 24, 2026 16:33
@sonarqubecloud

Copy link
Copy Markdown

@JosephSamirL
JosephSamirL merged commit 028e65c into main Jul 27, 2026
5 checks passed
@JosephSamirL
JosephSamirL deleted the chore/supply-chain-age-gate branch July 27, 2026 07:52
@me2resh

me2resh commented Jul 27, 2026

Copy link
Copy Markdown

nice!!!!
Good inspiration to avoid noisy supply chain attacks

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.

3 participants