mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-04 15:37:49 +00:00
`_calculate_state`, the `use_state_after` roll-back over state deltas of the full-state path, and the delta loop of the incremental path. The database reads that produce their inputs stay with the store. The two Python loops were inline in the handler; they are now functions, `_roll_back_state_over_deltas` and `_apply_current_state_deltas`, so that `tests/sync/test_rust_state_delta.py` can compare them with the Rust on random state maps and deltas. Behaviour is unchanged. One deliberate difference: when the start and end of the timeline disagree on a key that is in neither the timeline nor the previous state, `_calculate_state` sends whichever event its set iteration visits last. The Rust sends the one from the end of the timeline, the state the client should end up with. The test allows the Python either. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0194eNQP5weBtVMg8NKtc6VU