The generated C, amalgams, vendored runtime pins, and compiled binaries from the Claude Code era are removed from the worktree. The El sources survive; this tree is now source-only for the first-principles rebuild. Per Principal direction 2026-08-19.
5.3 KiB
CLAIMS — cycle 14, keywords that reserve nothing
Source doc: docs/v1/experiments/cycles/14-keywords-that-reserve-nothing.md
Pinned commits
| role | sha | subject |
|---|---|---|
| parent / before-state | 15d4352ba |
make the capability table match its own status note |
| experiment (system under test) | 0143cc458ac158e808e074acab417d4f706d89d8 |
ANSWER: is a grammar a convention, or a region? |
| land (merge) | 067dd40317bd880781b6035dd5bfba8c2f1b371d |
answer the parsing question: a grammar is a basis, and five keywords reserved nothing |
| current HEAD at re-run time | a0cc95e3db7b04b6e221f89e89352b0e6b15d5b7 |
instrument build log |
Verdicts
| # | claim | artifact | commit | verdict |
|---|---|---|---|---|
| A1 | the keyword set is 46 spellings | 0001-keyword-count-at-15d4352.out |
15d4352 |
REPRODUCED (exact) |
| A2 | five of them are consumed by no parser or codegen path: sealed, activate, seed, protocol, impl |
0001, 0010-five-tokens-consumed-nowhere.out |
15d4352 |
REPRODUCED (exact) |
| A3 | using one did not fail to parse: let seed = 42 / let impl = seed + 1 compiled CLEAN — zero cc errors |
0004, 0006-pre-cc-zero-errors.out |
15d4352 |
REPRODUCED (exact) |
| A4 | …and printed 0 | 0007-pre-program-run.out |
15d4352 |
REPRODUCED (exact) |
| A5 | …"instead of 44" | 0009-post-program-run.out |
0143cc4 |
DIVERGED |
| A6 | fixed by removing the five | 0005-post-emit-c-inert-keywords.out, 0009 |
0143cc4 |
REPRODUCED |
| A7 | measurement defect: test looked inert by the same measure and is not — codegen consumes it at 4135 for --test mode |
0011-test-keyword-consumed-at-codegen-4135.out |
0143cc4 |
REPRODUCED (exact, to the line) |
| A8 | …and the tree has 408 uses | 0014-test-word-count-at-pre.out |
15d4352 |
REPRODUCED (exact) |
| A9 | 100/100 native + 2 new | 0013-post-native-suite.out |
0143cc4 |
REPRODUCED |
| A10 | 31/31 integration | 0015-post-integration-harnesses.out |
0143cc4 |
REPRODUCED (exact) |
| A11 | fixpoint ok | 0012-post-fixpoint.out |
0143cc4 |
REPRODUCED |
| A12 | the SHOULD gate says no: the keyword set stays code because it is closed by the language definition and the lexer runs before the program is understood | — | — | NOT-CAPTURED (design argument) |
| A13 | the lexeme→token / shape-recognition / transduction / byte-traversal layering | — | — | NOT-CAPTURED (design argument) |
| A14 | the defect at current HEAD | 0016-head-inert-keyword-TODAY.out |
a0cc95e3 |
fixed — prints 43, exit 0 |
The second silent miscompilation of the day, reproduced exactly
Fixture fixtures/inert_keyword.el:
fn main() {
let seed = 42
let impl = seed + 1
println(int_to_str(impl))
}
Emitted C at 15d4352 (0004):
el_val_t seed = 42;
el_val_t impl = (EL_NULL + 1);
println(int_to_str(EL_NULL));
The binding is emitted, but every use of seed and impl is swallowed — the
lexer classified the identifier as a keyword, so the expression parser never saw
an identifier and emitted EL_NULL. cc reports 0 errors (0006), the
program exits 0, and prints 0 (0007).
At 0143cc4 (0005, 0009):
el_val_t seed = 42;
el_val_t impl = (seed + 1);
println(int_to_str(impl));
prints 43, exit 0.
A5 — the expected value is 43, not 44
The record says the program "printed 0 instead of 44". For let seed = 42
followed by let impl = seed + 1 the correct result is 43, and the repaired
compiler prints 43 (0009, and again at HEAD, 0016). The 44 is an
arithmetic slip in the prose.
Nothing else in the claim is affected: the defect, the clean compile, the
printed 0, and the repair all reproduce exactly.
The measurement defect the record catches on itself — confirmed
0010, run against 15d4352, counts each token name across all four consumers:
Sealed lexer=1 parser=0 codegen=0 compiler=0
Activate lexer=1 parser=0 codegen=0 compiler=0
Seed lexer=1 parser=0 codegen=0 compiler=0
Protocol lexer=1 parser=0 codegen=0 compiler=0
Impl lexer=1 parser=0 codegen=0 compiler=0
Test lexer=1 parser=0 codegen=1 compiler=0
The five are minted by the lexer and consumed by nothing. Test is minted by
the lexer, ignored by the parser — which is why a parser-only search reported it
inert — and consumed by codegen. 0011 locates that single consumer at
codegen.el:4135, the exact line the record names, and 0014 counts
408 occurrences of the bare word test in .el files at 15d4352, the
exact figure the record names. Removing it would indeed have broken the suite.
Integration count — exact
arity_query.sh exit=0 assertions=5
capability_query.sh exit=0 assertions=5
prohibition_query.sh exit=0 assertions=4
seam_binding.sh exit=0 assertions=7
temporal_query.sh exit=0 assertions=6
temporal_signatures.sh exit=0 assertions=4
TOTAL assertions: 31
Provenance notes
All captures are from dedicated worktrees /tmp/rerun-v1b-14-pre (15d4352),
/tmp/rerun-v1b-14-post (0143cc4) and /tmp/rerun-v1b-head (a0cc95e3), with
capture.sh invoked by absolute path from inside each, so the recorded commit is
the system under test's. No DIRTY-TREE flags in this cycle.