c6ba0677f0
cycles/ one file per Ishikawa -> scientific method -> Six Sigma loop, named
for the DEFECT not the fix, carrying the commit record as written at
the time
findings/ what the cycles produced, cross-cut: live bugs, architecture answers,
and defects in my own measurement
The organising finding is that predictions which came back FALSE produced every
significant result. Eleven of sixty-one failed, and those eleven found: that the
arity table was not drifted but 40% incomplete; that the AST traversal is
irreducible and only rules and judgments move; that guards could refuse through
the seam after all; and that routing el_bin_lookup through the gate did NOT fix
the SIGSEGV, because the fallback strlen was the hazard -- a wrong fix I would
otherwise have shipped as verified.
One cycle was run without committing predictions first and had to be discarded
as rigged. It is kept, in full, as 18-async-half-expressible.md.
58 lines
2.3 KiB
Markdown
58 lines
2.3 KiB
Markdown
# keywords that reserve nothing
|
|
|
|
One `Ishikawa → scientific method → Six Sigma` loop. The record below is the
|
|
commit message as written at the time, before the outcome was known to anyone
|
|
reading this file.
|
|
|
|
## Record — `0143cc4`
|
|
|
|
```
|
|
ANSWER: is a grammar a convention, or a region?
|
|
|
|
Both, at different layers -- and it is the same split as serialization: the
|
|
convention is the BASIS, never the ACT.
|
|
|
|
lexeme -> token `fn` means function-start because someone said so CONVENTION
|
|
shape recognition given tokens, which construct is this REGION
|
|
source -> structure parsing is transduction onto that basis GEOMETRY
|
|
byte traversal something must read them in order IRREDUCIBLE
|
|
|
|
Three things push the ACT toward region rather than convention: ambiguity
|
|
(a * b needs context; a grammar resolves it with the lexer hack, a region by
|
|
neighbourhood), error recovery (nearest-region is free), and precedence, which
|
|
is ordering along an axis with a conventional parameter.
|
|
|
|
AND THE SHOULD GATE SAYS NO TO THE OBVIOUS MOVE
|
|
|
|
Every other table this session moved to data. This one stays code. The keyword
|
|
set is CLOSED by the language definition -- it does not leak the way an
|
|
allowlist does -- and the lexer runs before the program is understood, so a
|
|
program can never declare its own keywords. Externalising it costs file I/O on
|
|
every compile and buys nothing. Same verdict as is_digit in ASCII.
|
|
|
|
WHAT WAS ACTUALLY WRONG: five of 46 keywords were consumed by no parser or
|
|
codegen path. sealed, activate, seed, protocol, impl. Each stole an identifier
|
|
from users for nothing.
|
|
|
|
SECOND SILENT MISCOMPILATION OF THE DAY. Using one did not fail to parse:
|
|
|
|
let seed = 42
|
|
let impl = seed + 1
|
|
|
|
compiled CLEAN -- zero cc errors -- and printed 0 instead of 44. No diagnostic
|
|
at any layer. Fixed by removing the five.
|
|
|
|
A DEFECT IN MY OWN MEASUREMENT, caught before it did damage: my first pass
|
|
checked only parser.el and reported `test` as inert too. codegen consumes it at
|
|
4135 for --test mode, and the tree has 408 uses. Removing it would have broken
|
|
every test in the suite. The measurement was re-run across all four consumers.
|
|
|
|
100/100 native + 2 new, 31/31 integration, fixpoint ok.
|
|
```
|
|
|
|
## Record — `067dd40`
|
|
|
|
```
|
|
answer the parsing question: a grammar is a basis, and five keywords reserved nothing
|
|
```
|