You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
#1758 R1.6d: rule-7 staging for nonfinite buffer reader callers outside d #1919
R1.6d's rule 7 requires deciding every buffer_read_num caller before migration, and stopping a cross-round site if the replacement changes behavior that no d table/MAP row pre-registers.
The final buffer_read_f64 reader refuses stored infinity (and lenient NaN), while the bridge normalizes infinity to +/-1e308 and lenient NaN to zero. Raw nonfinite buffer payloads are reachable today through buffer SGD, before R2.2. On the exact 4e77a9d release baseline, both strict modes run this with rc=0:
p is buf_from_list of ([1e308])
g is buf_from_list of ([1e308])
sgd_update of [p, g, 1e308]
print of p[0]
print of (p == p)
stdout is -1e+308, then true. The current d buf_get migration refuses that payload with value, confirming that it is not safe to treat the data-reader rename as behavior-preserving outside d.
Unresolved sites: vm.c's 8 indexing/iteration/leaf calls; eigenscript.c's 2 buffer-equality calls; eigs_embed.c's getter; ext_gfx.c's audio_convert_samples call. Byte consumers ext_net.c/net_send and eigenscript.h/buffer_read_byte additionally belong to frozen f/e rows, respectively. The wrapper reaches both gfx_fb and ppu_render_frame.
The implementation is stopped on those sites and the bridge definition is unchanged. Independent d tensor/buffer/model work can proceed. No frozen expectation was changed.
Done when:
An orchestrator ruling assigns the out-of-d data-reader calls to a round.
That round has pre-registered witnesses for stored infinity and lenient NaN for indexing, iteration, equality, embed access, and affected audio consumers.
VM speculative/leaf paths preserve generic error context and agree across execution tiers.
e/f byte consumers retain their frozen .pre until their declared round, or receive an explicit ruled staging amendment.
The assigned commit migrates all its listed callers and reports its before/after counts.
Thanks for filing. Labelled needs-triage because it has no area: label yet. The scheme is area:<subsystem> (runtime-vm, jit, concurrency, observer, memory, trace-tape, packages, http, gfx, embed, docs, ci, gates, lint-tooling, consumer, aot, stdlib) plus a kind (kind:*, or the stock bug/enhancement) — add the ones that fit if you know them, and a maintainer will confirm and drop needs-triage. See CONTRIBUTING.md, "Reporting Bugs".
Done by R1.6z, landed on phase2-numbers as db349464 (#1776 comment 6392374654; full lane GREEN 26/26). Each box:
The ruling: R1.6d-D1 assigned the out-of-d reads: vm.c's 8 to R1.6z, the gfx and net consumers to R1.6e/f.
The witnesses: stored infinity and lenient NaN were pre-registered BEFORE migrating, for indexing, iteration, local-index and the JIT leaf (the N13.vm-buffer-*-data rows), for equality (N11.buffer-equal-ieee) and for embed access (gate.N11.embed-buffer-get-raw). The audio consumers were done in R1.6e.
The VM tiers: every pre-registered row agrees on kind, message and line across off, default, OSR and trace (the blind critic independently checked 90 of 90).
The e/f byte consumers kept their frozen .pre until R1.6e/f.
The migration retired every listed caller, with before and after counts in the round's report.
Activity
github-actions commentedon Oct 22, 2026
Thanks for filing. Labelled
needs-triagebecause it has noarea:label yet. The scheme isarea:<subsystem>(runtime-vm, jit, concurrency, observer, memory, trace-tape, packages, http, gfx, embed, docs, ci, gates, lint-tooling, consumer, aot, stdlib) plus a kind (kind:*, or the stockbug/enhancement) — add the ones that fit if you know them, and a maintainer will confirm and dropneeds-triage. See CONTRIBUTING.md, "Reporting Bugs".InauguralPhysicist commentedon Oct 23, 2026
Status: ruled by R1.6d-D1 (#1758 comment 6350698634), which deferred each site to the round that owns it:
audio_convert_samplesand thebuffer_read_bytewrapper (gfx_fb,ppu_render_frame): done in R1.6e, pre-registered first;net_send: done in R1.6f (N5.net-send-byte-raisesandgate.N5.net-byte-boundary);This stays open until R1.6z lands.
InauguralPhysicist commentedon Oct 25, 2026
Done by R1.6z, landed on phase2-numbers as
db349464(#1776 comment 6392374654; full lane GREEN 26/26). Each box:N13.vm-buffer-*-datarows), for equality (N11.buffer-equal-ieee) and for embed access (gate.N11.embed-buffer-get-raw). The audio consumers were done in R1.6e..preuntil R1.6e/f.