# CLAIMS — v2 cycle 07, "the caller was already there" Re-run 2026-08-17. Source doc: `docs/v2/experiments/cycles/07-the-caller-was-already-there.md` (not modified; it is the historical record). ## Pinned commits | Role | SHA | Subject | |---|---|---| | Code commit (system under test) | `d9d1571f2a17024323a3f7be6966bc476c2f2a78` | a construct can see its caller, with no new emission point | | Its parent — the BASE for timing | `d403a5cf2e728ce00ecdc2d84290e471e74159bb` | v2 cycle 06: form is half bindable | | Merge that landed it | `ffab17b` | merge experiment/seam-caller | | Cycle 07 doc commit | `47b56a3` | v2 cycle 07: the caller was already there | | Standing critique of this cycle | `fbb3a52` | cycle 07's central claim is backed by a grep, not a measurement | All measurements were taken in detached worktrees at `d9d1571` and `d403a5c`, so each `.prov` carries the system under test's SHA, not the re-run host's. `d9d1571` adds 80 lines across three files and touches **no compiler source** — `el_runtime.c` (+33), `el_runtime.h` (+1), `seam_caller.sh` (+46). The compiler sources are byte-identical between BASE and STACK worktrees (`0006`, `diff -rq … IDENTICAL`), so the timing below isolates the runtime change and nothing else. ## Verdicts | # | Claim as stated in the doc | Artifact | Commit | Verdict | |---|---|---|---|---| | A1 | P1 — exactly three emission points per fn | `0026`, `0027`, `0028` | `d9d1571` | **REPRODUCED** — and by a *better* instrument than the doc's, see below | | A2 | P2 — no other emission point exists | `0027`, `0028`, `0029`, `0030` | `d9d1571` | **REPRODUCED** — loops, call sites and field accesses emit none | | A3 | entry is `el_seam_run(fn, 0, 0)`, refusable | `0026`, `0028` | `d9d1571` | **REPRODUCED** verbatim | | A4 | wrap is `el_seam_wrap(fn, thunk, env)` | `0026`, `0028` | `d9d1571` | **REPRODUCED** verbatim | | A5 | exit is `el_seam_run(fn, 1, __r)` | `0026`, `0028` | `d9d1571` | **REPRODUCED** verbatim | | A6 | all three keyed on `fn_name` | `0028` | `d9d1571` | **REPRODUCED** — every point carries `EL_STR("")` | | A7 | P3 — a construct cannot see WHO called it (before the change) | `0032` | `d9d1571` | **REPRODUCED** — unbound run reports nothing | | A8 | P4 — the call graph is static, the gap is runtime | — | — | **NOT-CAPTURED** — asserted in prose, no measurement stated | | A9 | P5 — a seam-maintained stack gives the caller with NO new emission point | `0027`, `0033` | `d9d1571` | **REPRODUCED** | | A10 | the result: `AUDIT save called by handle_request` | `0033` | `d9d1571` | **REPRODUCED** verbatim | | A11 | and `AUDIT save called by migrate` | `0033` | `d9d1571` | **REPRODUCED** verbatim | | A12 | a construct bound **after the build** sees its caller | `0032`, `0033` | `d9d1571` | **REPRODUCED** — same binary, binding supplied at run time via `EL_CONSTRUCTS` | | A13 | P6 — maintaining the stack costs something measurable — FALSE | `0007`–`0021`, `0024` | `d9d1571` vs `d403a5c` | **REPRODUCED** — 7 interleaved rounds, means identical to 0.00 ms | | A14 | P7 — moving it behind the early-out removes the cost — FALSE, there was no cost | `0024` | — | **NOT-REPRODUCIBLE** — the "before the early-out" variant was never committed | | A15 | interleaved rounds base 0.25/0.25/0.24 s, stack 0.24/0.24/0.24 s | `0024`, `0025` | `d9d1571` vs `d403a5c` | **DIVERGED on absolute magnitude, REPRODUCED on the conclusion** — see below | | A16 | "identical within noise. There was no regression." | `0024` | `d9d1571` vs `d403a5c` | **REPRODUCED**, and more strongly than the doc claims | | A17 | the baseline had drifted from 0.37 s — the machine, not the code | `0025` | — | **REPRODUCED in mechanism** — cold/warm alone is 4.30× | | A18 | `seam_caller.sh` — 5 assertions | `0031` | `d9d1571` | **REPRODUCED** — 5 assertions, 5 passed, exit 0 | | A19 | defect 11 — `arity_query.sh` asserted exactly 503 signatures | `0039` | `d9d1571^` | **REPRODUCED** verbatim | | A20 | the assertion now tests the property directly | `0040` | `47b56a3` | **REPRODUCED** — now `SIGN -gt 400` | | A21 | "the gauntlet built in cycle 04 caught this" | — | — | **NOT-CAPTURED** — no artifact of the original failing run survives | Counts: **17 REPRODUCED, 1 DIVERGED, 1 NOT-REPRODUCIBLE, 2 NOT-CAPTURED.** --- ## A1/A2 — measured from emitted C, because the doc's instrument does not measure the system The cycle's headline — *three emission points, all keyed on `fn_name`* — is asserted in `seam_caller.sh` by this line (`0034`): ``` chk "no fourth emission point was added" "3" \ "$(grep -c 'el_seam_run(EL_STR\|el_seam_wrap(EL_STR' el-compiler/src/codegen.el)" ``` That greps **compiler source text**, while the harness runs a **prebuilt compiler** passed in as `$1`. The source it counts is never compiled by the harness. Commit `fbb3a52` records this as a standing defect. I confirmed it independently, in both directions, with my own artifacts: | | grep of source | emitted-C emission points | compiler sha256 | harness | |---|---|---|---|---| | baseline (`0035`) | 3 | 9 | `e99058b8…` | 5/5 green | | after appending one **comment line** (`0036`, `0037`) | **4** | **9** | **`e99058b8…` unchanged** | **FAILS, "expected 3 got 4"** | A comment — zero semantic change, byte-identical binary, identical emitted C — turns the cycle's central assertion red. The assertion measures a text file, not the system. **So I did not rely on it.** A1–A6 above are graded against the **emitted C produced by the binary under test**, which is causally downstream of the compiler and therefore an actual measurement. Compiling a probe containing a loop, a call site, a map field access and four functions (`0030`) yields (`0028`): ``` fields -> entry wrap exit loops -> entry wrap exit helper -> entry wrap exit total emission points = 9 ``` Three functions with bodies, three points each, nine total, every one keyed on the function name. `main` gets none. **Loops, call sites and field accesses get none** — which is precisely the bound the cycle claims, now established by observing the compiler's output rather than by counting strings in its source. This is a stronger result than the document's, obtained because the document's own instrument was found untrustworthy. The conclusion the cycle drew was right; the evidence it offered for it was not. --- ## A15 — the one divergence, reported loudly The conclusion reproduces. The numbers do not. ``` doc: round 1 base 0.25 s stack 0.24 s round 2 base 0.25 s stack 0.24 s round 3 base 0.24 s stack 0.24 s measured: 7 interleaved rounds, alternating, identical workload round BASE STACK 1 51 53 2 53 52 3 52 53 4 53 53 5 52 52 6 52 52 7 53 51 BASE mean 52.29 ms min 51 max 53 spread 2 sd 0.70 STACK mean 52.29 ms min 51 max 53 spread 2 sd 0.70 STACK/BASE ratio of means = 1.0000 (+0.00%) ``` **Today's absolute figures are ~4.8× faster than the doc's** — 52 ms where the doc reports 240–250 ms. The doc's conclusion is nonetheless confirmed, and confirmed harder: where the doc showed a 1-round-in-3 wobble of 0.01 s, seven interleaved rounds give means equal to two decimal places and identical spread. The magnitude gap is explained, and the explanation is the point of the cycle (`0025`): ``` FIRST (cold) run, BASE = 225 ms FIRST (cold) run, STACK = 229 ms steady-state warm mean over 14 runs = 52.29 ms cold/warm ratio, BASE = 4.30x ``` The doc's 0.24–0.25 s figures sit in the cold-cache band; its steady-state equivalent is 52 ms. **Cache state alone moves this workload by 4.30×, which is larger than the 50% (0.48 → 0.72 s) "regression" that was originally reported and then retracted.** That single number does more to explain the phantom regression than the retraction in the doc does: the original pair of timings was not merely noisy, it was almost certainly comparing a cold run against a warm one. Recorded as DIVERGED because the doc presents 0.25 s and 0.24 s as measurements of this workload and they are not reproducible as such — they are reproducible only as cold-start measurements. The *finding* they support — no regression — is REPRODUCED (A13, A16). ## A14 — why NOT-REPRODUCIBLE P7 concerns a variant in which the depth-stack maintenance sits **before** the unbound early-out. That variant was never committed; only the post-early-out form exists in history (`0003`). Reconstructing it would mean writing a mutant today and grading a historical prediction against it, which is a new experiment, not a reproduction. The runtime comment in `0003` states the 50% figure that motivated the move — but a comment is a claim, not a measurement, and no artifact of it survives. ## Notes on tree state Every `.prov` records `d9d1571f2…` or `d403a5cf2…`. `0041` shows the worktree ended with only untracked build scaffolding (`elc-stack`, `g2.c`, `work/`) and no modified tracked file: the deliberate source mutation in `0036` was reverted in `0038` and the revert is in the record. Both worktrees were removed after capture. `0023` is a failed instrument run (a malformed `awk`, exit 2) and is retained rather than deleted. Removing a failed attempt from an evidence record is itself a measurement defect; `0024` is the corrected run.