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.
43 lines
1.8 KiB
Markdown
43 lines
1.8 KiB
Markdown
# constructs have nowhere to be
|
|
|
|
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 — `5718943`
|
|
|
|
```
|
|
let a construct declare its own meaning instead of the emitter knowing it
|
|
|
|
codegen called fn_has_decorator for exactly three names — manager, accessor,
|
|
route. Twelve others parsed, attached as {name,args}, and compiled to nothing,
|
|
including four that look like protection: @authenticate (6 uses), @authorize
|
|
(3), @rate_limit (3), @validate (2). The cause was not that the branches were
|
|
untidy. A construct had nothing to BE, so its meaning had nowhere to live
|
|
except the emitter, and every construct was therefore a compiler edit.
|
|
|
|
A name -> injection table would have moved the enumeration twenty lines up
|
|
without removing it. So the construct now carries its own meaning:
|
|
|
|
@decorator("injects_at_entry", "engram_boundary_beat")
|
|
fn audited() {}
|
|
|
|
@audited
|
|
fn risky_op() -> Int { ... } // gets the beat, attributed to "audited"
|
|
|
|
scan_declared_decorators is a token-level pre-pass beside scan_routes, forced
|
|
by streaming codegen having no whole-program AST. manager and accessor are
|
|
seeded as the compiled-in core — the fixedSelf shape from substrate.go: a
|
|
complete fallback exists, declaration is enrichment.
|
|
|
|
This is the injection half of the seam only. The prohibition half (@manager's
|
|
#error on dharma_emit) stays hardcoded, because "which calls may appear inside
|
|
this boundary" is a query over program structure and there is nothing yet to
|
|
ask.
|
|
|
|
Verified three ways: emitted C for existing @manager/@accessor code is
|
|
byte-identical to the hardcoded path; a construct with a name the compiler has
|
|
never heard of injects correctly; the compiler self-hosts byte-identically.
|
|
90/90 native compiler tests pass.
|
|
```
|