Skip to content

lab_t27b_ratchet: the usize scratch arrays start at zero, so the t27b interpreter reads no byte that was never written - #11136

Merged
gHashTag merged 2 commits into
masterfrom
lane/t27b-ratchet-fix-11131
Oct 19, 2026
Merged

gHashTag merged 2 commits into
masterfrom
lane/t27b-ratchet-fix-11131

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Closes #11131

lab_t27b_ratchet: the usize scratch arrays start at zero, so the t27b interpreter reads no byte that was never written

Gates run on the merged tree (t27c from master): 1 spec(s) with tests clean and vacuous passes 0, seal --verify MATCH, tri types ratchet CLEAN, dupe_scan failure set a subset of master's (inherited red).

TEST specs/lab/lab_t27b_ratchet.t27 tests=[14] fail=[0] vacuous=[0]
SEAL specs/lab/lab_t27b_ratchet.t27 :: all hashes MATCH
TYPES RATCHET: CLEAN
DUPE failing=0 extra-vs-master=[]

Cause and measurement (issue #11131). On master, t27b test specs/lab/lab_t27b_ratchet.t27 --check printed MISMATCH the_ratchet_equals_the_pythons_checker_on_every_case: jit Ok(1), interpreter Err(Fault("8-byte read at stack+0x6ff8 of bytes never written")) and 1 JIT/interpreter mismatches; the interpreter had run 794 runtime asserts when it stopped. The spec declares nine [3]usize scratch arrays (sp, d, bsp, lsp, dsp) with no value; they are now [0, 0, 0]. After the change the same command exits 0 with no mismatch, the interpreter runs 1824 runtime asserts and the 14 tests pass. A probe that initialised one array at a time still mismatched for each of the nine, so the read is not in a single one; the change takes all nine.

No Rust and no t27b change: the fix is in the spec, as the issue's FR-002 asks. The t27b interpreter's refusal of a read-before-write is the right behaviour and is left as it is.

🤖 Generated with Claude Code

claude and others added 2 commits October 20, 2026 02:11
… interpreter reads no byte that was never written (Closes #11131)

t27b test --check on the spec printed MISMATCH the_ratchet_equals_the_pythons_checker_on_every_case: jit Ok(1), interpreter Fault("8-byte read at stack+0x6ff8 of bytes never written") and 1 JIT/interpreter mismatch, which made the t27b-native-ratchet of every PR read jit/interp mismatch 1. Nine [3]usize scratch arrays were declared with no value; they are now [0, 0, 0]. After the change t27b test --check exits 0 with no mismatch (the interpreter runs 1824 runtime asserts, it stopped at 794 before) and the 14 tests pass.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… interpreter reads no byte that was never written (Closes #11131)

Merge of master plus sealing, gates run on the merged tree with t27c from master: tests clean with vacuous passes 0, seal --verify MATCH, tri types ratchet CLEAN, dupe_scan failure set a subset of master's.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-19 19:17:19 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 47
PRs with All Checks Green 3
READY 2
FAILING 47
PENDING 0
NO CHECKS YET 0

These columns do not partition: 2 + 47 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e34e1b174c96 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[bug] t27b: lab_t27b_ratchet.t27 gives jit Ok(1) and an interpreter fault (read of bytes never written); ratchet shows jit/interp mismatch 1

2 participants