Transitions
- How it uses machines
- Attach state-machine movement to semantic state changes.
- Value
- Legal lifecycle movement and field updates stay aligned.
Building Blocks
Cohesive.Machines defines lifecycle states, legal transitions, perspectives, and coherence rules as semantic machine models.
A Cohesive machine defines which lifecycle states exist and which movements between them are legal. Other Cohesive blocks define what those movements do, how they execute, how users interact with them, and how they participate in larger workflows.
Most software systems contain state machines even when they are not named: status fields, approval flows, task lifecycles, order lifecycles, UI wizards, integration stages, and runtime orchestration states.
When those lifecycles live only in switch statements, status strings, or scattered validation checks, they become difficult to verify and evolve.
A machine is a labeled transition system. It can define:
Machines define legality, not execution. A machine can say that Draft may move to Submitted, but transitions, processes, APIs, and storage decide how that movement is requested, validated, persisted, audited, and surfaced.
That separation keeps the lifecycle analyzable without collapsing it into handler code.
Machine definitions should be checkable: every non-terminal state should have expected outgoing paths, terminal states should be explicit, guards should reference known fields, and perspectives should not invent impossible movement.
Cohesive.Machines makes state evolution a model that can be inspected, verified, projected, and refined.