PASS src/__tests__/unit/services/siteContentTranslation.test.ts segmented Site Content translation ✓ validates and round-trips the exact retry payload (4 ms) ✓ canonicalizes Site Content clientJobId before enforcing the 512-byte ASCII boundary (14 ms) ✓ canonicalizes Site Content clientJobId before enforcing the 512-byte emoji boundary (2 ms) ✓ canonicalizes Site Content clientJobId before enforcing the 512-byte normalization expansion boundary (1 ms) ✓ rejects unknown request field (1 ms) ✓ rejects missing contract version ✓ rejects wrong contract version (1 ms) ✓ rejects wrong resource type (1 ms) ✓ rejects non-string language ✓ rejects invalid source revision ✓ rejects invalid attempt token (1 ms) ✓ rejects empty segments (113 ms) ✓ rejects duplicate IDs (1 ms) ✓ rejects unknown segment field ✓ rejects non-object context (1 ms) ✓ rejects empty text ✓ enforces segment, character, payload, and context-depth bounds (7 ms) ✓ translates text only and returns every input ID in source order with unchanged context (1 ms) ✓ separates callback authority from polling metadata and advertises bounded capability (1 ms) ✓ rejects malformed stored encoding and invalid provider metrics (1 ms) ✓ rejects provider output with missing key ✓ rejects provider output with extra key ✓ rejects provider output with non-string value ✓ rejects provider output with empty translation PASS src/__tests__/unit/routes/jobsBulkContent.test.ts bulk-content job request validation ✓ accepts a valid multi-item request with arbitrary structured fields (3 ms) ✓ requires a UUID submission identity and client job identity (3 ms) ✓ normalizes first, accepting exactly 512 UTF-8 bytes and rejecting larger ASCII identities (1 ms) ✓ normalizes first, accepting exactly 512 UTF-8 bytes and rejecting larger emoji identities (1 ms) ✓ normalizes first, accepting exactly 512 UTF-8 bytes and rejecting larger normalization expansion identities (1 ms) ✓ uses the same canonical client job identity contract for job lookup (1 ms) ✓ rejects callback secrets in the request body (1 ms) ✓ rejects duplicate core keys supplied through fields (1 ms) ✓ rejects an item naming the offending ref when it has no translatable field (1 ms) ✓ rejects an item naming the offending ref when it exceeds the character cap (11 ms) ✓ rejects more than the max item count (1 ms) ✓ rejects duplicate refs after canonical normalization (1 ms) ✓ accepts refs at 100 characters and rejects refs at 101 characters (1 ms) ✓ accepts callbackUrl at 1000 characters and rejects callbackUrl at 1001 characters (1 ms) ✓ continues to reject invalid callback URLs within the length bound submitBulkContentJob ✓ creates a durable structured job and excludes the callback secret from canonical data (3 ms) ✓ returns the durable admission before queue drain settles (6 ms) ✓ preserves differing field-key sets when the stored payload is reconstructed for Bull (7 ms) ✓ normalizes legacy aliases and arbitrary fields into exact canonical field keys (7 ms) ✓ includes differing field-key sets in the submission fingerprint (7 ms) ✓ returns the existing job on canonically exact replay without replacing its callback secret (8 ms) ✓ returns the existing identity even after the original job reaches a terminal state (7 ms) ✓ returns 409 for a same-principal fingerprint conflict (7 ms) ✓ returns indistinguishable 404 for a different principal (7 ms) ✓ runs the credit gate only after confirming this submission is new (8 ms) ✓ preserves a committed job when immediate queue dispatch fails (7 ms) ✓ exposes the conflict error as a typed route error (6 ms) Test Suites: 2 passed, 2 total Tests: 51 passed, 51 total Snapshots: 0 total Time: 3.349 s Ran all test suites within paths "src/__tests__/unit/routes/jobsBulkContent.test.ts", "src/__tests__/unit/services/siteContentTranslation.test.ts".