Severity: low/medium (unclear intended semantics)
The vocabulary docs describe require as "Halt with REQUIREMENT_NOT_MET if a condition fails." But in run_file, a failed require reports its error and execution continues to the next top-level statement.
Reproducer
remember a number called x with 1
require x is above 100
show "after plain require"
Error: Requirement not met: x is above 100. x is 1.
after plain require # <- still runs
Where
cli.run_file's main loop runs each top-level line via session.run_line(line), displays the result, and unconditionally advances (i += 1) — there is no halt on a REQUIREMENT_NOT_MET status. (Within a single statement/sequence — require X then do-Y — the failure does stop the rest of that line.)
The question
Is this intended? Two reasonable readings:
- Halt the program: "halt" means stop sequential execution entirely on a failed requirement;
run_file should stop after the error.
- Per-line resilience (current):
run_file reports the failure and keeps going, so the user sees all errors in one pass (REPL-like).
Both are defensible; the docs say "halt," the implementation continues. Worth a decision + a doc clarification either way. If "halt" is intended, run_file should stop on REQUIREMENT_NOT_MET (and expect, which is explicitly non-halting, would remain the continue-on-failure verb).
Observed while testing #19.
Severity: low/medium (unclear intended semantics)
The vocabulary docs describe
requireas "Halt with REQUIREMENT_NOT_MET if a condition fails." But inrun_file, a failedrequirereports its error and execution continues to the next top-level statement.Reproducer
Where
cli.run_file's main loop runs each top-level line viasession.run_line(line), displays the result, and unconditionally advances (i += 1) — there is no halt on aREQUIREMENT_NOT_METstatus. (Within a single statement/sequence —require X then do-Y— the failure does stop the rest of that line.)The question
Is this intended? Two reasonable readings:
run_fileshould stop after the error.run_filereports the failure and keeps going, so the user sees all errors in one pass (REPL-like).Both are defensible; the docs say "halt," the implementation continues. Worth a decision + a doc clarification either way. If "halt" is intended,
run_fileshould stop onREQUIREMENT_NOT_MET(andexpect, which is explicitly non-halting, would remain the continue-on-failure verb).Observed while testing #19.