Verify npm dependency signatures before builds (#426)

## Summary

Supersedes #402 with its changes rebased onto current `main` and the
merge conflict resolved. The original PR is left unchanged.

- Run `npm audit signatures` after installation and before `npm run all`
in the test and checksum-update workflows.
- Preserve the current JSON checksum manifest path
(`src/download/checksum/known-checksums.json`).
- Verify registry signatures and available provenance attestations
without requiring every dependency to publish provenance.

Related: astral-sh/setup-uv#1027 adds the same verification; #401
separately hardens npm installation defaults.

## Validation

Using Node 24.19.0 (matching `.nvmrc`) and npm 11.10.0:
- `npm ci --ignore-scripts` passed (reports existing dependency
vulnerabilities; dependency files are unchanged).
- `npm audit signatures` passed: 547 registry signatures and 97
attestations verified.
- `npm run all` passed: 7 suites, 99 tests; no generated or formatting
changes.
- `actionlint` passed.
- `zizmor` reports the same 26 low-severity findings on this branch and
`main`, with no new findings.
- `git diff --check` passed.

Refs: pi-session 01a1399e-1a99-7314-9573-9a982ea1bb3f

Co-authored-by: zaniebot <242828183+zaniebot@users.noreply.github.com>
This commit is contained in:
Kevin Stillhammer
2026-10-14 11:05:12 +02:00
committed by GitHub
co-authored by zaniebot
parent a737711ea8
commit f2f46687ac
2 changed files with 6 additions and 1 deletions
+2
View File
@@ -31,6 +31,8 @@ jobs:
cache: npm
- run: |
npm ci --ignore-scripts
- name: Verify npm package signatures
run: npm audit signatures
- run: |
npm run all
- name: Check all jobs are in all-tests-passed.needs
+4 -1
View File
@@ -23,7 +23,10 @@ jobs:
run:
node dist/update-known-checksums/index.cjs
src/download/checksum/known-checksums.json ${{ secrets.GITHUB_TOKEN }}
- run: npm ci --ignore-scripts && npm run all
- run: |
npm ci --ignore-scripts
npm audit signatures
npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with: