soma.cell

-> failed leaves EVERY state, final ones included

Pitfall 25 of writing Soma, the programming language: a habit from another language, or a rule that surprises, with what the Soma compiler answers and the form to write.

state s { initial: a   a -> paid   * -> failed }               // paid -> failed exists: paid is not final
state s { initial: a   a -> paid   * -> failed except [paid] }  // paid stays final

soma verify warns about the first form and prints the second.