Re-record and ratify the corpus

This commit is contained in:
developtheweb 2026-07-10 00:00:10 -04:00
parent 5e020dbee1
commit 8bbb99e7aa
167 changed files with 257 additions and 139 deletions

View file

@ -19,7 +19,7 @@ where a different source is noted.
- JS interpreter: accepts (prints `dropqme` — an unknown string escape - JS interpreter: accepts (prints `dropqme` — an unknown string escape
drops the backslash silently) drops the backslash silently)
- ANTLR grammar: rejects (token recognition error at: '"drop\q') - ANTLR grammar: rejects (token recognition error at: '"drop\q')
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 12 at ad01bbd
## Divergence (fuzz seed 20260709, index 49) ## Divergence (fuzz seed 20260709, index 49)
@ -29,7 +29,7 @@ where a different source is noted.
- JS interpreter: rejects (err_unexpected at 1:1) - JS interpreter: rejects (err_unexpected at 1:1)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 20 at ad01bbd
## Divergence (fuzz seed 20260709, index 11) ## Divergence (fuzz seed 20260709, index 11)
@ -39,7 +39,7 @@ where a different source is noted.
- JS interpreter: accepts (runs) - JS interpreter: accepts (runs)
- ANTLR grammar: rejects (1:0: token recognition error at: '"a\z') - ANTLR grammar: rejects (1:0: token recognition error at: '"a\z')
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 12 at ad01bbd
## Divergence (fuzz seed 20260709, index 86) ## Divergence (fuzz seed 20260709, index 86)
@ -49,7 +49,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:5) - JS interpreter: rejects (err_expect at 1:5)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 21 at ad01bbd
## Divergence (fuzz seed 20260709, index 247) ## Divergence (fuzz seed 20260709, index 247)
@ -59,7 +59,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 21 at ad01bbd
## Divergence (fuzz seed 20260709, index 119) ## Divergence (fuzz seed 20260709, index 119)
@ -69,7 +69,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:3) - JS interpreter: rejects (err_expect at 1:3)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 21 at ad01bbd
## Divergence (fuzz seed 20260709, index 9) ## Divergence (fuzz seed 20260709, index 9)
@ -79,7 +79,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:3) - JS interpreter: rejects (err_expect at 1:3)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 22 at cd59791
## Divergence (fuzz seed 20260709, index 144) ## Divergence (fuzz seed 20260709, index 144)
@ -89,7 +89,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:5) - JS interpreter: rejects (err_expect at 1:5)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 23 at ad01bbd
## Divergence (fuzz seed 20260709, index 456) ## Divergence (fuzz seed 20260709, index 456)
@ -99,7 +99,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:8) - JS interpreter: rejects (err_expect at 1:8)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 23 at ad01bbd
## Divergence (fuzz seed 20260709, index 182) ## Divergence (fuzz seed 20260709, index 182)
@ -109,7 +109,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:8) - JS interpreter: rejects (err_expect at 1:8)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 23 at ad01bbd
## Divergence (fuzz seed 20260709, index 284) ## Divergence (fuzz seed 20260709, index 284)
@ -119,7 +119,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:6) - JS interpreter: rejects (err_expect at 1:6)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 23 at ad01bbd
## Divergence (fuzz seed 20260709, index 276) ## Divergence (fuzz seed 20260709, index 276)
@ -129,7 +129,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 23 at ad01bbd
## Divergence (fuzz seed 20260709, index 427) ## Divergence (fuzz seed 20260709, index 427)
@ -139,7 +139,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 24 at ad01bbd
## Divergence (fuzz seed 20260709, index 101) ## Divergence (fuzz seed 20260709, index 101)
@ -149,7 +149,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 23 at ad01bbd
## Divergence (fuzz seed 20260709, index 425) ## Divergence (fuzz seed 20260709, index 425)
@ -159,7 +159,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 24 at ad01bbd
## Divergence (fuzz seed 20260709, index 194) ## Divergence (fuzz seed 20260709, index 194)
@ -169,7 +169,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 23 at ad01bbd
## Divergence (fuzz seed 20260709, index 212) ## Divergence (fuzz seed 20260709, index 212)
@ -179,7 +179,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 24 at ad01bbd
## Divergence (fuzz seed 20260709, index 25) ## Divergence (fuzz seed 20260709, index 25)
@ -189,7 +189,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 24 at ad01bbd
## Divergence (fuzz seed 20260709, index 347) ## Divergence (fuzz seed 20260709, index 347)
@ -199,7 +199,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:5) - JS interpreter: rejects (err_expect at 1:5)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 21 at ad01bbd
## Divergence (fuzz seed 20260709, index 52) ## Divergence (fuzz seed 20260709, index 52)
@ -209,7 +209,7 @@ where a different source is noted.
- JS interpreter: rejects (err_expect at 1:4) - JS interpreter: rejects (err_expect at 1:4)
- ANTLR grammar: accepts (parses) - ANTLR grammar: accepts (parses)
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 26 at c447eb7
## Divergence (fuzz seed 20260709, index 76) ## Divergence (fuzz seed 20260709, index 76)
@ -219,7 +219,7 @@ where a different source is noted.
- JS interpreter: accepts (runs) - JS interpreter: accepts (runs)
- ANTLR grammar: rejects (1:4: mismatched input ':' expecting {<EOF>, ';', PARALLEL, LEFTARROW, IMPLIES, OR, AND, '=', NEQ, '<', '>', LEQ, GEQ, APPROX, SIM, '+', '-', TIMES, DIV, AST, COMPOSE, DEFINITION, HANDLE, ALLOC, RELEASE, '(', '|', MIDDOT}) - ANTLR grammar: rejects (1:4: mismatched input ':' expecting {<EOF>, ';', PARALLEL, LEFTARROW, IMPLIES, OR, AND, '=', NEQ, '<', '>', LEQ, GEQ, APPROX, SIM, '+', '-', TIMES, DIV, AST, COMPOSE, DEFINITION, HANDLE, ALLOC, RELEASE, '(', '|', MIDDOT})
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 25 at ad01bbd
## Divergence (fuzz seed 20260709, index 13) ## Divergence (fuzz seed 20260709, index 13)
@ -229,7 +229,7 @@ where a different source is noted.
- JS interpreter: accepts (runs) - JS interpreter: accepts (runs)
- ANTLR grammar: rejects (1:4: mismatched input ':' expecting {<EOF>, ';', PARALLEL, LEFTARROW, IMPLIES, OR, AND, '=', NEQ, '<', '>', LEQ, GEQ, APPROX, SIM, '+', '-', TIMES, DIV, AST, COMPOSE, DEFINITION, HANDLE, ALLOC, RELEASE, '(', '|', MIDDOT}) - ANTLR grammar: rejects (1:4: mismatched input ':' expecting {<EOF>, ';', PARALLEL, LEFTARROW, IMPLIES, OR, AND, '=', NEQ, '<', '>', LEQ, GEQ, APPROX, SIM, '+', '-', TIMES, DIV, AST, COMPOSE, DEFINITION, HANDLE, ALLOC, RELEASE, '(', '|', MIDDOT})
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 25 at ad01bbd
## Divergence (fuzz seed 20260709, index 29) ## Divergence (fuzz seed 20260709, index 29)
@ -239,4 +239,18 @@ where a different source is noted.
- JS interpreter: accepts (runs) - JS interpreter: accepts (runs)
- ANTLR grammar: rejects (1:4: mismatched input ':' expecting {<EOF>, ';', PARALLEL, LEFTARROW, IMPLIES, OR, AND, '=', NEQ, '<', '>', LEQ, GEQ, APPROX, SIM, '+', '-', TIMES, DIV, AST, COMPOSE, DEFINITION, HANDLE, ALLOC, RELEASE, '(', '|', MIDDOT}) - ANTLR grammar: rejects (1:4: mismatched input ':' expecting {<EOF>, ';', PARALLEL, LEFTARROW, IMPLIES, OR, AND, '=', NEQ, '<', '>', LEQ, GEQ, APPROX, SIM, '+', '-', TIMES, DIV, AST, COMPOSE, DEFINITION, HANDLE, ALLOC, RELEASE, '(', '|', MIDDOT})
- RULING: pending (see JUDGMENT_CALLS.md) - RESOLVED by ruling 25 at ad01bbd
## Divergence (fuzz seed 20260710, index 178 — found during Stage 3 A7)
```
({-42})
```
- JS interpreter: rejected (err_comment — the lexer committed '{-' to a
comment even without a terminator)
- ANTLR grammar: accepts (MULTILINE_COMMENT requires its '-}'; '{' lexes
as a brace, so this is a block containing -42)
- RESOLVED by grammar alignment (decision: the grammar is the syntax
truth) at f5e8407 — no ruling needed; found by the fresh fuzz seed and
fixed before commit

