diff --git a/src/data/collection.mjs b/src/data/collection.mjs index 85d3e76..2af9fb3 100644 --- a/src/data/collection.mjs +++ b/src/data/collection.mjs @@ -452,17 +452,24 @@ export const collected = [ 'operator can see what was suppressed without the list becoming a second address ' + 'book.', retention: { - summary: 'Kept until the operator removes them; nothing here expires on its own', + summary: + 'The delivery log is kept for a period the operator sets (180 days by default) and then ' + + 'swept; the suppression list does not expire', detail: - 'Stated plainly because it is the answer people assume the other way round: ' + - 'the delivery log, the suppression list and the per-person rate limits have no ' + - 'retention sweep, so they are as long as the site is old. Deleting an account ' + - 'detaches its rows from it rather than deleting them — a delivery history stops ' + - 'naming a person, and a suppressed address stays suppressed.', + 'A nightly sweep removes delivery-log entries, finished items from the send queue and the ' + + 'per-person rate-limit rows once they pass the horizon the operator has set for each — ' + + 'the defaults are 180 days for the log and 30 for the other two. Two things deliberately ' + + 'do not expire. An item still waiting to be sent is never swept however old it is, ' + + 'because it is a message the site still intends to deliver. And the suppression list is ' + + 'permanent by design: it records a standing decision to stop mailing an address, and ' + + 'ageing an entry out would mean mailing an address that already bounced or asked to be ' + + 'left alone. An operator can remove an entry from it deliberately, one at a time. ' + + 'Deleting an account detaches its rows from it rather than deleting them — a delivery ' + + 'history stops naming a person, and a suppressed address stays suppressed.', }, source: 'website server/db/schema.sql — engagement_sends, engagement_suppressions, ' + - 'notification_channel_prefs', + 'notification_channel_prefs; server/src/utils/engagementRetentionPrune.js', }, { id: 'deploy-game-data',