Reference overview
Use this section to check APIs, persistent records, and error semantics. Start with the guide if you are new to Durable. Reference pages do not replace the complete procedures in Quick start and the recovery tutorial.
Find a rule
| Question | Reference |
|---|---|
| What are the preconditions for Run and Resume? | Execution contract |
| Can I recover after changing functions, the graph, inputs, or codecs? | Execution contract |
| When are recovery events emitted? | Execution contract |
| How do node results, child scopes, and Retry attempts relate? | Data model |
| How are ready, skipped, nil, and empty encodings distinguished? | Data model |
| What are Store ownership and CAS requirements? | Data model |
| How do I handle Busy, Conflict, and CheckpointError? | Error handling |
| What if saving commits and then reports an error? | Error handling |
Three core rules
- Publish after reliable confirmation: ordinary results confirm after the full node chain, including Aspects. Managed appends and message transactions have separate incremental boundaries. Publish each result after its storage confirmation.
- Restore valid results: confirmed nodes in valid scopes are not re-entered. Unconfirmed nodes restart from the beginning of their functions. Child results beneath a failed parent attempt cannot serve a new attempt.
- Reload the authority: a save error may occur after commit. Stop this execution and reload the authoritative record during recovery; the returned error alone cannot prove the write did not commit.
Normal skip means no business value and can finish successfully. Reliable storage or codec failure remains failure, even when its cause chain contains pulse.ErrSkipped.
Version and scope
This reference targets the Durable v0.1.0 API, depends on Pulse v0.5.0, and requires Go 1.26 or later. This is release preparation, not a claim of publication: check GitHub Releases; installation commands are unavailable before their respective tags are published. See Installation for the independent backend tag names and SQLite / PostgreSQL for complete usage. Historical performance pages retain their stated measurement versions.
Supports ordinary values, managed streams, explicit state, static child graphs, and built-in Retry and message budgets. MemoryStore provides only the in-process protocol; FileStore targets one local host. Hosts can compose approval waits and per-round tool calls with aspects and Cancel/Resume. A built-in wake-up service, distributed run management, deterministic replay, and exactly-once external effects are outside the current implementation.
Next steps
Read the Execution contract to check run parameters, or the Data model to implement a backend or Codec. For an existing error, start with Error handling, then decide whether to recover or create new business work.