View file

@ -1,9 +1,12 @@
# SURFACE — what `js/mpl.js` actually implements # SURFACE — what `js/mpl.js` actually implements
Audited from the source of `js/mpl.js` (Stage 2, C3) and pinned by the Audited from the source of `js/mpl.js` at Stage 2 (C3, head `ea66a2a`) and
corpus. This file describes the implemented surface — exactly, no more. pinned by the corpus of that stage. **Historical record**: Stage 3 ratified
Nothing here is ratified; where behavior looks accidental it is flagged in the 26 judgment calls (2026-07-09) and changed the surface where rulings
`conformance/JUDGMENT_CALLS.md`, but it is recorded as observed. overrode it — rationals, boolean conditions, binding discipline, depth
limit, composition, and parser alignment. Where this file and
`JUDGMENT_CALLS.md` disagree, the rulings govern; the ratified corpus is
the executable truth.
## Lexer ## Lexer

View file

@ -1 +1 @@
{"status": "unratified", "source": "example", "decision": "", "notes": "seeded from examples/01_hello_world.mpl"} {"status": "ratified", "source": "example", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "seeded from examples/01_hello_world.mpl"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "example", "decision": "", "notes": "seeded from examples/02_factorial.mpl"} {"status": "ratified", "source": "example", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "seeded from examples/02_factorial.mpl"}

