# ADR-012 — Retention و خط قرمزِ حذف را چگونه انتخاب کنیم؟

How do we choose retention and deletion limits?

Status: proposed · Date: 2026-10-15

## مسئله / Context

زمان replay طولانی‌تر، recovery را ساده‌تر ولی هزینه و ریسک داده را بیشتر می‌کند.

Longer replay simplifies recovery but increases cost and data risk.

## گزینه‌ها / Alternatives

یک روز، هفت روز، سی روز؛ backup جدا و retention متناسب با classification.

One, seven, or thirty days; separate backups and classification-based retention.

## انتخاب فعلی / Choice

E08 هفت روز فقط فرضِ سناریو است؛ تا نیاز outage و سیاست داده معلوم نشود accepted نمی‌شود.

E08 seven days is only a scenario assumption; acceptance needs outage requirements and data policy.

## چرایی و trade-off / Rationale and trade-off

horizon باید outage+recovery را با حاشیه پوشش دهد؛ پاک‌شدن Kafka tombstone به‌تنهایی اثبات حذف و عدم احیا نیست.

The horizon should cover outage/recovery with headroom; Kafka tombstone removal alone does not prove deletion/non-resurrection.

## فرض‌ها / Assumptions

E07 نرخ/اندازه؛ replica سه‌تایی فقط سناریوی HA؛ WAL کل دیتابیس جدا اندازه‌گیری می‌شود.

E07 rate/size; three replicas are an HA scenario; measure whole-database WAL separately.

## روش آزمون / Validation

replay پس از افق؛ restore backup با deletion guard؛ ثبت هزینه و فضای آزاد.

Beyond-horizon replay, guarded backup restores, cost/free-space checks.

## بازنگری / Revisit

قانون داده، outage واقعی، نرخ تغییر یا هزینهٔ retention هر کدام تغییر کرد، تصمیم تازه لازم است.

Data policy, observed outages, change rates, or retention costs can trigger a new decision.

DDIA: 1, 4, 6, 12, 14
