Generated lockfile on dev LXC (Node 20, npm 10). Dockerfile now uses npm ci --omit=dev which requires the lockfile and is more deterministic than npm install. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>