View file

@ -1,4 +1,4 @@
-- Factorial example with proper precedence -- Factorial example with proper precedence
factorial ≜ λn∈: (n≤1 ⟹ 1) | (n×factorial(n-1)); factorial ≜ λn∈: (n≤1 ⟹ 1) | (n×factorial(n-1));
result factorial(5); result factorial(5);
✎result; ✎result;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "× ÷ bind tighter than + -; + - and × ÷ left-associative"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "× ÷ bind tighter than + -; + - and × ÷ left-associative"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "unary minus, including doubled and against binary minus"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "unary minus, including doubled and against binary minus"}

View file

@ -1,3 +1,3 @@
2.5 5/2
2.5 5/2
3 3

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "/ is an ASCII alias of ÷"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 4", "notes": "/ is an ASCII alias of ÷"}

View file

@ -1,6 +1,6 @@
42 42
1.5 3/2
0.5 1/2
2 2
7 7
0.5 1/2

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "integral doubles display without decimal point; literals normalize"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 4", "notes": "integral doubles display without decimal point; literals normalize"}

View file

@ -1,3 +1,3 @@
3.75 15/4
0.30000000000000004 3/10
6 6

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "IEEE double arithmetic, including the 0.1+0.2 representation artifact"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 4", "notes": "IEEE double arithmetic, including the 0.1+0.2 representation artifact"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "string escapes \\n \\t \\\" \\\\ (unknown escapes like \\q diverge from the grammar — see DIVERGENCES.md, not corpus-pinnable)"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 12", "notes": "string escapes \\n \\t \\\" \\\\ (unknown escapes like \\q diverge from the grammar — see DIVERGENCES.md, not corpus-pinnable)"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "+ concatenates when either operand is a string, rendering the other via show"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 5", "notes": "+ concatenates when either operand is a string, rendering the other via show"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "non-ASCII string content passes through byte-intact"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "non-ASCII string content passes through byte-intact"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "lists display with strings quoted inside; closures display as λ"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 5", "notes": "lists display with strings quoted inside; closures display as λ"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "λ definition, display, application, multiple parameters"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 5", "notes": "λ definition, display, application, multiple parameters"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "closures capture the environment, not values at definition time"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 9", "notes": "closures capture the environment, not values at definition time"}

View file

@ -1,4 +1,4 @@
x 10; x 10;
f ≜ λy: x + y; f ≜ λy: x + y;
✎ f(1); ✎ f(1);
x ← 20; x ← 20;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "curried application and λ literals as call arguments"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "curried application and λ literals as call arguments"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "binary recursion through a guarded alternative"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "binary recursion through a guarded alternative"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "linear recursion 500 deep (within the host stack)"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 10", "notes": "linear recursion 500 deep (within the host stack)"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "∀ with an accumulating assignment"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "∀ with an accumulating assignment"}

View file

@ -1,3 +1,3 @@
t 0; t 0;
∀ n ∈ [1, 2, 3, 4, 5]: t ← t + n × n; ∀ n ∈ [1, 2, 3, 4, 5]: t ← t + n × n;
✎ t; ✎ t;

