@@ -60,25 +60,34 @@ The full release gate is:
6060npm run check
6161```
6262
63- That command checks formatting, lint, strict types, unit/content contracts,
64- vinext compatibility, the portable Next.js export, and the Sites preview
65- artifact. Canonical VPS production files are written to ` out/ ` ; the
66- host-specific owner-preview bundle is written to ` dist/ ` , including fully
67- prerendered launch routes, static discovery files, a static 404 boundary around
68- the vinext handler, and the exact Sites project binding.
63+ That command checks formatting, lint, strict types, high/critical dependency
64+ advisories, exact third-party notices, unit/content contracts, vinext
65+ compatibility, the portable Next.js export, and the Sites preview artifact.
66+ Canonical VPS production files are written to ` out/ ` ; the host-specific
67+ owner-preview bundle is written to ` dist/ ` , including fully prerendered launch
68+ routes, static discovery files, a static 404 boundary around the vinext handler,
69+ and the exact Sites project binding.
6970
7071No application backend, remote CMS, analytics service, or web-font request is
7172needed. A normal build needs no runtime or build-time environment variables.
7273
73- ### Temporary build-dependency exception
74-
75- Vinext currently depends on ` image-size ` 2.0.2, and npm has no patched release
76- for GHSA-w3rx -r6r6-pgpr or GHSA-5p2g -fcmc-qvqq. The dependency is confined to
77- the owner-preview build: production deploys only ` out/ ` and runs no Node.js
78- process. Until a compatible fix exists, the test gate forbids filesystem
79- metadata image routes under ` src/app ` , which are the vinext path that invokes
80- the parser. Recheck this exception on every vinext or ` image-size ` update; do
81- not describe ` npm audit ` as clean while the two related high findings remain.
74+ ### Build-dependency security boundary
75+
76+ Vinext ` 1.0.0-beta.8 ` removes ` image-size ` from the installed npm dependency
77+ graph, so the exact lockfile passes ` npm audit --audit-level=high ` . Its
78+ published build tooling still embeds the affected ` image-size ` 2.0.2 parser,
79+ however. PyBLE's post-install step therefore adds reviewed fail-closed guards
80+ for the zero-length ICNS, HEIF, and JXL loops; installation fails if the pinned
81+ upstream source drifts. Timeout-bounded regression inputs exercise all three
82+ paths, and the generated notice explicitly retains the embedded parser's MIT
83+ attribution.
84+
85+ The build contract also forbids static image module imports and filesystem
86+ metadata image routes; authored images remain static ` public/ ` URLs with
87+ explicit dimensions. Production deploys only the checked ` out/ ` tree and runs
88+ no Node.js website process. Keep these defenses until vinext publishes tooling
89+ with a patched parser, then remove the local hardening only alongside its
90+ contracts and notice review.
8291
8392## Production deployment
8493
0 commit comments