{"id":"cdc-before-after-contract","text":"Every `ChangeEvent` follows a strict before/after convention: INSERT has `before=None`, DELETE has `after=None`, UPDATE has both populated as full row copies, making events self-contained without querying the source database.","truth_value":"IN","source":"entries/2026/05/29/change-data-capture-cdc.md","source_url":"","source_hash":"","justifications":[],"dependents":[],"metadata":{},"explanation":{"steps":[{"node":"cdc-before-after-contract","truth_value":"IN","reason":"premise"}]}}