mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-30 03:39:38 +02:00
snapshot_every was a knob for bounding reconstruction cost on deep threads. Benchmarks (notes/add_messages_replay_problem.md + scratch work on sr/add-messages-replay-bench) showed the add_messages fast-path (optimize/add-messages-fast-path) closes the quadratic replay cost for threads under ~1000 turns, where the crossover to snapshots makes sense. For deeper threads we'll ship a first-class compaction primitive instead. Removals: * DeltaChannel: snapshot_every ctor param, _writes_since_snapshot counter, should_snapshot() / snapshot_write() methods, counter threading through _apply_write / update / from_checkpoint / copy. * Pregel loop: post-checkpoint snapshot-injection block and SNAPSHOT_TASK_ID import + constant. * Checkpoint base: _overwrite_types() helper and the ancestor-walk short-circuit on user-emitted Overwrite in sync + async get_channel_writes. * InMemory + Postgres savers: same walk-terminator shortcut. The pre-delta blob terminator (seed-from-ancestor-blob) stays — it's required for migration correctness, not a snapshot optimization. * Tests for all of the above. Preserved: * Channel-level Overwrite semantics in DeltaChannel / BinOpAggregate: Overwrite still resets the value at reducer level; same-super-step dedup and InvalidUpdateError on multiple Overwrites still enforced. * Pre-delta migration seeding.