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.
4.4 KiB
DEFECT — string literals containing control bytes compile to a heap address
Not a cycle claim. This is a live miscompilation in the current compiler, found incidentally during the cycle 01–10 evidence re-run and confirmed at branch HEAD.
It is filed with the evidence because it invalidates a method that cycles 01–04 rely on: "the emitted C is byte-identical" is only meaningful if the emitter is deterministic, and for affected inputs it is not.
Provenance
Captured from a clean detached worktree at 9540f2399 (iteration-2 HEAD), compiler
built at that commit. All artifacts tree=clean.
Found by the cycle 04 agent while checking prediction 5 ("existing @manager output
byte-identical") across the whole tree: of 378 .el files, 368 emitted identically
under the parent and the commit compiler, 9 failed under both, and 1 differed — and
differed from itself between two runs of the same compiler. I reproduced it
independently at HEAD before accepting it.
The defect
A string literal containing a raw control byte with no escape mapping is emitted as a decimal heap address instead of the string.
0002-control-char-vs-empty-and-printable.out isolates it exactly:
8: el_val_t a = EL_STR("");
9: el_val_t b = EL_STR("ok");
10: el_val_t c = EL_STR("4324455808"); <-- source literal is a raw 0x1F
11: el_val_t d = EL_STR("\t");
- empty literal
""— correct - printable literal
"ok"— correct - raw
0x1F(unit separator) — emitted as4324455808 - raw
0x09(tab) — correct,"\t"
Tab has an escape mapping and survives. 0x1F has none, and instead of being escaped
it falls through to a path that stringifies a pointer.
It is nondeterministic
0001-minimal-reproducer-control-char-literal.out, three consecutive runs of the
same compiler on the same source:
--- emitted run 1 --- el_val_t sep = EL_STR("4344967392");
--- emitted run 2 --- el_val_t sep = EL_STR("4347851136");
--- emitted run 3 --- el_val_t sep = EL_STR("4384031472");
The value tracks the process heap base, which moves under ASLR.
It occurs in real code in this repository
0003-real-file-nondeterminism-arbor-parse.out. arbor/vessels/arbor-parse/src/main.el
uses 0x1F as a field separator — El source line 259, shown through cat -v:
if i > 0 { let out = out + "^_" }
Two runs of the same compiler over that file produce different sha256, differing in
three places, each a separator literal rendered as a different address. Within a single
run the corrupted values differ by fixed offsets (+2240, +32208), consistent with
distinct literals in one heap arena; across runs the whole block shifts.
The file applies no decorators at all, so this is unrelated to the construct work
in cycles 01–10, and it reproduces at cycle 04's parent 4f7568b as well as at HEAD.
It predates the cycle series.
Why it matters
- Silent miscompilation.
arbor-parsebuilds and links. At runtime it joins and splits records on a separator that is a decimal rendering of an address rather than0x1F— and the encode and decode sides get different values whenever they are compiled separately. No diagnostic is produced at any stage. - Reproducible builds are broken for any source containing such a literal.
- It weakens byte-identity as a control. Cycles 01, 02, 03 and 04 all assert
"emitted C is byte-identical". Those assertions were checked on decorator-bearing
sources, which are unaffected — the cycle 04 agent verified all 3
@manager/@accessorfiles emit identically — so no cycle verdict changes. But the control itself is only sound on inputs that avoid this defect, and nothing in the record says so.
Verdicts
| Claim | Artifact | Verdict |
|---|---|---|
| Control-byte literals emit as an address, not the string | 0002 |
CONFIRMED |
| The emitter is nondeterministic for such inputs | 0001 (3 runs) |
CONFIRMED |
| A real file in this repo is affected | 0003 |
CONFIRMED |
| The defect predates cycles 01–10 | cycle 04's 0049-series (parent 4f7568b shows it too) |
CONFIRMED |
Not fixed here
This evidence pass does not change code. The defect is recorded, reproduced, and minimally isolated so it can be fixed and regression-tested separately. A fix should escape all non-printable bytes in the literal emitter and add a test asserting that compiling the same source twice yields byte-identical output.