puppeteer was declared in package.json but never imported anywhere in
the codebase -- PDF generation goes through @react-pdf/renderer. Its
postinstall step downloaded a ~150-200MB Chrome build on every clean
`npm ci`, which exhausted the disk on the deploy host and failed the
build with ENOSPC.
That download was wasted work even when it succeeded: the runner stage
never copies /root/.cache/puppeteer out of the builder, so the browser
was discarded when the builder stage ended.
Also drops 633 lines of transitive dependencies from the lockfile.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ts-node is a devDependency and isn't available after a production
install; scripts/create-user.js only needs packages already in
dependencies so it runs on the deployed server.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>