ci/woodpecker/pr/ci Pipeline was successful
CI's test step caught the gap: sourceFingerprint resolved next/package.json from apps/web, which P5 removed. The certification (fingerprint incl. @next/env expansion, symlink manifest, foreign-uid scan, build lock) defended typecheck against stale apps/web/.next output; the Vite SPA has no generated tree later gates consume, so the class it defended against is gone. Preflight keeps its other job, the missing-binaries check with exit 42. clean-generated.mjs (a .next quarantine helper) goes with it.