Repository navigation
Closed
Description
Release blocker
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_convolutionpacked_f64_loop_versioningpacked_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 OOBundefined. The image blur now contains only the 75 documentedjs_number_coercecalls for kernel coefficients; the PR explicitly declined the unsound flat-const coefficient proof. Native evidence consequently recordsunknown_boundsmaterialization for the byte-or-undefined boundary. - PR perf(codegen): inline array store/push lanes for module-global receivers; drop the packed loop's per-store guard call #9041 removes the per-store guard/side-exit for statically genuine packed-f64 store values. The old proof still requires the deleted
packed_f64_loop_store.fast/fallbackpair. - PR perf(codegen): packed-clone endgame — receiver caching, poll striding, integer count accumulators, check-free genuine stores #9111 caches the packed receiver handle, adding one intentional
ptrtointin the aggregate fast-clone region. - 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, andnonExtensibleLoopare 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.
Required fix
- merge current
mainso codegen: byte-array reads reach the numeric proofs (bench_int_arithmetic 475 → 395 ms) #9146 is present; - allow only
js_number_coercein the image blur andunknown_boundsnative 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-proofsuite passes; - harness unit tests pass;
- Full CI
compiler-output-regressionpasses before release publication.
Metadata
Metadata
Assignees
Labels
No labels
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.