Skip to content

chore(varve): bump to layer 2026.09.1, and correct two things the bump exposed - #359

Merged
avrabe merged 1 commit into
mainfrom
chore/varve-2026.09.1
Sep 6, 2026
Merged

avrabe merged 1 commit into
mainfrom
chore/varve-2026.09.1

Conversation

@avrabe

@avrabe avrabe commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Layer 2026.09.1, pinned by digest (sha256:893dbbf4…bd498) — a name-only pin stops
resolving when rolling republishes under a second manifest digest (varve#115).

synth 0.60.0 -> 0.61.0     meld 0.52.0 -> 0.53.0
spar 0.40.0                loom 1.4.1     rivet 0.35.0     witness 0.43.0

All gates re-run under it: cross-arch PASS (ARM 13/13 seams held), driver-components
PASS, graph-env PASS, object-freshness PASS, rivet validate PASS.

1. The RISC-V ledger's reason was stale

It said "rv32 emits a dangling synth_func_N for a declined internal, exit 0".
synth 0.61.0 fixed exactly that (#1104). Measured under the new layer:

exit=1
Error: #1102: 5 retained function(s) relocate against function(s) this compile DECLINED
… refusing to emit it rather than shipping an unlinkable object with exit 0

The 13 drivers still don't cross, so the ledger's contents are right and the gate
stays green — but its stated justification described a defect that no longer happens. A
ledger that is accurate about what fails and wrong about why is the kind nobody
re-reads. Corrected to describe the pinned toolchain's actual behaviour.

2. The CI synth pin drifted, again

drv-cross-arch.yml downloads its own synth rather than resolving through varve, so the
pin exists twice. Its own comment reads:

KEEP IN SYNC WITH varve.toml … the pin exists twice and can drift. It just did.

And it just did again — varve.toml resolved 0.61.0 while the workflow still said 0.60.0.

Worth naming rather than just fixing: that warning comment was written by the previous
drift, and did not prevent the next one.
A note is not a control. These two pins want a
gate that compares them, which I have not built here.

3. What 2026.09.1 does not do

It does not carry synth's region-table symbols (__synth_mem_base_N / _size_N),
which merged after v0.61.0. Verified rather than assumed — the same two-tenant module
under the pinned 0.61.0:

pinned 0.61.0   compile exit=0, ZERO synth_mem symbols
synth main      4 symbols

So the v0.5.0 two-tenant demonstrator stays an unpinned prototype. It cannot become
committed evidence until a released synth carrying those symbols lands in a layer.

Kill-criterion: varve.toml and drv-cross-arch.yml name different synth versions.

🤖 Generated with Claude Code

https://claude.ai/code/session_011QG86sovTbfnPNY9SfhSmo

…p exposed

Layer 2026.09.1, pinned by digest
(sha256:893dbbf4c4f0bcdf67d1b0bc0a9b68919881cba436c5021c58e4a9ddbf1bd498) — a name-only
pin stops resolving when rolling republishes under a second manifest digest (varve#115).

  synth 0.60.0 -> 0.61.0    meld 0.52.0 -> 0.53.0
  spar 0.40.0               loom 1.4.1        rivet 0.35.0       witness 0.43.0

All gates re-run under it: cross-arch PASS (ARM 13/13 seams held), driver-components
PASS, graph-env PASS, object-freshness PASS, rivet validate PASS.

1. THE RISC-V LEDGER'S REASON WAS STALE. It said "rv32 emits a dangling `synth_func_N`
for a declined internal, exit 0". synth 0.61.0 FIXED that (#1104). Measured under the new
layer, rv32 now refuses loudly:

  exit=1
  Error: #1102: 5 retained function(s) relocate against function(s) this compile DECLINED
  ... refusing to emit it rather than shipping an unlinkable object with exit 0

The 13 drivers still do not cross, so the ledger's CONTENTS are right and the gate stays
green — but its stated justification described a defect that no longer happens. A ledger
that is accurate about what fails and wrong about why is the kind of thing nobody
re-reads. Corrected to describe the behaviour under the pinned toolchain.

2. THE CI SYNTH PIN DRIFTED, AGAIN. drv-cross-arch.yml downloads its own synth rather
than resolving through varve, so the pin exists twice. Its comment says "KEEP IN SYNC
WITH varve.toml ... the pin exists twice and can drift. It just did" — and it just did
again: varve.toml resolved 0.61.0 while the workflow still said 0.60.0. Bumped.

Worth naming: the warning comment was written BY the previous drift, and did not prevent
the next one. A note is not a control. These two pins want a gate that compares them.

3. WHAT 2026.09.1 DOES NOT DO. It does not carry synth's region-table symbols
(__synth_mem_base_N / _size_N), which merged after v0.61.0. Verified rather than assumed:
the same two-tenant module compiles clean under the pinned 0.61.0 and emits ZERO
synth_mem symbols, against 4 from a build of synth main. So the v0.5.0 two-tenant
demonstrator stays an unpinned prototype; it cannot become committed evidence until a
released synth carrying those symbols lands in a layer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011QG86sovTbfnPNY9SfhSmo
@codecov

codecov Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe
avrabe merged commit 6691e72 into main Sep 6, 2026
75 checks passed
@avrabe
avrabe deleted the chore/varve-2026.09.1 branch September 6, 2026 10:14
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.

1 participant