{"id":"expiration-cutoff-is-one-sided-despite-symmetric-matching","text":"`_expire_events` uses `watermark - duration` as a one-sided cutoff for buffer cleanup, while `contains()` is symmetric; this is correct because future events can only arrive at or after the watermark","truth_value":"IN","source":"entries/2026/05/29/topic-sliding-vs-tumbling-windows.md","source_url":"","source_hash":"","justifications":[],"dependents":[],"metadata":{},"explanation":{"steps":[{"node":"expiration-cutoff-is-one-sided-despite-symmetric-matching","truth_value":"IN","reason":"premise"}]}}