Severity: medium (intuitive footgun)
require halts on failure, but there is no clean "stop here, successfully" in sequential mode. finish looks like it should be that, but it is listener-only and is a semantic error in Phase 1.
Observed
finish is only reachable inside a when action block under Phase 2:
when level is above 200 unless alarm is equal to on
show "threshold crossed"
finish
Used in a plain sequential program it errors as a semantic violation.
Why it matters
A user writing a sequential script will reach for finish to end it early and be confused that it only works inside reactive handlers.
Recommendation
Either add a Phase-1 terminal verb (clean early successful exit), or make finish's scope explicit in the error message, e.g. "finish only exits listener mode; sequential programs end at their last line."
Severity: medium (intuitive footgun)
requirehalts on failure, but there is no clean "stop here, successfully" in sequential mode.finishlooks like it should be that, but it is listener-only and is a semantic error in Phase 1.Observed
finishis only reachable inside awhenaction block under Phase 2:Used in a plain sequential program it errors as a semantic violation.
Why it matters
A user writing a sequential script will reach for
finishto end it early and be confused that it only works inside reactive handlers.Recommendation
Either add a Phase-1 terminal verb (clean early successful exit), or make
finish's scope explicit in the error message, e.g. "finish only exits listener mode; sequential programs end at their last line."