View file

@ -1,2 +1,2 @@
6

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "a ∀ expression yields the last body value; empty collection yields ⊥"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 2", "notes": "a ∀ expression yields the last body value; empty collection yields ⊥"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "the ∀ variable shadows per iteration and the outer binding survives"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 15", "notes": "the ∀ variable shadows per iteration and the outer binding survives"}

View file

@ -1,3 +1,3 @@
n 100; n 100;
∀ n ∈ [1, 2]: ✎ n; ∀ n ∈ [1, 2]: ✎ n;
✎ n; ✎ n;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "the canonical conditional: guarded alternatives with fallback"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 3", "notes": "the canonical conditional: guarded alternatives with fallback"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "a guard that never fires, with no | fallback, surfaces as ⊥"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 3", "notes": "a guard that never fires, with no | fallback, surfaces as ⊥"}

View file

@ -1,3 +1,3 @@
✎((false ⟹ 1)); ✎((false ⟹ 1));
x (false ⟹ 1); x (false ⟹ 1);
✎ x; ✎ x;

View file

@ -0,0 +1 @@
err_bool

View file

@ -1,5 +0,0 @@
one
no
num
no
no

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "guard conditions: true or non-zero number fire; strings/lists never do"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 13", "notes": "guard conditions: true or non-zero number fire; strings/lists never do"}

View file

@ -1,5 +1 @@
✎((1 ⟹ "one") | "no"); ✎((1 ⟹ "one") | "no");
✎((0 ⟹ "zero") | "no");
✎((2.5 ⟹ "num") | "no");
✎(("s" ⟹ "str") | "no");
✎(([1] ⟹ "list") | "no");

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "fall-through chains take the first firing arm"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 3", "notes": "fall-through chains take the first firing arm"}

View file

@ -1,4 +1,2 @@
1 1
2 2
3
5

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "≜ and ← both rebind freely; ← works without a prior ≜"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 16", "notes": "≜ and ← both rebind freely; ← works without a prior ≜"}

View file

@ -2,7 +2,3 @@ x ≜ 1;
✎ x; ✎ x;
x ← 2; x ← 2;
✎ x; ✎ x;
x ≜ 3;
✎ x;
y ← 5;
✎ y;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "both binding forms are expressions returning the bound value; ≜ chains right"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 16", "notes": "both binding forms are expressions returning the bound value; ≜ chains right"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "inside a λ, ← mutates the captured outer binding; ≜ creates a local one"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 9 and 16", "notes": "inside a λ, ← mutates the captured outer binding; ≜ creates a local one"}

View file

@ -1,4 +1,4 @@
x 1; x 1;
f ≜ λy: {x ← 99; x}; f ≜ λy: {x ← 99; x};
f(0); f(0);
✎ x; ✎ x;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "a block yields its last expression; {} yields ⊥; trailing ; permitted"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 15", "notes": "a block yields its last expression; {} yields ⊥; trailing ; permitted"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "braces do NOT create a scope: bindings made inside leak out"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 15", "notes": "braces do NOT create a scope: bindings made inside leak out"}

View file

@ -1,2 +1,2 @@
{y 9; 0}; {y 9; 0};
✎ y; ✎ y;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "line comments and nested block comments"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "line comments and nested block comments"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "⊥ displays as ⊥ and concatenates/nests as a value"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 6", "notes": "⊥ displays as ⊥ and concatenates/nests as a value"}

View file

@ -1,5 +1,5 @@
42 42
1.5 3/2
s s
true true
false false

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "one ✎ per value type"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "one ✎ per value type"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "all six comparison operators on numbers"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 8", "notes": "all six comparison operators on numbers"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "lexicographic order and structural equality on strings"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 7 and 8", "notes": "lexicographic order and structural equality on strings"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "equality is structural per type and false across types; ⊥ equals ⊥"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 7", "notes": "equality is structural per type and false across types; ⊥ equals ⊥"}

View file

@ -0,0 +1 @@
err_compare

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "ordering across types follows host coercion — observed, flagged as a judgment call"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 8", "notes": "ordering across types follows host coercion — observed, flagged as a judgment call"}

View file

@ -1,3 +1 @@
✎(1 < "2"); ✎(1 < "2");
✎("10" < 9);
✎(true < 2);

View file

