{"id":"reads-are-not-pure-across-domains","text":"Reading has side effects across multiple domains: KV get triggers read repair (pushing non-dominated versions back to stale replicas), and email get unconditionally marks messages as read — observation modifies state as an unavoidable consequence, making \"read-only\" a leaky abstraction throughout the codebase.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["kv-read-repair-on-get","email-service-get-email-marks-read"],"outlist":[],"label":"Two independent domains (distributed KV, email) both attach mandatory side effects to read operations, showing that reads-with-side-effects is a cross-cutting pattern rather than a domain-specific quirk"}],"dependents":["reads-are-active-convergence-engines"],"metadata":{"last_reviewed":"2026-06-06T06:26:57","review_result":"pass"},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"reads-are-not-pure-across-domains","truth_value":"IN","reason":"SL justification valid","antecedents":["kv-read-repair-on-get","email-service-get-email-marks-read"],"label":"Two independent domains (distributed KV, email) both attach mandatory side effects to read operations, showing that reads-with-side-effects is a cross-cutting pattern rather than a domain-specific quirk"},{"node":"kv-read-repair-on-get","truth_value":"IN","reason":"premise"},{"node":"email-service-get-email-marks-read","truth_value":"IN","reason":"premise"}]}}