// RETENTION AND DELETION POLICYРусская версия
Draft. This is a working English translation — the Russian text is the original, and a lawyer has not yet reviewed it. The document may change before publication.

Data Retention and Deletion Policy (EU/US/IL)


1. The principle

⇄ S56·W4 (owner's decision of 2026-10-06): the client's data now has TWO periods, both 30 days from the LAST ACTION, with one reminder schedule. This replaces the earlier timers (1) "the model — 30 days from training", (2) "frames — 30 days after delivery, delivered orders only" and (4) "source photos — 30 days from upload". The cut-off on model replacement (3) is unchanged. ⟦ДЛЯ ЮРИСТА: формулировки этого раздела наши, по изменённому факту; сверить с текстом согласия на биометрию — его новая редакция biometric-2026-10-06-eu-us-il говорит то же⟧

2. What is deleted (storage objects)

✅ THE LINE ABOUT SOURCE PHOTOS WAS BROUGHT INTO LINE WITH THE NEW FACT ON 2026-08-30 (owner's decision, S36-W2). Source photographs now DO have a period: 30 days from upload (timer 4, §1). 🗄️ The background, so that the reader understands why this paragraph is long. A day earlier this said "with us — per the retention period", and that promised something the system did not do: the S35-W6 measurement enumerated ALL object deletion paths in apps/api — not one of them deleted a photo attached to an order by age, and the PhotoGcService sweeper only picks up ORPHANS (its "age" is a 2-hour grace period protecting uploads in flight). As an interim step the owner chose to bring the DOCUMENT into line with the behaviour (narrowing the promise), and only then named a number. ⚠️ The final legal wording is still for the lawyer to review — what is stated here is the FACT, not an approved edition.
CategoryWhere it livesDeleted
Source photos (user upload)R2/S3 (uploads/ + analysis/ — the reduced copy used for analysis, which carries the same face; presigned — S1); a copy is transferred to the external provider for trainingyes, the personal-data period — 30 days after the last action (§1 (1); ⇄ S56·W4, previously "30 days from upload"). BOTH prefixes are purged at once: the original and the derived copy. Plus — via "Delete now", at the client's request (a photo removed from the set), on account deletion (§7, the full cascade) and the sweeper for ORPHANED objects
The Likeness model (soul_id) — the biometric modelat the external provider (Higgsfield); we hold only the externalSoulId identifieryes, the personal-data period (§1 (1)) / extension / "Delete now"; the deletion request is forwarded to the provider and confirmed
Results (generated images)R2/S3 — `results/`, `redress/` AND `delivered/` (the redressed frames — the ones that go to the client; delivered/ — a copy of the delivered set, S35-W5) + CDN, delivered only via presigned linksyes, the order-data period — 30 days after the last action on the order (§1 (2); ⇄ S56·W4: for ALL orders per the boundary, not only delivered ones), all prefixes with `retention: 'delivery'` in the registry apps/api/src/s3/client-data-namespaces.ts — the list lives there, not here
The previous soul_id after a replacementat the provider + the identifier with usyes, once the window of about 5 days has passed (timer 3)
Intermediate generation artefacts⟦РЕШЕНИЕ: кэш/темп ИИ-провайдеров — уточнить у Наташи (N1) и провайдеров⟧yes / per the contract with the provider
Order recordsPostgres (orders, S1)on account deletion — deleted in full (§7). During the ordinary lifecycle — ⟦срок по налоговому/бухгалтерскому праву IL — юрист⟧
Payment recordsPostgres (payments)on account deletion — NOT deleted, de-identified (unlinked from userId/orderId; the amount / currency / date / txn remain), on the basis of GDPR Art. 17(3)(b) + tax retention (§7)
The consent logPostgres (consents)on account deletion — the records are deleted, but a PII-free snapshot (type / version / date) is retained in the deletion record as proof of consent (§7)
Order correspondence (client ↔ studio chat)Postgres (order_messages)yes, the same order-data period as the Results (§1 (2); product owner's decision of 2026-08-20, requirement R-10; ⇄ S56·W4 — for all orders per the boundary, for a draft — from the last message). Implemented: OrderRetentionService.purgeOrderData. On account deletion — deleted in full (§7), and the count of erased messages goes into the deletion record
The log of deletion facts (deletion receipt)Postgres (deletion_audits)retained (to demonstrate compliance with the policy); contains no PII and no biometrics: a hash of the id + counters + a snapshot of the consents
⚠️ Deletion must reach every copy: the object in R2/S3, the CDN cache (invalidation), and any temporary files at the AI providers. Deleting only from the database while the S3 object is still alive is not enough.

3. Period, starting point, extension

3.1. The periods (§0h, ⇄ S56·W4 2026-10-06): 30 days after the last action — for personal data (the model, source photos, profile) and for order data (frames, correspondence); the starting points are in §1. About 5 days — the recovery window when a soul_id is replaced.

3.2. The starting point of the 30 days is the last action (owner's decision of 2026-10-06, §1). ⟦ДЛЯ ЮРИСТА: прежде здесь стояла открытая развилка «от обучения / от выдачи / от последней активности»⟧

3.3. Extension is opt-in, by a click from the reminder or from the account: +30 days added to the deletion date, with no limit on the number of extensions (owner's decision of 2026-10-06); it extends the line on which it was clicked — personal data or a particular order's data; the extension is recorded as a consent. 3.3a. "Delete now" — on the same line, after confirmation; irreversible; the account, orders and payments remain. A V2 subscription is a separate future mode of permanent storage (outside the MVP).

3.4. The discount on a repeat session (Phase 0) does not by itself extend storage.

4. Requirements for automatic clean-up (for implementation, NOT in this window)

Stated as requirements for a future task (E4/E9/E10; the canonical tool is the retention scheduler, layer 4 of Phase 1):

5. Lawful exceptions to automatic deletion

Storage beyond the period is permitted only on a lawful basis, for example:

The exception concerns de-identified payment records, not biometrics: biometrics (photos + soul_id) are deleted in every case. Order records are deleted in full on account deletion — only the de-identified payment is retained on tax grounds.

5a. Account deletion — "the right to be forgotten" (implemented, spec 002)

Separately from the retention timers in §1, there is an explicit account deletion request:

6. Ownership and review

6.1. The owner of this policy is the data controller (⟦РЕШЕНИЕ: IL-юрлицо/DPO — владелец продукта⟧).

6.2. The policy is reviewed whenever the storage infrastructure or the jurisdictions change.

6.3. The policy is published (a public retention schedule is a requirement of BIPA-style laws).


Open decisions (summary)