--- id: plugin-ecosystem/a-plugin-install-is-not-pinned-so-a-review title: "A plugin install is not pinned, so a review would bind a repository rather than code" theme: plugin-ecosystem status: open created: 2026-08-04 date_source: stated order: 1 --- **A plugin install is not pinned, so a review would bind a repository rather than code.** `fetch.ts:70` is `git clone --depth 1 ` — no ref — so it takes whatever the default branch points at when the install runs. A plugin reviewed at commit X installs at whatever was pushed since, and `--depth 1` leaves no history to compare against. This is the shape of the npm attack already documented in `CLAUDE.md` (2026-08-04), and the same shape as the Chrome Web Store's real failures — not bad extensions passing review, but good ones sold or compromised and then pushing an update to users who had already accepted them. Fix: a `reviewedCommit` on the catalogue entry, checkout detached at that SHA, and **verify `rev-parse HEAD` matches or refuse**. The verification is the part that matters. An update then becomes "a new reviewed SHA exists" — a catalogue change rather than something the author triggers.