You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: harden CI verification, fuzzing, and release pipeline
- pin all verification upstreams by SHA: go-qrllib (v0.8.0 dilithium5 leg /
v0.9.0 mldsa87), pq-crystals, NIST ACVP, Wycheproof
- run check-shared in CI lint + release preflight; add Node 24 to matrix
- port all four fuzz harnesses to dilithium5; budget corpus writes (expected
throws no longer persisted); weekly scheduled campaign, deep reserved for
audit-level review; corpus-size guard with --clean-corpus
- verify packages are live on npm before attaching release assets
- zeroizePolyVec helper, seed-secrecy warnings, deterministic-mode and
hygiene cleanups; mark internal exports @deprecated ahead of next major
- codecov targets 100% with documented c8-ignore rationale policy; add
CONTRIBUTING.md (shared-file rule, pin-bump procedure, error/invariant
policy inherited from go-qrllib); security contact security@theqrl.org
Signed-off-by: JP Lomas <jp@theqrl.org>
Copy file name to clipboardExpand all lines: .github/workflows/release.yml
+29Lines changed: 29 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -37,6 +37,7 @@ jobs:
37
37
38
38
- run: npm ci
39
39
- run: npm run lint
40
+
- run: npm run check-shared
40
41
- run: npm test
41
42
- run: npm run build
42
43
- name: Verify dist/ is up to date
@@ -246,6 +247,34 @@ jobs:
246
247
npm publish "dist/tarballs/${tarball_name}" --access public
247
248
done < dist/released-packages.tsv
248
249
250
+
# Tags and GitHub releases were already created by multi-semantic-release
251
+
# in the prepare job; if npm publishing silently failed we would otherwise
252
+
# ship a tag/release with no npm artifact (this exact failure orphaned
253
+
# wallet.js v6.2.0). Verify the registry actually serves every released
254
+
# version before attaching release assets. Recovery runbook: RELEASE.md
255
+
# "Recovering an orphaned release".
256
+
- name: Verify packages are live on npm
257
+
run: |
258
+
set -euo pipefail
259
+
while IFS=$'\t' read -r _package_path package_name package_version _release_tag _tarball_name; do
260
+
echo "Verifying ${package_name}@${package_version} on the npm registry"
261
+
ok=""
262
+
for attempt in 1 2 3 4 5 6 7 8 9 10; do
263
+
served="$(npm view "${package_name}@${package_version}" version 2>/dev/null || true)"
264
+
if [ "${served}" = "${package_version}" ]; then
265
+
echo " confirmed on attempt ${attempt}"
266
+
ok=1
267
+
break
268
+
fi
269
+
echo " not yet visible (attempt ${attempt}/10); retrying in 15s"
270
+
sleep 15
271
+
done
272
+
if [ -z "${ok}" ]; then
273
+
echo "::error::${package_name}@${package_version} was published but is not served by the registry after 10 attempts. Tag and GitHub release exist without an npm artifact — follow RELEASE.md 'Recovering an orphaned release'."
0 commit comments