Some checks failed
CI / Unit & Component Tests (pull_request) Failing after 2m33s
CI / OCR Service Tests (pull_request) Successful in 17s
CI / Backend Unit Tests (pull_request) Successful in 4m12s
CI / fail2ban Regex (pull_request) Successful in 38s
CI / Compose Bucket Idempotency (pull_request) Failing after 11s
CI / Unit & Component Tests (push) Failing after 2m33s
CI / OCR Service Tests (push) Successful in 16s
CI / Backend Unit Tests (push) Successful in 4m16s
CI / fail2ban Regex (push) Successful in 38s
CI / Compose Bucket Idempotency (push) Failing after 11s
nightly / deploy-staging (push) Failing after 1m46s
Adds a second binding invariant section to ADR-012 covering the duplicate-id mechanism named in #553's follow-up investigation: same resolved module URL referenced via two distinct vi.mock id strings → @vitest/browser-playwright leaks an orphan Playwright route → birpc-closed crash in the next session. Records the rule (one canonical id per mocked module, prefer the spelling production uses, no-extension for .svelte rune modules), the in-suite detector (no-duplicate-mock-ids.test.ts), and the patch-package backport of vitest PR #10267 with its removal trigger. Extends the existing Consequences enforcement list from four layers to six, adding the duplicate-id detector and the patch-package layer. Refs: #553 · vitest-dev/vitest#9957 · vitest-dev/vitest#10267 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>