behavior/next.rs
1//! The verdict vocabulary — owned in-crate, not borrowed from bombay
2//! (2026-08-04: the type-exact trace rationale retired with the reference
3//! crate; a pass crate depends on nothing upward — this IS the bombay
4//! declutter, and this file is what travels back as bombay's vocabulary).
5
6/// The uninhabited type with two structural jobs. As a phase menu,
7/// `Step<Never>` has no constructible `Goto` — a plain actor is a one-phase
8/// machine. As an outbound/offspring menu, it proves a layer sends or creates
9/// nothing. The law is the type, not a convention.
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub enum Never {}
12
13/// The **become** verdict (Agha 1986): what replaces the current behavior as
14/// it processes one event.
15#[derive(Debug, Clone, Copy, PartialEq, Eq)]
16pub enum Step<Ph = Never, R = Never> {
17 /// Keep the current behavior; poll for the next event.
18 Continue,
19 /// Transition to another phase from the menu (no-op when already there).
20 Goto(Ph),
21 /// Stop after this reaction, with the carried reason.
22 Stop(R),
23}