Declare a guarded mutation
When
# Finish an open task.
scenario finish(todo:Todo) by=members
require todo.done==false message="Task is already finished"
do
set todo {done=true}
The example is a fragment whose Todo model, policy, and membership context must be declared. Effects include create, set, transition, delete, canonical local call, emit, send, schedule, cancel, bounded loop, conditional, enum match, and return. A mutation has one owner transaction; nested atomic blocks and arbitrary SQL/JavaScript effects are not language features. A pure read=true scenario has no mutation effects and returns a checked result.
A successful mutation returns a receipt plus authorized projections by default. External send persists intent and returns a delivery receipt, not provider success. See transactions and concurrency, events and hooks, and actions.