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
release blocker: native-region proof contracts lag packed-loop and byte-read lowering #9150
Full CI run 33298955917 failed compiler-output-regression in the native-region-proof suite at release SHA 97bae62ad9ee781830e609eda17429c16ccb1285.
The exact three failing workloads are:
image_convolution
packed_f64_loop_versioning
packed_f64_loop_versioning_negative
Diagnosis
The immediately preceding release revision 330638064a passes all three on perrymaster.skelpo.net. The later mainline optimization merge changes the structural contracts:
PR codegen: byte-array reads reach the numeric proofs (bench_int_arithmetic 475 → 395 ms) #9146 correctly restores byte-array += to native numeric addition while preserving OOB undefined. The image blur now contains only the 75 documented js_number_coerce calls for kernel coefficients; the PR explicitly declined the unsound flat-const coefficient proof. Native evidence consequently records unknown_bounds materialization for the byte-or-undefined boundary.
PR perf(codegen): packed-loop read admissions — if-conditions, clone accumulator proofs, hazard relaxation #9084 admits locally built read loops behind the runtime packed-f64 entry guard. frozenLoop, sealedLoop, and nonExtensibleLoop are safe read-only admissions; the old negative proof rejects any guard anywhere in the fixture. The genuinely unsupported holey/sparse/accessor/non-number/any/unknown-index/alias-mutating functions still emit no packed-f64 guard.
allow only js_number_coerce in the image blur and unknown_bounds native materialization while retaining all byte-load/store and bounds/alias evidence checks;
replace the obsolete packed store side-exit assertion with a check-free raw-f64 fast-store assertion;
permit the single receiver-cache ptrtoint;
scope the negative guard exclusion to the genuinely unsupported functions and positively require guards for the three safe read-only functions.
Acceptance
the three workloads above pass individually on the dedicated Linux server;
the complete native-region-proof suite passes;
harness unit tests pass;
Full CI compiler-output-regression passes before release publication.
Verified green on release candidate 01463b81610f089cc566011d16ea5e5b08ec70a8 (run 33346563641): all 8 cargo-test-perry shards pass and compiler-output-regression passes. No fix for this issue appears in main's history, so it was resolved incidentally by other merges rather than by a targeted change.
The subject was confirmed live, not skipped — e.g. #9117's any_typed_real_arrays_keep_array_mutator_semantics appears 3× in shard 2's log (shard assignment moves between runs) and that shard passed.
Reopening — closed prematurely, same faulty inference as #9117 and #9121.
Failing again on release candidate 83754818ea (full-tier run 33372993990, compiler-output-regression, step "Gate native-region proof compiler output"), on the exact three workloads this issue names:
I closed this because compiler-output-regression was green on the previous candidate 01463b8161 and inferred the issue had been fixed incidentally.
That inference does not hold. This issue's own text explains the mechanism: the proof contracts lag merged optimizer changes (#9146, #9041, #9111, #9084), so whether they match depends on which optimizer work is present in the tree. A green run on one candidate means the contracts happened to line up there, not that they were reconciled.
For a contract-vs-implementation mismatch, one green run is not evidence of a fix. The required work in the original report — reconciling the proofs with the current lowering — was never done.
Impact
compiler-output-regression is in full-suite-gate's needs, so this blocks the v0.5.1519 release alongside #9117 and #9121.
Activity
test(codegen): align native proof with guarded packed loops (#9150)
proggeramlug commentedon Aug 31, 2026
Stale — closing.
Verified green on release candidate
01463b81610f089cc566011d16ea5e5b08ec70a8(run 33346563641): all 8cargo-test-perryshards pass andcompiler-output-regressionpasses. No fix for this issue appears in main's history, so it was resolved incidentally by other merges rather than by a targeted change.The subject was confirmed live, not skipped — e.g. #9117's
any_typed_real_arrays_keep_array_mutator_semanticsappears 3× in shard 2's log (shard assignment moves between runs) and that shard passed.Reopen if it resurfaces on a later candidate.
proggeramlug commentedon Aug 31, 2026
Reopening — closed prematurely, same faulty inference as #9117 and #9121.
Failing again on release candidate
83754818ea(full-tier run 33372993990,compiler-output-regression, step "Gate native-region proof compiler output"), on the exact three workloads this issue names:Why the closure was wrong
I closed this because
compiler-output-regressionwas green on the previous candidate01463b8161and inferred the issue had been fixed incidentally.That inference does not hold. This issue's own text explains the mechanism: the proof contracts lag merged optimizer changes (#9146, #9041, #9111, #9084), so whether they match depends on which optimizer work is present in the tree. A green run on one candidate means the contracts happened to line up there, not that they were reconciled.
For a contract-vs-implementation mismatch, one green run is not evidence of a fix. The required work in the original report — reconciling the proofs with the current lowering — was never done.
Impact
compiler-output-regressionis infull-suite-gate'sneeds, so this blocks the v0.5.1519 release alongside #9117 and #9121.