From ec625252fbf20b34f8d71cd616bceb1259b1a7f3 Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Thu, 20 Aug 2026 19:00:06 +0330 Subject: [PATCH] docs(cache): align immutable dataset namespace --- docs/decisions/0011-lazy-redis-analytics-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/decisions/0011-lazy-redis-analytics-cache.md b/docs/decisions/0011-lazy-redis-analytics-cache.md index 8ef3ac0..4a250f5 100644 --- a/docs/decisions/0011-lazy-redis-analytics-cache.md +++ b/docs/decisions/0011-lazy-redis-analytics-cache.md @@ -31,7 +31,7 @@ Return `429 Too Many Requests` with `Retry-After` before enqueuing work. A manua Send SSE heartbeat events every 15 seconds. Retain run events for one hour for authorized `Last-Event-ID` replay. After replay retention expires, return/provide the current run snapshot and continue from new events rather than replaying another merchant’s or an unbounded event history. -Payment facts are immutable during the MVP, so PostgreSQL contains no cache-revision tables or invalidation triggers. Explicit dataset replacement is an administrative recovery workflow: it selects a different completed import run as the active snapshot and therefore creates a different Redis namespace. Any future live-write integration must define insert/update/delete invalidation in a separately approved specification. +Payment facts are immutable during the MVP, so PostgreSQL contains no cache-revision tables or invalidation triggers. The sole completed import run identifies the cache namespace. Dataset replacement and any future live-write integration require separately approved namespace-selection and invalidation specifications. Redis is a private disposable cache and coordination system, not a source of truth. PostgreSQL remains authoritative. Cached values contain approved aggregates only and exclude raw rows, payer-card keys, credentials, session tokens, and cross-tenant details.