- @app/storage med MockStorage + AwsStorage delas mellan API och worker
- Workerns readUrl() ger presignerad S3-URL i aws-läge (fixar mock-s3 404)
- sync-env-from-ssm.py hämtar /cibello/prod/* och skriver .env; first-deploy.sh kör det i prod
- /readyz returnerar 503 om app.aamos.healthCheck() misslyckas
- docs/SECRETS.md med rotations- och SSM-regler
- Implementerar eraseUser() i packages/database/src/gdpr-erasure.ts som
raderar/anonymiserar/pseudonymiserar alla personliga tabeller.
- DELETE /v1/me orkestrerar nu plan + transaktion + lagringsrensning.
- Enpersonshushåll raderas automatiskt; publika recept anonymiseras;
draft/private-recept raderas.
- Finansiella poster (subscriptions/store_transactions/subscription_events)
behålls under retention med slumpmässig pseudonym från
gdpr_retention_pseudonyms.
- audit_logs/domain_events anonymiseras; kvitton i kvarvarande hushåll
strippas på bild och OCR-text.
- Lägger till permanent residual-test (me.residual.test.ts) med
schema-diff-assertion mot information_schema.
- Uppdaterar docs/23 och docs/29 med implementerad mekanism.
- Migration 0021 för gdpr_retention_pseudonyms och nullable
cooking_sessions.started_by_user_id.
- DELETE /v1/me soft-deletar users, så users-cascade fyrar aldrig.
- Samlar distinkta bildnycklar från ai_corrections, ai_training_bank och
scan_jobs och raderar dem via storage.deleteObject innan DB-radering.
- S3-fel loggas och avbryter inte raderingen.
- Raderar explicit ai_corrections (ai_training_bank cascadar) och scan_jobs.
- Lägger till deleteObject i StorageService (mock + AWS/DeleteObjectCommand).
- Uppdaterar docs/28-lärande-loop.md med faktisk mekanism och retention.
- Tester: verifierar noll rader kvar och storage.deleteObject-anrop.
Relaterat: skiva-1-fixrunda, blockerande GDPR-hål.