Graph checkpointing is short-term execution persistence. Harness memory and stores are separate concerns.
LangGraph makes this distinction directly:
- checkpointers store graph state by thread and checkpoint id
- stores provide long-term memory across threads and conversations, with hierarchical namespaces, metadata, and optional vector search
Graph owns:
- checkpoints
- channel values
- channel versions
- pending writes
- active tasks
- interrupts
- state history and forks
Harness/store owns:
- chat history storage
- semantic memory
- user/application records
- model/tool artifacts
- usage and cost records
- provider traces
The graph can pass a StoreRegistry through GraphContext, but graph execution
must not assume any specific store backend.