MISSING_CHECKPOINTER: persistence features need a checkpointer on compile()
# MISSING_CHECKPOINTER
```python
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.graph import StateGraph
checkpointer = InMemorySaver()
graph = builder.compile(checkpointer=checkpointer)
```
Functional API:
```python
from langgraph.func import entrypoint
@entrypoint(checkpointer=checkpointer)
def workflow(messages: list) -> str:
...
```
## Rules
- Every persistence feature (per-thread history, interrupts, time travel) requires the checkpointer. There is no default.
- InMemorySaver is for dev and tests. For local durable runs use SqliteSaver (`langgraph-checkpoint-sqlite`); for production use PostgresSaver (`langgraph-checkpoint-postgres`).
- Async graphs need AsyncSqliteSaver / AsyncPostgresSaver.
- In JS this is the MISSING_CHECKPOINTER error code.