Skip to content

fix(deps): bump nanoid to 3.3.18 (high GHSA-2v37-7h3g-55p8) - #770

Merged
Kamirus merged 1 commit into
mainfrom
bot/depbot-autofix/613
Aug 17, 2026
Merged

fix(deps): bump nanoid to 3.3.18 (high GHSA-2v37-7h3g-55p8)#770
Kamirus merged 1 commit into
mainfrom
bot/depbot-autofix/613

Conversation

@caffeine-ci-bot

Copy link
Copy Markdown
Contributor

Automated fix from the security-autofix pipeline in caffeinelabs/infra.

Dependabot alert #613nanoid3.3.18 (high, GHSA-2v37-7h3g-55p8).

A coding agent (Cursor) upgraded the vulnerable dependency to the fixed
version, regenerated the lockfile, and made the minimal code changes needed to
keep the build coherent. The diff is intended to be small and obviously
correct.

Review like any PR:

  • Confirm the version bump matches the advisory's fixed version and the
    lockfile change is consistent.
  • Sanity-check any code edits the upgrade forced.
  • Run CI. If the fix is wrong or incomplete, just close this PR — the workflow
    won't reopen it while this bot/depbot-autofix/613 PR exists, and the
    alert stays in the daily/weekly digest until it's resolved.

🤖 Generated by the security-autofix workflow via Cursor.

@github-actions

Copy link
Copy Markdown
Contributor

Cursor AI review

👍 APPROVE — looks safe to merge

Category Assessment Details
Summary Lockfile-only bump of nanoid in blog/package-lock.json from 3.3.17 → 3.3.18 (resolved URL + integrity), addressing Dependabot/GHSA-2v37-7h3g-55p8. No application or CLI/backend code changes.
Code Quality Minimal coherent lockfile edit; no speculative helpers or unrelated churn.
Consistency Matches typical npm security-autofix pattern; only blog/ lockfile touched; parent range postcssnanoid: ^3.3.16 still satisfied by 3.3.18.
Security Verified single resolved node_modules/nanoid entry at Head is 3.3.18 with matching tarball URL/integrity; no auth, integrity, or registry paths changed.
Tests No test surface; lockfile-only dependency pin with no behavioral source changes to cover.
Maintainability Isolated blog transitive dep pin; no schema/API/CLI surface impact.

Verdict

Decision: APPROVE
Risk: Very Low
Reason: Single-file blog/package-lock.json pin of nanoid 3.3.17→3.3.18 with no code or high-risk path changes; routine security dependency fix.


Generated for commit 2b499de

@automation-sa-sre automation-sa-sre left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval: the AI review verdict for 2b499de is APPROVE. See the "Cursor AI review" comment for details.

@Kamirus
Kamirus merged commit 3491d2c into main Aug 17, 2026
27 checks passed
@Kamirus
Kamirus deleted the bot/depbot-autofix/613 branch August 17, 2026 10:58
Kamirus added a commit that referenced this pull request Aug 20, 2026
Folds the 3.x line into `main` ahead of the 3.0.0 GA. 68 commits, 291
files.

`main` becomes the 3.x development and release line; `v3` is deleted on
merge. `v2` stays as an archive of the 2.x line with no release path.

## Squash this

`main` is governed by ruleset `main` (id 20838766) with
`required_linear_history` and no bypass actors, so a merge commit is
rejected — `allowed_merge_methods: ["squash", "merge"]` is contradictory
config that fails at merge time. Every one of main's last 40 commits has
a single parent, so linear history here is deliberate and consistently
applied, not incidental.

**Squash and merge** is therefore the method. Before merging, tag the
branch so the 68 commits survive its deletion:

```bash
git tag v3-final origin/v3 && git push origin v3-final
```

Safe to push: `release.yml` triggers only on `cli-v*`, so `v3-final`
fires nothing. Without it the commits become unreachable from any branch
once `v3` is auto-deleted — recoverable only through `refs/pull/*/head`.

Two alternatives, both rejected:

- **Rebase-linearize onto `main`.** Would keep all 68 commits *and*
satisfy linear history, but replaying them individually conflicts (first
failure at `319951b3 chore(cli)!: require Node >= 20…`) even though the
merge itself is clean. Resolving conflicts across 62 replays to land a
promotion is not worth it.
- **Temporarily drop `required_linear_history`, merge, restore.** Works
and puts all 68 commits in main's log, but fights a policy the repo
applies uniformly. The tag gets the same preservation without touching
the ruleset.

## Still blocking

- **One approving review.** `required_approving_review_count: 1` with no
bypass actors, and the PR author cannot self-approve.
- **Status checks**: `ci-ok`, `ci-ok-cli`, `ci-ok-mops`.

## No conflicts, and no sync needed

Test-merged locally: clean, zero conflicts. The two `nanoid` GHSA bumps
that were only on `main`
([#769](#769),
[#770](#770)) merge without
intervention — `nanoid 3.3.18` is present in both `blog/` and `docs/`
lockfiles in the merged tree. An extra `main` → `v3` sync beforehand
would have added a merge commit for nothing.

I also checked that `v3` content wins everywhere it must: `lastVersion:
'current'` in the Docusaurus config, the `main`-only release guard, the
consolidated `## Next` with no `## 3.0.0 (unreleased)` heading, no
`cli/legacy-lock-flag.ts`, and the release post and 3.x `mops-verify`
page both present.

## What lands

Breaking changes, each with its migration in the changelog's **Migrating
from 2.x** list:

- `dfx` support removed outright — no `moc` fallback, no `--replica`, no
`toolchain init` / `moc-wrapper`, no `watch --deploy` / `--generate`,
`dfx` rejected in `[package]`
- Every toolchain tool must be pinned: `moc`, and `pocket-ic` for
replica tests / `bench` / `--check-deploy`, with no silent default.
`[optimize]` requires a `wasm-opt` pin and no longer rewrites
`mops.toml` from a build-time network lookup
- One lockfile model: `--locked` replaces `--lock
<check|update|ignore>`, plain installs self-heal, the `CI` env-var
auto-detection is gone
- Integrity verified at download time; `mops verify` is the on-disk
audit
- `.most` required for `check-stable` baselines
- Node.js >= 20; `set-network` / `get-network` and vessel migration
removed
- Stricter defaults: unknown flags before `--` rejected, `watch`
conservative, `test` verbose, `info --versions` newest-first

Plus the install-engine work — parallel downloads, batched registry hash
fetches, single-pass resolution, self-healing on transient network
failures — and a long tail of resolution, `sync`/`add`/`remove` and
cache fixes.

## After merging

1. Re-enable squash merging.
2. Rename `blog/blog/2026-08-19/` to the GA date — the post is dated by
directory and the release tag is what publishes it.
3. Run **Prepare CLI release** → `major`. `cli/package.json` is at
`2.24.0`, so this produces `3.0.0` and rolls the single `## Next` into
one `## 3.0.0`.
4. Merging the release PR pushes `cli-v3.0.0`, which publishes npm, the
GitHub Release, `cli.mops.one`, and the docs canister — the deploy that
makes 3.x the site root and moves 2.x to `/2.x`.
5. Repoint or drop the npm `next` dist-tag, which otherwise keeps
serving `3.0.0-beta.5`.
6. [#711](#711) currently shows
the whole `v3` delta because its head branches off `v3`; that collapses
back to its own three commits once this lands, with no rebase.

CI here runs against the full 68-commit delta, so it is a real signal
rather than a formality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Michael Morandi <michael.morandi@caffeine.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: caffeine-ci-bot[bot] <249119985+caffeine-ci-bot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

2 participants