kill: purge old-paradigm dist/platform binaries from tree
El SDK Release / build-and-release (push) Failing after 13m0s

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.
This commit is contained in:
will
2026-08-19 19:46:15 -05:00
parent cce4fcca05
commit d3495476f4
944 changed files with 10343 additions and 21230 deletions
@@ -0,0 +1,207 @@
# CLAIMS — ITERATION-level evidence for v2
Re-run 2026-08-17. This directory holds the evidence that is about **iteration 2
as a whole** rather than about any one cycle. Per-cycle evidence and verdicts
are in `../cycles/<NN>-<slug>/CLAIMS.md`.
Before this run, `docs/` held 42 markdown files and **zero data files**. It now
holds a captured artifact for every re-runnable claim, each one recording the
command verbatim, stdout, stderr, the exit code captured directly and never
through a pipe, the commit SHA, the tree state, UTC, and the sha256 of both
streams.
## The measurement window, pinned
| | |
|---|---|
| Window start | `a116710bacba679615cb84b4ea9ce98c3acaa380` |
| Window end | `a0cc95e3d…` (see `0026-zz-head-at-end.out`) |
| Commits in window | **5** |
| Commits touching `lang/` | **0** |
| Commits touching `scripts/` or `tools/evidence/capture.sh` | **0** |
`0022-measurement-window-lang-untouched.out` is the proof. A concurrent agent
was landing v1 evidence documents into this repository throughout, so HEAD moved
five times and `git status` read dirty for most of the run — but **no compiler
source, no runtime source, and no measuring instrument changed while any of this
was measured.** The system under test and the recorder were both stable.
Historical claims were measured inside detached worktrees pinned at their own
commits, so those artifacts carry the system-under-test's SHA and a clean tree.
`verify-manifest.sh` flags every dirty-tree artifact as provenance-weak; the
load-bearing measurements are deliberately not among them.
## What was captured at iteration level
| Claim | Artifact | Result |
|---|---|---|
| the full gauntlet | `0003-gauntlet-verify-sh` | **VERIFIED, exit 0** |
| fixpoint gen2 == gen3 | `0004-fixpoint-gen2-eq-gen3` | **OK**, by sha256 |
| native suite | `0005-native-suite` | **105 tests, 105 passed, 0 failed, 253 assertions**, exit 0 |
| every harness individually, own exit code | `0006``0018` | **13 harnesses, all exit 0** |
| assertion tally | `0020-harness-assertion-tally` | **76 assertions across 13 harnesses** |
| `codegen.el` total / comment / code | `0019-codegen-total-vs-comment-vs-code` | **4434 total, 3197 code, 981 comment, 256 blank** |
| unguarded-deref ratchet | `0021-unguarded-deref-ratchet` | **11 unguarded casts, at baseline 11**, exit 0 |
| control over the whole record | `0023-CONTROL-verify-manifest-over-all-v2-cycles` | **250 artifacts verified, 0 altered, 0 missing** |
### The gauntlet
```
fixpoint gen2 == gen3 ok
native suite 105 tests, 105 passed, 0 failed, 253 assertions in 7.115ms
integration harnesses 13 green, 76 assertions
unguarded-deref ratchet at or below baseline
VERIFIED
```
### The fixpoint proof
```
gen1 sha256 = aa340a723e7b29e585e30c07d6dc9834e072ef15a07df5e1afb363c18e168c76
gen2 sha256 = 61210655962abd07ce395d66a9232582fd10c2a878c80f9b85fefc9081c5313e
gen3 sha256 = 61210655962abd07ce395d66a9232582fd10c2a878c80f9b85fefc9081c5313e
FIXPOINT gen2 == gen3 OK
note: gen1 != gen2, as expected whenever codegen output changes
```
The `gen1 != gen2` line matters: comparing gen1 to gen2 would be the wrong test,
and it is recorded here as an observed fact rather than as a design comment.
### `codegen.el` composition at HEAD
```
total_lines = 4434
code = 3197 72.1%
comment = 981 22.1%
blank = 256
```
Cycle 05 established that the metric worth quoting is code, not total. On that
metric the compiler stands at **3197 code lines**, against the **3589** baseline
at `45325f7`**392, 10.9%** across v1 and v2 together.
## v2's standing, with references
### Verdicts across all eight cycles
| Cycle | R | D | NR | NC | total |
|---|---|---|---|---|---|
| 01 the-compiler-was-never-measured | 26 | 5 | 5 | 1 | 37 |
| 02 seven-tables-and-a-shipped-defect | 21 | 2 | 0 | 0 | 23 |
| 03 a-gate-with-no-detector | 23 | 2 | 0 | 0 | 25 |
| 04 verification-was-a-convention | 7 | 2 | 0 | 3 | 12 |
| 05 the-metric-counted-comments | 12 | 1 | 7 | 0 | 20 |
| 06 form-is-half-bindable | 12 | 0 | 0 | 1 | 13 |
| 07 the-caller-was-already-there | 17 | 1 | 1 | 2 | 21 |
| 08 PREDICTIONS | 15 | 0 | 0 | 7 | 22 |
| **total** | **133** | **13** | **13** | **14** | **173** |
R = REPRODUCED, D = DIVERGED, NR = NOT-REPRODUCIBLE, NC = NOT-CAPTURED.
**133 of 173 assertions reproduced from raw data. Nothing was reconstructed.**
### The load-bearing results, re-verified
The index classifies v2 as one SUPPORTS pair plus a BOUNDS, and commit
`9540f23` weights the whole 27-cycle record at four load-bearing results. Those
that live in v2 were given the most care in this re-run:
**Cycle 06 — a new suffix form by a two-line data edit, no rebuild.** Fully
reproduced. The compiler binary's sha256 and mtime are byte-identical before and
after the edit and its mtime predates the edit by 37.4 s; `git diff --stat`
reads `1 file changed, 2 insertions(+)`; the same binary then emits
`3LL * 1209600000000000LL`; the linked program prints `3628800000000000`; and
reverting the two lines reverts the behaviour. **12 REPRODUCED, 0 DIVERGED.**
**Cycle 07 — exactly three emission points, and a construct that sees its
caller.** Reproduced, but *not* by the instrument the cycle used. Commit
`fbb3a52` records that the cycle's central assertion is a grep of compiler
source the harness never compiles; I confirmed that independently — appending a
**comment** to `codegen.el` turns the assertion red while the binary's sha256
and the emitted C are unchanged. So the bound was re-established from the
**emitted C of the binary under test**: three functions, `entry wrap exit` each,
nine points, every one keyed on the function name, and **zero** for loops, call
sites and field accesses. `AUDIT save called by handle_request` /
`AUDIT save called by migrate` reproduce verbatim.
**Cycle 02 — 49 builtin names moved to data.** Reproduced exactly: 51 → 100
entries in `signatures.rel`, delta 49; six of seven tables collapse to 36 line
wrappers; `duration_unit_nanos` alone keeps its 14 literals, which is P3.
### The divergences that matter
Thirteen divergences across the record. Four are substantive:
1. **Cycle 02, A17 — the shipped defect was worse than recorded.** The doc says
`el_input_len` returned 0 for "roughly 60%" of string literals. Measured at
the buggy commit against 20 literals of lengths 120, checked by an
independent `hashlib` oracle: **20 of 20, a 100% failure rate.** Standalone
alignment probes give 80% on the doc's own five literals and 90% on twenty.
The rate is link-layout dependent and is not a stable quantity; the doc's 60%
was a five-literal sample. That is the same error — *a sample of five is not a
measurement of a rate* — inside the paragraph that teaches it.
2. **Cycle 03, D-1 — the ratchet is not a ratchet.** It compares a *total*
against `BASELINE=11` rather than a *set of sites*, so guarding one site while
adding a new dereference passes: it printed a brand-new unguarded deref in its
own output while reporting `ok 11 unguarded casts, at baseline 11`. Its regex
also misses `EL_CSTR`, leaving **452 casts invisible to the detector**. And
`let s: String = 42` — defect #1 in that cycle's own list — **still segfaults
at HEAD, exit 139.**
3. **Cycle 07, A15 — the timing numbers do not reproduce; the conclusion does.**
Seven interleaved rounds gave BASE mean 52.29 ms and STACK mean 52.29 ms,
ratio 1.0000, spread 2 ms each. The doc's 0.240.25 s are cold-cache figures:
measured cold/warm on this workload is **4.30×**, which is larger than the
50% "regression" that was reported and retracted.
4. **Cycle 04, A5 — P3 as worded is false.** `verify.sh` contains no detector
for an exit code read through a pipe; it *avoids* the defect by construction.
Prevention is not detection, so the cycle's 5/5 is 4/5 as worded and 5/5 in
substance.
The remaining nine are off-by-one line counts (`4525` for 4524, `4662` for 4661,
`4446` for 4445, `80` for 79, `3267` for 3266) and one misattribution in cycle 01
(`capabilities.md` names a different table than the doc claims). None changes a
conclusion; all are recorded because a record about miscounting must not carry
uncorrected miscounts.
### What could not be reproduced, and why
- **13 NOT-REPRODUCIBLE.** Almost all are the emit/table/other bucket split from
cycles 01 and 05. **The classifier that produced 57.2%, 2578 lines, 21 fns,
42.8%, 15.4% and 27.4% was never committed**, and its criterion for
"emission" versus "table" versus "other" was never written down. No
replacement classifier was written and passed off as a reproduction. What could
be checked was the arithmetic, and it holds: emit 1909 + table 506 + other 794
= **3209**, exactly the independently measured code total at `8cb7613`.
- **14 NOT-CAPTURED.** Seven are cycle 08's predictions P1P7, which are
ungraded by construction: the mutation study was never run, and running it
today would be a new experiment, not a reproduction. The seal is intact —
P1P7 are byte-identical to their form at `d936bde`, which makes this genuine
pre-registration. The rest are prose assertions with no measurement behind
them, including cycle 06's P3, which the document itself labels
"NOT TESTED — an argument, not a measurement".
## The instrument, and one defect in it
`capture.sh` writes its manifest line with `printf '%s\n' "$*"`. **A command
containing a newline therefore splits one manifest record across several lines
and desynchronises the artifact counter.** This was hit independently on cycle 01
and on cycle 02. In both cases the fix was the same and it was not to edit the
manifest: the evidence directory was deleted and every capture re-run from
scratch with the logic moved into instrument files. Editing a manifest to match
its artifacts inverts what a manifest is for.
`verify-manifest.sh` globs `"$ROOT"/*/MANIFEST.tsv`, so it must be given the
**parent** of the cycle directories. Handed a cycle directory it prints
`0 artifacts verified, 0 altered, 0 missing` and **exits 0** — a green verdict
having checked nothing. That is the same shape as cycle 03's subject: a gate
nothing is forced through. The correct invocation is recorded in `0023`.
Failed runs are retained rather than deleted — a SIGPIPE-killed build in cycle 03,
a malformed `awk` in cycles 03 and 07, and `scripts/verify.sh` returning exit 127
at `abb0ab4` because it did not exist yet. Removing a failed attempt from an
evidence record is itself a measurement defect.