Repository navigation
Phase 2 numbers: exact int64 and IEEE doubles (#1758) - #1776
Draft
InauguralPhysicist wants to merge 341 commits into
Draft
InauguralPhysicist wants to merge 341 commits into
InauguralPhysicist wants to merge 341 commits into
Conversation
Merging this PR will degrade performance by 37.79%
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing |
This was referenced Oct 15, 2026
Member
Author
This was referenced Oct 15, 2026
| double fl = floor(f); /* in [-2^63, 2^63): the cast is exact */ | ||
| int64_t il = (int64_t)fl; | ||
| if (i != il) return i < il ? -1 : 1; | ||
| return f != fl ? -1 : 0; /* i == floor(f) < f when f has a fraction */ |
This was referenced Oct 18, 2026
This was referenced Oct 19, 2026
Register r319-stall-window-newest, scoped to the non-finite reader: values_head - 1 - i becomes values_head - 2 - i. Leave the amplitude reader unchanged. Move EXPECTED_STALL, --only and hosted pins to ten. Validation: r9-newest-plant actual rc3 (restricted success), unplanted measured=4 failures=0; mutant four own-name nan-newest FAIL lines, each [105, 'stalled', 'improving', False] against the exact101 pin. stall-plants=1 killed=1 survived=0 broken=0; stall-unplanted=1 expected=10. Only this plant ran locally; full-family/selector execution stays hosted. Refs #1758, RULING R31-9 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Record the newest-prefix witness beside R31-8's oldest-prefix witness. Move current counts to ten stall plants and 68 readings. List the four reader degrees of freedom with the prescribed rows/plants and attribute the wrap/count-source mutations to the prior critic. Keep both periodic 100..112 bands unchanged; no extra plants or equivalent-extent row. Validation before checkpoint: independent text inventory and git diff --check rc0. Final bounded build/contract/identity/inventory/changelog gates follow; runtime code and pre-registration inputs are unchanged. Refs #1758, RULING R31-9 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Add O3.ocfg-no-hlow in off/default/osr/trace, plus count 3/0, extra text and noninteger window witnesses. The transcript pins each exit and first stderr line. The plant adapter reads this same MAP transcript and keeps a valid four-field control. Tests-first calibration on 3eed5ca: 4 tiers examined, 4 RED as expected, 8 records per tier, no runtime source change; base release build rc 0, 0 warnings. base-red-proof.json and row-base-red-a1.log preserve the evidence. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Write O <stream> cfg <dh_zero> <dh_small> <window> <scale>, keeping format 10. Count whitespace-delimited fields before parsing or storing configuration; refuse every other count with the named diagnostic. Preserve four-field value refusals and require whole numeric tokens, including the integer window. Remove h_low from observer records and state. The nonnumeric entropy readers and get_observer_thresholds use OBSERVER_H_LOW_DEFAULT. Keep the writer, reader and struct deletions atomic so no intermediate ABI can misparse a record. No predicate test changes. Local: release rc=0, 0 warnings; clang 6 C files, 0 diagnostics; O3 row 32 cases/4 tiers green after 4/4 tiers red on 3eed5ca; trace-mt 23/23 and replay 48/48; inventory examined=2205 classified=2205 unclassified=0; old grammar calibration red 5/6 and restored 6/6. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Register separate legacy-five, at-least-four and at-most-four count faults. Each runs its named MAP case in all four tiers with a valid-four control, then removes its assertion while retaining a visible mismatch. Pin three ocfg plants and three unplanted controls alongside the existing families; run the new plants separately at acceptance. Advance phase2 CI to --through R3.2 and register g_obs_h_low as a deleted token. One-time token calibration: R3.1 green on that token, R3.2 red, restored green. Bash syntax check rc=0; unplanted O3 adapter examined=32 mismatches=0 failures=0 controls=4 control_failures=0. Full plant-family and selector runs remain hosted under R31-7a. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Document the four-field v10 record, exact-count refusal before parsing/installing, and the compiled entropy constant. Keep get_observer_thresholds as three floats. Correct the stale R3.2 cutoff in the windowed-stable test comment and clarify that O3 removes h_low from the tape only. Inventory walk: all 25 R3.2 files reviewed deliberately (details in r3-2.report.md); historical and unchanged compatibility tests retained. No program or supported embed API moves observer configuration; no synthetic writer path added. docs/TRACE.md records this reachability boundary. No cost declarations, predicate rules or preregistration changes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Add the seven R32-1 install witnesses under the existing O3 row. Each records the prescribed flat or slow program, splices at V/B, steps s 400, prints x, and pins the exact label and rc in all four tiers. Keep all eight original cases and their expectations byte-for-byte as the prefix. Capture a reader child crash inside its case so the MAP adapter reports a named mismatch rather than a broken harness. The runtime source is unchanged. Local witness gate: examined=60 mismatches=0 failures=0 controls=4 control_failures=0, rc=0. All seven prescribed labels agree in all four tiers. Full family and broad gates remain hosted under R32-1. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Add the four-field 0x4 window witness without changing the original eight cases. The correct decimal reader exits 3 with its existing truncated-record refusal in every tier. Local all-case checker rc=0: examined=64 mismatches=0 failures=0 controls=4 control_failures=0. Raw four-tier transcripts retained; the release was force-built serially with zero warnings and reproduced sha256 4b39c6ff3b7cbd3070bb18b0f026dbb6150607af4d3554c9d851a68d11480720. Runtime source remains unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Register the two critic survivors and four individual obs_cfg_install assignment deletions, each tied to its R32-1 MAP case in all four tiers. Retain the green control and assertion-deleted twin; a reader child crash remains a named mismatch. EXPECTED_OCFG and registry pins become nine. Calibration on saved critic binaries: m2 fails cfg-4-window-hex in four tiers; m3 fails cfg-install-window with rc 139 in four tiers, checker rc=1 without BROKEN. Unplanted full checker: examined=64 mismatches=0 failures=0 controls=4 control_failures=0. Bash syntax and JSON pins validate. The six new plants run separately from this committed archive; no family run locally. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Replace the obsolete live-builtin-invariants claim with the reader bounds themselves. Name the seven field-install/no-record cases and the base-10 0x4 refusal in MAP and the R3.2 changelog fragment. The R32-1 residual reader spellings and NUL handling remain untouched under #2334. Local checker rc=0, examined=64 mismatches=0; changelog check against 3eed5ca rc=0. Runtime, lib, suite runner and cost declarations remain byte-identical to 59dbc3d. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Item 5 receipt only; source tree unchanged from the preceding text commit. The forced serial release build reproduced sha256 4b39c6ff3b7cbd3070bb18b0f026dbb6150607af4d3554c9d851a68d11480720, with zero warnings. Protected diff vs 59dbc3d is empty for src/, lib/, tests/run_all_tests.sh and tests/phase2/cost_expect.txt (149 files match). The round-1 oracle/stall/trace-mt/replay/phase2 receipts carry under R32-1. All-case checker rc=0: examined=64 mismatches=0 failures=0 controls=4 control_failures=0. Seven install/no-record label pins and the 0x4 refusal match in all four tiers; the original eight cases remain byte-identical. Six new plants each ran alone and returned restricted-success rc=3: binding, window-base, drop-dh-zero, drop-dh-small, drop-window, drop-scale. Each has 4 own-case red lines, 4 green controls, and 4 live mismatches after assertion deletion with 0 failures. New plants killed=6, red lines=24, survived=0 broken=0 transverse=6. Registered ocfg count=9; family not run. Binding child rc139 is a named case failure, not BROKEN, per R32-1. Inventory rc=0: examined=2205 classified=2205 unclassified=0. Changelog check 3eed5ca rc=0. No broad gates rerun locally, no source or predicate change, no #2334 residual fix, no push or dispatch. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
R32-2 item 1: copy the supplied tiny, p1 and p2 programs and step their no-record tapes with s 400 then p x. Labels are improving, stable and moving in off/default/osr/trace. Checker rc=0: examined=76 mismatches=0 failures=0 controls=4 control_failures=0. Existing 16 cases are byte-identical. Runtime unchanged; no arm, split, decision rule or oracle-corpus edit. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
R32-2 item 2: pin thresholds 0/-1, equal thresholds, scales 0/1e301/0.001x, windows 3/65/4294967304 and accepted window 64. Every refusal pins exit 3 and its complete first stderr line; max-window acceptance pins exit 0. Checker rc=0: examined=120 mismatches=0 failures=0 controls=4 control_failures=0. Existing transcript is an unchanged prefix. Runtime unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
R32-2 item 3: copy ec_low, ec_high, es_low and es_high exactly from the supplied sweep. Run live without a tape in each MAP tier; pin converged, equilibrium, moving and stable. Checker rc=0: examined=136 mismatches=0 failures=0 controls=4 control_failures=0. All cases live in O3.ocfg-no-hlow, so the existing MAP and plant paths execute them. No runtime or oracle-corpus edits. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
R32-2 item 4: register eleven supplied exact-text mutants and their named case choices: three start defaults, positive dh_zero, max/narrow windows, scale whole-token guard, four live entropy readers. Keep green control and assertion-deleted transverse execution in all four tiers. EXPECTED_OCFG and selftest pins become 20. Syntax and argument checks rc=0; unplanted checker rc=0 examined=136 mismatches=0 failures=0 controls=4 control_failures=0. Each new plant will be run alone and its measured receipt committed as item 7; no family run. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
R32-2 item 5: audit every tape fold caller and record the test boundary at the O3 row. Stepper p/t and DAP variables/evaluate serialize folded labels; they do not evaluate live programs or read configuration between folds. Each fold resets all four defaults. tape_classify_at returns a literal label and count only. EMBED_SOURCES excludes the CLI-only tape reader; no embed fold exists. Capture/restore therefore has no observable through current clients; retain as a residual rather than inventing a path or modifying src. Record the third entropy condition as dead because both branches return stable. Executable test body unchanged; preceding 136-case control stands. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
R32-2 item 6: MAP witnesses and the R3.2 fragment name the start-state, refusal/acceptance and live entropy cases. Runtime, arm, split, decision rule and oracle corpus unchanged. Report deviation: the round-1 oracle floor did not exercise the entropy threshold; ec_low, ec_high, es_low and es_high now carry that claim. The earlier oracle receipt is retained only within its measured scope. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Item 7 receipt only; tree unchanged from the preceding text commit. Forced serial make -B build rc=0, zero warnings, exact binary SHA256 4b39c6ff3b7cbd3070bb18b0f026dbb6150607af4d3554c9d851a68d11480720. Protected diff vs a4decc0 empty: src/, lib/, tests/run_all_tests.sh and tests/phase2/cost_expect.txt; all 149 files match. Earlier oracle, stall, trace-mt, replay and phase2_check receipts carry under R32-2. Checker rc=0: examined=136 mismatches=0 failures=0 controls=4 control_failures=0. All 18 new cases match in off/default/osr/trace: three no-record start labels, eleven range/token refusal/acceptance cases, four live string entropy labels. Original 16 cases/32 lines unchanged; the .out diff only adds 36 lines. No oracle-corpus or decision-rule edit. Eleven new plants, each alone: rc=3 restricted success, four own-case red lines, green unplanted controls and assertion-deleted twins. New plants killed=11 survived=0 broken=0 transverse=11, named red lines=44; ocfg registrations=20. Full family not run. Each twin retains four live mismatches and zero failures, with four independent controls green. Inventory rc=0: examined=2205 classified=2205 unclassified=0. Changelog check 3eed5ca rc=0. Broad gates left hosted (lanes=all + phase2). The oracle floor does not exercise the entropy threshold; ec_low/ec_high and es_low/es_high carry that claim. Capture/restore has no observable through existing CLI/DAP clients; no embed fold exists. The third entropy condition is dead. Both residuals and #2334 remain unchanged. Nothing pushed or dispatched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
…1758) The four live string-entropy cases of O3.ocfg-no-hlow unset EIGS_TRACE, so their trace tier repeated the default tier. They now inherit it: the trace tier records the run, and its leaf differential covers the entropy readers. Expected output is unchanged (136 cases, 0 mismatches); the four entropy-threshold mutants are red on their own case with and without recording. Orchestrator fix-up on Sol's round 3 (RULING R32-2 item 3). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
…1758) RULING R32-3. A mechanical sweep (universalmutator, 941 mutants over the executable lines R3.2 wrote or edited) left 70 distinct surviving binaries at 108306d. Twenty new cases in O3.ocfg-no-hlow tell 35 of them, and the third critic's four, from the head: - whole-token fields: junk after dh_zero and dh_small, a `.5` window, a text scale, a byte above 0x7f after the scale; - dh_small 0 refused as a threshold; a window of -4294967292 refused, not narrowed to 4; - separators: runs of spaces, a trailing space, a vertical tab; - only the exact keyword `cfg` installs (cfa, cfz, cfgx, cfg + high byte install nothing; `O win` still applies); - the entropy constant bracketed between 0.09896 and 0.100001 for both readers, and the third reader's partial-window label. The remaining 35 are equivalent by argument (ruling). 54 cases in four tiers: examined=216 mismatches=0. The 34 earlier cases' lines are unchanged. src/ is not touched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
The third critic's survivors (r324-guard-dh-zero, r324-keyword-blank, r324-count-blank), the entropy constant moved by 0.001 and 0.002 (r324-entropy-converged-tight, r324-entropy-stable-tight) and the third reader's partial-window label (r324-report-partial). 26 ocfg plants. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
…on (#1758) RULING R32-3. The literal-substitution class the third critic's entropy mutant belongs to, applied to the other constants R3.2's lines read: - the fold's start dh_zero, dh_small and scale: for each, two no-record trajectories whose 11-value window diameter sits 2e-8 (relative) either side of the threshold the default implies; - the start window: ten repeats do not fill it, eleven do; - a record's dh_zero 1e-14 above the diameter and 4.6e-11 above the nearest float: a record value is carried as a double; - `1e-300 1e-299 10 1e300` is accepted (the bounds of the range checks). The vertical-tab record now uses nothing but vertical tabs, so the whitespace class of every field guard is covered. 65 cases in four tiers: examined=260 mismatches=0; the 54 earlier cases' lines are unchanged. 20 hand mutants (literal, float width, ctype, base 8) are all red (briefs/out/r3-2/orch-sweep/um/hand.tsv). src/ is not touched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
… to 1 (#1758) RULING R32-4. The fourth critic refuted two equivalence claims of R32-3. - A float literal (0.1f = 0.1 + 1.49e-9) in either entropy reader passed the 0.09896 / 0.100001 bracket. Four live cases now use six-letter strings of 4856 and 5049 bytes whose entropy is 0.1 - 1.04e-9 and 0.1 + 6.6e-10: constant (converged / equilibrium) and grown in 14 steps (moving / stable). - A converged reader returning 2 or -1 is invisible to a program (the predicate word is a bool) but not to a host: observer_predicate_at returns the int. tests/test_embed_observer.c drives a binding onto the entropy route and checks the direct read answers exactly 1. 69 cases in four tiers: examined=276 mismatches=0; the 65 earlier cases' lines are unchanged. embed observer: 45 passed. src/ untouched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
r325-entropy-converged-float and r325-entropy-stable-float: the entropy constant replaced by 0.1f in each reader, red on the near-above case. 28 ocfg plants. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
…1758) RULING R32-4 states a tolerance of 1e-8 (relative) on the entropy constant. The below string sat 1.04e-9 under 0.1; this one (5267 bytes, five letters) sits 2.8e-10 under. Expected output is unchanged: examined=276 mismatches=0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
…sition and stream (#1758) RULING R32-5. The fifth critic refuted R32-4's tolerance: exact 0.1 is reachable with no string and no libm, through a trajectory snapshot dict (`"entropy": 1 / 10`). A mechanical identifier-swap sweep (269 mutants) found two more gaps of its own. Eighteen new cases: - the entropy readers at 0.1 and at the next double below, through snapshot dicts whose `last_entropy` and `dH` sit on the opposite side (strictness, the constant to the last bit, the wrong slot field); - `get_observer_thresholds` prints `[0.001, 0.01, 0.1]`; - the fold's start thresholds at equality and one representable bump above: dh_zero * scale, dh_small * scale, dh_zero * 1000, dh_small * 100; - the range checks at their bounds: the smallest positive double accepted, the next double above 1e300 refused; - a record governs only the records after it (spliced mid-tape, the earlier stop keeps the default label) and only its own stream (the same record on a second declared stream changes nothing on stream 0). 87 cases in four tiers: examined=348 mismatches=0; the 69 earlier cases' lines are unchanged. src/ untouched. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
r326-entropy-converged-strict, r326-entropy-stable-strict (`<=` at each reader), r326-entropy-field (the reader takes ent_last_entropy), r326-record-position and r326-record-stream (the record's index and stream overwritten). 33 ocfg plants. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
…ond stream and after a valid record, shared plant tree (#1758) The sixth blind critic failed round 6 on one point: the identifier-swap table was written by hand and had no ParseStream group, so free(streams) -> free(ps) on the three O cfg refusal lines survived. - Row: the three refusals (field count, parse, range) repeated on a second declared stream, where the mutant aborts instead of exiting 3; the field-count refusal repeated after an accepted record, where free(streams) -> free(q0) aborts on the earlier record's pointer; the window-4 record at a second placement one record later, so a record's reach is bounded from both sides (rec + 1 is red on the new placement, rec - 1 on the old). 93 cases, 372 examined. No earlier transcript line changes. cfg_case keeps the shell's report of a killed reader out of the row's stderr, so an abort is a named failure, not a broken row. - Plants: r327-refuse-count-table, -parse-table, -range-table and r327-record-next (37 in the family). - Plant runner: the O-configuration plants share one build tree and rebuild incrementally, with a checksum guard against a stale binary. 33 full builds had taken the hosted changed-rows self-test job to its 90-minute limit (89 minutes on the pull-request run, cancelled on the dispatch). - Texts: the smallest positive double is accepted for dh_zero and the scale; dh_small's accepted bound is the next double above it. src/ is unchanged since round 1. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0149GnPzPmYhjGZMKwLefTVr
Member
Author
|
PRWATCH 2026-11-06: draft, by design. R3.2 (design O3, the four-field |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Integration branch for #1758, Phase 2 numbers: an exact int64 kind beside IEEE 754 doubles, while keeping the observer and deterministic replay. This is a draft; it lands when every round is done and the #1758 Done-when holds.
The plan is
docs/design/phase2-numbers.md. Two blind critics reviewed it over three design rounds. Rounds://and floor%;Landed on this branch so far:
docs/design/phase2-numbers.md; a 1,798-site inventory checked bytools/phase2_inventory.py;tests/phase2/MAP.md, with tier-witnessed rows per round.0xFFFAand its API exist; nothing produces an SMI yet.slot_is_num,SLOT_NUM_RAWandslot_from_numare renamed, andslot_is_numericandslot_as_doubleare deleted, so every old reader stopped compiling until given an explicit int decision.[0fk]),tools/phase2_check.sh --through <round>, the int-source check, and a corpus differential against main.Related: #1763 and #1774 (float-to-int casts that silently misbehave on large values, which N5 covers); ouroboros#301 (the AOT runtime follows the renames at its EIGS_REF bump).
Closes #1758
Closes #1638
🤖 Generated with Claude Code
https://claude.ai/code/session_01KC99CmwatKssQYggkBCgwF