e4e2fa5bc8
The catch-all `lib/` pattern in both .gitignore and .dockerignore (intended to exclude Python venv lib dirs) silently swallowed `web/src/lib/utils.ts`. That's why every Docker build got "ENOENT /web/src/lib/utils" — the file was never committed and never copied into the container, but local builds worked because the file existed on disk. Anchor `lib/` and `lib64/` to the repo root with `/lib/` and `/lib64/`, then add the previously-ignored utils.ts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>