@ -2,6 +2,3 @@ true
false false
true true
false false
false
true
false

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "∧ test operands with strict boolean truth — numbers are not truthy here"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 14", "notes": "∧ test operands with strict boolean truth — numbers are not truthy here"}

View file

@ -2,6 +2,3 @@
✎(true ∧ false); ✎(true ∧ false);
✎(false true); ✎(false true);
✎(false false); ✎(false false);
✎(1 ∧ true);
✎(0 true);
✎(true ∧ 1);

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "∧ skips its right side on false; skips it on true (observable via side effect)"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 14", "notes": "∧ skips its right side on false; skips it on true (observable via side effect)"}

View file

@ -1,4 +1,4 @@
x 0; x 0;
f ≜ λv: {x ← x + 1; v}; f ≜ λv: {x ← x + 1; v};
false ∧ f(true); false ∧ f(true);
✎ x; ✎ x;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "a program written entirely in ASCII escapes behaves like its glyph spelling"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "a program written entirely in ASCII escapes behaves like its glyph spelling"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "∈-constraints parse (incl. supplementary-plane 𝔹) and are discarded unevaluated"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 17", "notes": "∈-constraints parse (incl. supplementary-plane 𝔹) and are discarded unevaluated"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "✎ is an expression: prints and returns its operand"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "✎ is an expression: prints and returns its operand"}

View file

@ -1,3 +1,3 @@
✎(✎ 5); ✎(✎ 5);
v ✎ "side"; v ✎ "side";
✎ v; ✎ v;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": " (U+2217) is multiplication, same as ×"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 19", "notes": " (U+2217) is multiplication, same as ×"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "calls inside list literals; λ argument"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "calls inside list literals; λ argument"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "division by zero"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 1", "notes": "division by zero"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "unbound identifier"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "unbound identifier"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "calling a non-closure"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "calling a non-closure"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "nullary call syntax parses; arity is checked at runtime"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 18", "notes": "nullary call syntax parses; arity is checked at runtime"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "too many arguments"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "too many arguments"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "∀ over a non-list"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "∀ over a non-list"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "numeric + with a non-number, non-string operand"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "numeric + with a non-number, non-string operand"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "- is numeric only, no string analog"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "- is numeric only, no string analog"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "unary minus is numeric only"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "unary minus is numeric only"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "arithmetic on ⊥"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 6", "notes": "arithmetic on ⊥"}

View file

@ -1 +0,0 @@
err_steps

View file

@ -1 +0,0 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "the 500000-step evaluation budget"}

View file

@ -1,2 +0,0 @@
l ← [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
∀ a ∈ l: ∀ b ∈ l: ∀ c ∈ l: ∀ d ∈ l: ∀ e ∈ l: ∀ f ∈ l: 0;

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "identifiers may not start with _"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "identifiers may not start with _"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "juxtaposition call f x is not a call syntax"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "juxtaposition call f x is not a call syntax"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "no ternary; conditionals are guarded alternatives"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "no ternary; conditionals are guarded alternatives"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "output is ✎ only"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "output is ✎ only"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "unterminated string literal"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "unterminated string literal"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "unknown ASCII escape word"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "unknown ASCII escape word"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "unclosed brace"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "unclosed brace"}

View file

@ -1 +1 @@
err_comment err_expect

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "unterminated block comment"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "unterminated block comment: '{-' without a matching '-}' is not a comment token, so the brace lexes bare and the program fails to parse (matches the grammar's MULTILINE_COMMENT)"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "∑ is M1, not a token"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "∑ is M1, not a token"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "√ is M1, not a token"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "√ is M1, not a token"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "% is M1, not a token"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "% is M1, not a token"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "range syntax [a..b] is M1"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "range syntax [a..b] is M1"}

View file

@ -1 +1 @@
{"status": "unratified", "source": "coverage", "decision": "", "notes": "¬ is M1, not a token"} {"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09 (Stage 3 batch — behavior blessed as observed; no single ruling)", "notes": "¬ is M1, not a token"}

View file

@ -0,0 +1 @@
{"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 20", "notes": "ruling 20: the empty program is valid and silent"}

View file

@ -0,0 +1,2 @@
2
6

View file

@ -0,0 +1 @@
{"status": "ratified", "source": "coverage", "decision": "Ratified 2026-07-09, ruling 21", "notes": "ruling 21: parentheses contain one seqExpr"}

View file

@ -0,0 +1,2 @@
✎((1; 2));
✎((x ≜ 5; x + 1));

Some files were not shown because too many files have changed in this diff Show more