Thrown when hops on an instance fail to stabilise within
CascadeLimitError.limit moves — the signature of a runaway
cascade. The classic cause is two stages whose transition whens
stay simultaneously satisfied (e.g. an op.field.set lands a value
that trips the very trigger that fired, and nothing ever clears it),
so the engine flip-flops and would otherwise write revisions forever.
The cascade aborts at the limit rather than the engine hanging; the
instance is left at whatever stage the last completed pass reached.
Thrown when hops on an instance fail to stabilise within CascadeLimitError.limit moves — the signature of a runaway cascade. The classic cause is two stages whose transition
whens stay simultaneously satisfied (e.g. anop.field.setlands a value that trips the very trigger that fired, and nothing ever clears it), so the engine flip-flops and would otherwise write revisions forever.The cascade aborts at the limit rather than the engine hanging; the instance is left at whatever stage the last completed pass reached.