mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-26 21:26:39 +00:00
* fix(runtime): preserve canonical delta-history order in cache CachedHistorySaver composed a parent checkpoint's channel writes from CheckpointTuple.pending_writes in storage order, but the saver's authoritative get_delta_channel_history orders writes by (task_id, idx). On the in-memory backend pending_writes follows task-arrival order, so a fan-out super-step (several parallel tasks writing one channel in a single checkpoint) was materialized in a different order with the cache enabled than with the bare saver, breaking the cache's transparency invariant. Sort a checkpoint's channel writes by task_id in _channel_writes, restoring the canonical (task_id, idx) order while preserving each task's internal idx sequence. The sort is a no-op on sqlite and postgres, whose pending_writes already arrive ORDER BY task_id, idx. Add async and sync regression tests over a real InMemorySaver seeded with a fan-out checkpoint whose writes arrive out of task_id order; both diverge from the inner saver's native walk without the fix and match with it. Signed-off-by: CorgiBoyG <111257566+CorgiBoyG@users.noreply.github.com> * docs(runtime): clarify cached saver ordering contract --------- Signed-off-by: CorgiBoyG <111257566+CorgiBoyG@users.noreply.github.com> Co-authored-by: Willem Jiang <willem.jiang@gmail.com>