Core concepts
Edge — one permitted movement
The transition table is the single source of permission. A node may propose next_state; only a listed edge permits the move.Three edge kinds
That’s all — no labels, no priority tiers. Prefer DeterministicRouter / SemanticRouter; they compile into edges at FSM build time. Hand-write edges only for a one-off guard or a bare End hop.
- deterministic — auto-commits when its guard passes; no router involved. Helper: edge_deterministic(src, tgt, guard=...)
- semantic — scopes the semantic router to a node or group target. Helper: edge_semantic(src, tgt, target_kind=...)
- fallback — safe stop when neither deterministic nor semantic yields a route. Helper: edge_fallback(src, tgt)
Python SDKpython
edge_deterministic(
"CalculateRefund",
"IssueRefund",
guard=lambda s: s.get("refund_amount", 0) > 0,
)
edge_fallback("CalculateRefund", "OutOfScope")Grounded in neosyntropy-framework/docs/concepts-explained.md §6.