All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m8s
CI / OCR Service Tests (pull_request) Successful in 17s
CI / Backend Unit Tests (pull_request) Successful in 4m25s
CI / fail2ban Regex (pull_request) Successful in 38s
CI / Compose Bucket Idempotency (pull_request) Successful in 57s
CI / Unit & Component Tests (push) Successful in 3m7s
CI / OCR Service Tests (push) Successful in 17s
CI / Backend Unit Tests (push) Successful in 4m15s
CI / fail2ban Regex (push) Successful in 39s
CI / Compose Bucket Idempotency (push) Successful in 58s
When the node_modules cache hits, npm ci is skipped and the prepare lifecycle (svelte-kit sync) never runs. frontend/tsconfig.json extends .svelte-kit/tsconfig.json which only exists after svelte-kit sync — so ESLint fails at tsconfig resolution on every cache-warm run. Adding an unconditional svelte-kit sync step after Paraglide compile and before Lint ensures .svelte-kit/tsconfig.json is always present regardless of cache state. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>