Repository navigation
r2il-mask-abi-probe: V3 facet and V4 call as two readings of one buffer (Round 3) - #1349
Conversation
Round 3. One 64-aligned NodeRow buffer, read two ways with no
translation: V3 via node_rows_from_le_bytes + FacetCascade::ref_from_bytes,
V4 via ogar_loco::call_in_slab and ogar_r2il::{r2il_mask, project}.
G6D2 rails and LaneShape::Pairs are the same carving, so tier k of slot l
is call 6l+k at the same address. Owner writes are seen by both readings,
reading writes nothing and allocates nothing, and per-slot classids never
reach a V4 call.
Executing a stored body through loco is not a reading: Program owns a
gathered FunctionBody, a 360-byte copy. No classid -> LaneShape resolver
is shipped; the caller passes the shape.
The probe workspace patches the git lance-graph-contract to the local
path, so ogar-loco and the probe see one contract identity. Six disable
runs go red.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MHMvKHLhM6xwRswKY4s6vY
|
Warning Review limit reachedYour organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Next included review available in 29 minutes. View limit detailsLimit details: You’ve used the included review currently available. Your 66 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (4)
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Comment |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: dc9162dc-23c6-45e2-a51d-25dbdbfadce6) |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This is Round 3 of the arc whose Rounds 1–2 merged in #1347. It tests whether V3 data and V4 IR can be two readings of the same resident bytes, and finds where that holds and where it stops.
The probe
crates/r2il-mask-abi-probe/tests/v3_v4_dual_reading.rshas 8 tests. There is one owner: a 64-aligned buffer of twoNodeRows (2 × 512 bytes). It is written once, at intake, byFunctionBody::write_into_value_slab. After that, two shipped readings are taken over it, with no translation step between them:node_rows_from_le_bytesreinterprets the buffer asNodeRows, andFacetCascade::ref_from_bytesreinterprets each 16-byte value slot.ogar_loco::call_in_slabreads each call in place under aLaneShape, andogar_r2il::{r2il_mask, project}select the R2IL calls.The two readings line up because V3's
G6D2rails and V4'sLaneShape::Pairsare the same carving of a slot's 12 payload bytes. So tierkof slotlis call6l+k, at the same address. The tests pin this as follows:both_readings_address_the_same_bytesTriplesandQuadscarvings also read the slab in placeevery_lane_shape_reads_the_slab_in_placean_owner_write_is_seen_by_both_readingsreading_never_mutates_the_bytesreadings_allocate_nothingslot_classids_do_not_reach_the_v4_readingthe_reading_is_not_recoverable_from_the_bytesWhere the shared reading stops
Interpreterruns aProgram, andProgram { functions: Vec<FunctionBody> }owns its bodies. The only way to build one from the resident bytes isread_from_value_slab, which copies the 360 payload bytes into a second, heap-owned representation (loco_execution_needs_a_gathered_copy).LaneShapein directly.Build change
The probe crate gains a path dev-dependency on
lance-graph-contractand a[patch]. The patch points the gitlance-graph-contractthatogar-loco/ogar-r2iluse at the local path, so the probe workspace compiles one contract, not two.Verification
from_bytes, an offset that skips the classid prefix, V4 reading a copy taken before the write, a write during reading, V4 consulting the slot classid, and the gather replaced by a borrow.-D warningsand fmt are clean, and CI runs this crate atrust-test.yml:176.Board entry:
2026-10-06-v3-v4-dual-reading-round3.md.🤖 Generated with Claude Code
https://claude.ai/code/session_01MHMvKHLhM6xwRswKY4s6vY
Generated by Claude Code