release-watch: gale-nano 0.7.0 passes soundly; meld enforces no-silent-overlap; loom 1.4.1 neutral; fix a SIGPIPE false-negative in our own gate - #185
Open
avrabe wants to merge 1 commit into
Conversation
…OUND path; meld now refuses the silent-overlap fuse; loom 1.4.1 neutral; and fix a SIGPIPE false-negative in jess's own publish gate
JESS TOOLING DEFECT, caught before it caused a false report (third such catch): the publish-gate C5
check reported __heap_base MISSING on gale-nano 0.7.0. Verified independently FIRST — strings, grep -a
and wasm-tools print all found it. THE GATE WAS WRONG.
ROOT CAUSE: the script runs `set -o pipefail`, and C5 piped `strings -a FILE | grep -q PATTERN`.
grep -q exits on first match, SIGPIPEs the producer, pipefail returns 141 -> else branch -> FALSE FAIL.
Whether it bites depends on WHERE the symbol sits in the file, so it is arbitrary per artifact:
gale-nano 0.7.0 (30 KB) wrongly failed while relay's mixer (12 KB) passed. Demonstrated rc=0 vs rc=141
on the same file. Fixed by matching the binary directly with no pipe.
RE-VERIFIED EVERY PRIOR CLAIM with the fixed gate: relay v1.134.1 all six still CONSUMABLE (so the
report to relay was correct — by luck, not judgement); gale-nano 0.6.0 still fails C4+C5; the negative
control still bites. No prior upstream report was wrong — but the next one would have been.
GALE-NANO 0.7.0: gate C1-C5 ALL PASS — gale added both --emit-relocs (C4, which 0.6.0 failed) and
__heap_base (C5). Acceptance invariant re-verified and THIS TIME SOUNDLY: 0 skips on all three cores,
residual exactly poll-task/read32/write32, 7,785 B. The 0.6.0 result came via plain --memory shared,
which silently overlapped segments; 0.7.0 goes through --pack-rebase, which does not.
MELD#370 FIXED AND ENFORCING: meld 0.52 now HARD-REFUSES the plain --memory shared fuse with
"overlapping data segments ... this silently corrupts data". That is the exact command jess ran on
0.6.0 and had to retract a claim over. The tool now makes that mistake impossible.
SYNTH v0.59's THREE GATES MECHANICALLY ENUMERATE THE JESS EMBEDDER CONTRACT — a useful by-product for
the unstarted gust:hal work. Hitting them in sequence says exactly what jess must provide:
(1) the imports — gust:hal/mmio read32/write32 + gust:os/taskdisp poll-task
(2) #1041 --embedder-data-init — embedder populates active data segments at instantiation
(3) #1052 --embedder-global-init — embedder evaluates the 6 global initializers and seeds the R9
globals table before any export runs
So the gust:hal spec is no longer guesswork: it is (1)+(2)+(3).
LOOM 1.4.1: NEUTRAL for the falcon gate. Fused wasm 64,486 -> 61,216 B (5% smaller) but skip counts
IDENTICAL (3/5/12) and the ARM image slightly LARGER (+147 B). Smaller input does not imply smaller
output — recorded because the opposite is the natural assumption.
rivet validate PASS.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Five suppliers moved; tested the two in the pipeline.
Our own gate had a false negative — caught before it caused a false report
C5 reported
__heap_basemissing on gale-nano 0.7.0. I verified independently first —strings,grep -aandwasm-tools printall found it. The gate was wrong.Root cause: the script runs
set -o pipefail, and C5 pipedstrings -a FILE | grep -q PATTERN.grep -qexits on first match, SIGPIPEs the producer, pipefail returns 141 → else branch → false FAIL. Whether it bites depends on where in the file the symbol sits, so it's arbitrary per artifact: gale-nano 0.7.0 (30 KB) wrongly failed while relay's mixer (12 KB) passed. Demonstratedrc=0vsrc=141on the same file. Fixed by matching the binary directly, no pipe.Re-verified every prior claim with the fixed gate: relay v1.134.1 all six still CONSUMABLE (so that report was correct — by luck, not judgement); gale-nano 0.6.0 still fails C4+C5; negative control still bites. No prior upstream report was wrong — but the next one would have been. Third such catch this campaign.
gale-nano 0.7.0 — passes, and holds its invariant soundly
C1–C5 all pass: gale added both
--emit-relocs(C4, which 0.6.0 failed) and__heap_base(C5). Acceptance invariant re-verified: 0 skips on all three cores, residual exactlypoll-task read32 write32, 7,785 B.The distinction matters: 0.6.0's result came via plain
--memory shared, which silently overlapped data segments. 0.7.0 goes through--pack-rebase, which doesn't.meld#370 is fixed and enforcing
meld 0.52 now hard-refuses the plain
--memory sharedfuse — "overlapping data segments (10 overlapping pair(s))… this silently corrupts data." That is the exact command I ran on 0.6.0 and had to retract a claim over. The tool now makes that mistake impossible.synth v0.59's three gates enumerate the jess embedder contract
A genuinely useful by-product for the unstarted
gust:halwork. Hitting them in sequence on gale-nano says exactly what jess-as-embedder must provide:gust:hal/mmioread32/write32+gust:os/taskdisppoll-task--embedder-data-init— embedder populates active data segments at instantiation--embedder-global-init— embedder evaluates the 6 global initializers and seeds the R9 globals table before any export runsSo the
gust:halspecification is no longer guesswork: it is (1)+(2)+(3).loom 1.4.1 — neutral for the falcon gate
Fused wasm 64,486 → 61,216 B (5% smaller), but skip counts identical (3/5/12) and the ARM image slightly larger (+147 B). Smaller input doesn't imply smaller output — recorded because the opposite is the natural assumption. Consistent with GI-FPU-002 being a synth register-allocation limit no upstream optimizer can remove.
rivet validate→ PASS.🤖 Generated with Claude Code