Determa State documentation¶
Determa State runs the same state machine definition consistently across languages. You define behavior once in YAML or JSON, then use a foreground engine call to create and advance a machine.
This tutorial targets Determa State 0.2.0 and numeric format: 1.
This site owns the manual and progressive tutorial. Independent, fully working
real-world applications live in
fruwehq/determa-state-examples.
Start here¶
- define a typed event and variable;
- create a machine;
- send one event;
- observe the same result in Python and Rust.
You do not need to understand the full specification first.
Continue with core statecharts for nested states, hierarchical dispatch, transition boundaries, choices, history, typed creation data, external values, portable YAML parsing, and stop behavior.
Then study CEL and structured actions to learn the complete portable expression profile, ordered guards, every structured action shape, and atomic fault rollback through matching Python and Rust traces.
Use components and owned instances when one machine must coordinate isolated reusable or dynamically created runtimes.
Continue with effects, faults, inspection, and hosting. It explains public effect intents, correlation, deterministic results, terminal states, and the boundary between the portable core and host infrastructure.
Finish the released format-1 progression with the durable execution-checkpoint tutorial and SQLite persistence and migration tutorial, then use the advanced persistence reference lab for packages, complete transforms, terminal maintenance, deterministic failure handling, resource limits, and lossless large identities.
What is portable?¶
The portable core is a pure foreground state transform. Your application supplies one input envelope and owns the returned state and emissions. Databases, queues, timers, brokers, and schedulers belong to the host around that core.
The coverage status maps every released specification section and core case to its guide or a specific non-user-facing classification. Normative details always come from the v0.2.0 specification.