Saltar al contenido principal

topology

Since v1.1.0 · Top-level declaration

Grammar

topology <Name> {
nodes: [ <declared-name>, ... ]
edges: [ <source> -> <target> : <SessionRef>, ... ]
}

topology declares the process graph: which declared entities talk to which, over which session protocols.

What the runtime actually does

The checker (type_checker::check_topology_liveness) runs a genuine DFS gray/black cycle detector and emits a Honda-liveness violation for a cycle in which every edge is receive-first. This is a narrow sufficient condition — honestly scoped: it refutes a class of deadlocks, it does not prove liveness in general.

Node names must resolve to declared entities of valid kinds; edges must name declared nodes; self-loops are refused; session_refs must be declared sessions.

Proof

type_checker::check_topology + check_topology_liveness (the v2.67.0 audit verdict: Real — "a genuine DFS cycle detector, narrow sufficient condition, but real").

See also

  • axon://primitives/session — the per-edge protocol.
  • axon://primitives/socket — the transport a session rides.