CI runs `npm ci`, which fails outright without package-lock.json — the workflow could never have passed as committed. *.tsbuildinfo is incremental typecheck state and does not belong in the tree. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>