{"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":["stream-join-correctness-depends-on-window-alignment"],"metadata":{},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"expiration-cutoff-is-one-sided-despite-symmetric-matching","truth_value":"IN","reason":"premise"}]}}