{"id":"moving-avg-sum-invariant","text":"`self._sum == sum(self._queue)` holds after every `next()` call in `MovingAverage`; if this invariant breaks, all subsequent averages silently return wrong values.","truth_value":"IN","source":"entries/2026/06/06/moving-average-from-data-stream-solution.md","source_url":"","source_hash":"","justifications":[],"dependents":[],"metadata":{},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"moving-avg-sum-invariant","truth_value":"IN","reason":"premise"}]}}