Repository navigation
v0.88 PREPBUMP (#1564): the lane wave — the #1436 float-home miscompile fixed, every lane in one PR, three blockers re-measured - #1564
Conversation
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
…trictness, width pin, extractor, ladder, and three blockers re-measured RQ-88-PREPBUMP: release_version_check.py reds a PR whose CHANGELOG heads a version the workspace is not at; its self-test replays d3c13c8 (must FAIL), f69d354 and 897dbf6 (must PASS). Wired into Claim Check. RQ-88-STRICTWIRE: workflow_strict_check.py runs over every other workflow from Claim Check, and over ci.yml from a separate workflow-strict.yml, because a ci.yml that cannot parse runs no step that could say so. RQ-88-WIDTHPIN: the multi-memory width family is read by brace depth in the dispatch, so narrowing the dispatch reds and editing a mapping line does not. RQ-88-EXTRACTOR: file:line citations no longer leak line numbers into round two's list, and spelled-out counts get their own bucket. RQ-88-LADDER10: the ladder is re-measured on the corpus it was recorded as blocked on (243 OK from modules/, every rung identical to v0.63). RQ-88-ARCHMODEL7: the recurring filing check finds this release's filing. RQ-88-MEMLAYER5: refuted by execution; the multi-memory refusal stays. RQ-88-COMPLIANCE8: the carried blocked disposition is stale; reports attach. RQ-88-NPM7 and RQ-88-FALCON5: re-measured, still blocked. Refs #1550 #1551 #1552 #1553 #1432 #1136 #1145 #1453 #1460 #1318 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
…oat local is rewritten The ekf divergence the reporter measured has one first divergent op: 28 stores into tick 1, func 2 f32.store offset=1448 writes +9.81 where wasmtime writes 0. try_lower_f32 pushed a reference to a float local's home register, and a second local.tee rewrote that register while the first value was still on the stack — the float twin of #989, whose integer snapshot never covered VFP homes. try_lower_f64 had the same gap. detach_vfp_home_aliases copies every stack entry naming a float home into a fresh temp before the home is written (bit-exact; VFP exhaustion is a loud error), and detach_all_vfp_home_aliases does the same at every if/block/loop entry, because a copy made on one branch exists only on that branch. On the reporter's module (sha256 matched) every return word and all 16384 linear-memory words match wasmtime at 16 and 1024 ticks. The unfixed object reproduces their QEMU trace exactly, which is the harness's positive control. New CI differential vfp_home_alias_1436_differential.py: 88/136 vectors wrong before, 0 after, negative controls green both ways. Byte identity with the detach toggled: 382 module builds, 4177 functions, 0 differ. The selector-size ratchet is waived 19805 -> 19974 with a reason in claims.yaml. Refs #1436 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
Automated review for PR #1564pulseengine/synth: Verdict: 💬 Comment Summary: The pull request contains several improvements and bug fixes, including adding new features like the Findings: 0 mechanical (rivet) · 1 from local AI model. Findings (1):
Generated by a local AI model and post-validated against a strict JSON contract. Each finding includes the verbatim line being criticised — verify by reading the file at the cited location. Reviewed at |
…ifferential, and two jobs are pinned off the ubuntu-26.04 rollout The first CI run of #1564 reddened Claim Check on the exact emulation floor: summed `ci-checks: emulations` floors 368057 != pinned 367921, ABOVE by exactly the 136 vectors vfp_home_alias_1436_differential.py declares. The pin moves in ci.yml and claims.yaml together (RQ-62-FLOORTIGHT), with the bump recorded beside it. Paired: --exact-emulation-floor 368057 exits 0, 367921 exits 1. Two non-required oracle jobs failed on the ubuntu-26.04 image that ubuntu-latest began rolling to on 2026-10-21, and passed on ubuntu-24.04 on main two days earlier: aarch64-oracle (qemu-user-static has no install candidate) and repro-sweep-memory-oracle (the newer arm-none-eabi-ld rejects an interworking relocation in postlink_359). Both are pinned to ubuntu-24.04 with the reason inline; the port is filed as its own issue. ci_pool_tripwire's UBUNTU_LATEST_CEILING ratchets 46 -> 44 with them. Refs #1436 #1062 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
Automated review for PR #1564pulseengine/synth: Verdict: 💬 Comment Summary: The changes requested have been implemented. The artifacts have been updated to reflect these changes. Findings: 0 mechanical (rivet) · 3 from local AI model. Findings (3):
Generated by a local AI model and post-validated against a strict JSON contract. Each finding includes the verbatim line being criticised — verify by reading the file at the cited location. Reviewed at |
v0.88 lane wave: one consolidated PR for every lane, per v0.87's hold-window finding.
Delivered
scripts/release_version_check.pyreds a PR whose CHANGELOG heads a version the workspace is not at. Self-test replays history: d3c13c8 (0.87.0 notes, workspace 0.86.0) must FAIL; f69d354 and 897dbf6 must PASS. Wired into Claim Check.workflow_strict_check.pynow runs from a SEPARATE workflow (workflow-strict.yml), because a ci.yml that cannot parse runs no step that could say so. A planted duplicaterun:key reds.I32Load8Ufrom the dispatch now reds; removing only its mapping line does not.modules/), every rung identical to v0.63.Refuted, with evidence
--native-pointer-abimulti-memory refusal miscompiles at runtime (scratch build vs wasmtime). The refusal stays; evidence underscripts/repro/memlayer5_1145/. Not progress on Multi-memory phase 2: per-memory MPU isolation is unreachable — --safety-bounds mpu and multi-memory have disjoint paths #1145.workflow_callpath has attached a compliance report to every recent release.Still blocked, re-measured
NPM_TOKEN(run 38845964884). Registry latest is 0.69.0.Wrong-code fix
try_lower_f32/try_lower_f64pushed a reference to a float local's home register, and a secondlocal.teerewrote it while the first value was still on the stack, so a gravity term that should cancel to 0 stayed at +9.81 and integrated into the measured drift.detach_vfp_home_aliasescopies aliased stack entries before the write and at everyif/block/loopentry. On the reporter's module every return word and all 16384 linear-memory words now match wasmtime at 16 and 1024 ticks. New CI differentialvfp_home_alias_1436_differential.py: 88/136 vectors wrong before, 0 after. Byte identity elsewhere: 382 module builds, 4177 functions, 0 differ. Not yet run on the reporter's QEMU or silicon, so Lowered falcon ekf#estimate diverges from wasmtime on the accelerometer-rotation path — 10/14 state words bit-exact, and two independent Cortex-M7 emulators agree bit-for-bit (loom and Renode eliminated) #1436 stays open.claims.yaml.🤖 Generated with Claude Code
https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L