
 RUN  v5.0.4 C:/Users/trmit/.codex/.chatgpt-projects/g-p-6acc478730d88191a7563fa87dc7eb75/ready/Memeography

 ✓ tests/integration/backup-restore.test.ts > backups and restore > a backup is a consistent, complete, checksummed copy of the database and every picture 1830ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > media is stored once: a second backup of unchanged pictures adds no new copies 473ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > an interrupted backup leaves the earlier backups untouched and is never offered for restore 1244ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > concurrent backups are serialized (one at a time) and both come out complete 910ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > a backup taken while memories are being added is still consistent 1437ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > "Back up now" from the app: a duplicate request (same key) makes one backup; the list shows where backups live 634ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > a tampered backup is detected and a restore from it refuses before changing anything 2339ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > a restore refuses while Memeography is running on the collection 1875ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > a backup from a newer version (unknown migration) is refused, not forced into the wrong schema 2352ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > restore: brings back the chosen point in time, keeps the newer collection aside and as a backup, and re-applies later deletions 33997ms
 ✓ tests/integration/backup-restore.test.ts > backups and restore > retention keeps the newest automatic backups and every backup the owner made, and clears unused media 5079ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > the app says plainly which real AI is configured, what it would cost, and what would be sent 876ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > without the owner’s permission nothing is sent anywhere 68ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > another owner can neither give permission for nor analyze someone else’s memory 971ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > text-only permission: the picture is NOT sent; the request uses store:false, a strict schema and the server-side key 311ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > with explicit picture permission only the stripped preview is sent: no EXIF, no GPS, never the original file 109ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > invalid AI output is rejected after one correction attempt; nothing is saved and the app keeps working 106ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > output that tries to smuggle in a state, or infers a sensitive trait about the person, is refused 178ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > a model refusal ends that item honestly (AI_REFUSED) without retrying 93ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > an outage is retried later with backoff; when the service is back the same request completes 750ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > a long outage dead-letters the job with a visible failed state instead of retrying forever 353ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > a rejected API key and an exhausted quota fail that item at once, with a clear code 130ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > a slow service times out and is retried later (AI_TIMEOUT) 1755ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > the monthly budget is enforced before anything is sent 9ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > withdrawing permission stops future sending 124ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > the owner can confirm, edit, dispute or reject an AI interpretation; a disputed one is replaced by the owner’s account and never returns 332ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > the API key never leaves the server: not in responses, not in the database 2893ms
 ✓ tests/integration/openai.test.ts > real AI (OpenAI adapter) with explicit permission, honest failures and private media protection > without a key, real AI is simply off (with the reason shown) and everything else keeps working 220ms

 Test Files  2 passed (2)
      Tests  28 passed (28)
   Start at  15:19:50
   Duration  95.24s (tests 93%, import 5%, transform 2%)

