This repository has been archived on 2026-08-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
will d3495476f4
El SDK Release / build-and-release (push) Failing after 13m0s
kill: purge old-paradigm dist/platform binaries from tree
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.
2026-08-19 19:46:15 -05:00

208 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.