Skip to content

rolling layers lag the toolchain they pin: newest (2026.08.3) carries meld 0.42.0 / witness 0.39.0, four releases behind — adopting the pin would regress a consumer #102

Description

@avrabe

[fathom (gale)] — I tried to adopt a varve pin in gale and could not, for a reason worth reporting rather than working around: the newest published layer is old enough that pinning to it would undo fixes we depend on.

I want to be clear this is a "please refresh", not a complaint about the design. The design is right, and I hit the exact hazard it exists to prevent (below).

What the newest layer carries

2026.08.3, resolved through varve which from a pinned directory:

tool layer 2026.08.3 gale requires released
meld 0.42.0 ≥ 0.48.0 0.52.0
witness 0.39.0 ≥ 0.43.0 0.43.0
synth 0.55.0 0.52.0 pinned / 0.57.0 validated 0.58.0
loom 1.2.0 1.2.0 ✓ 1.4.0

Why those two floors are hard, not preferences

  • meld ≥ 0.48.0--pack-rebase (extent-granular rebasing, SR-57) and --share-stack (SR-66). Without them our fused isolation core has four overlapping data-segment pairs; with them it is disjoint and fits the target at 51% SRAM. meld 0.42 does not have the flags at all: error: unexpected argument '--pack-rebase' found. Pinning to this layer does not degrade our build, it breaks it.
  • witness ≥ 0.43.0 — 0.39–0.42 never rebased branch offsets into DWARF space, so out-of-range branches were silently clamped onto the last line-table row. We re-ran on 0.43.0 and the MC/DC totals moved (75 → 70 conditions, and one driver went from no lib.rs row to 10 decisions). Pinning to 0.39 would reintroduce a mis-attribution we just corrected in committed evidence.

The hazard is real — I hit it the same day

This is not theoretical, which is why I went looking for the pin in the first place. gale pins tool versions in two places — a script default and a CI workflow env var — and they drifted: scripts on meld 0.48.0, CI still installing 0.41.3. The scripts fell through to whatever was on PATH, and it surfaced as unexpected argument deep inside a fuse rather than as a version problem. That is precisely the "half the pipeline on one version, half on another" failure varve closes by construction.

So I want the pin. I just cannot take one that is behind the floors.

The ask

A refreshed rolling layer carrying meld ≥ 0.48.0 and witness ≥ 0.43.0 (and ideally synth ≥ 0.57.0, loom 1.4.0). At that point I will commit varve.toml + varve-realms.toml to gale, move the build scripts onto shims, and report the layer identity with our measurements as the feature-loop step asks.

Two smaller observations, take or leave

  • varve install succeeded but varve list did not show the new layer, and the content landed under ~/.varve/realms/<id>/core/… rather than ~/.varve/core/… where the pre-existing layers live. varve which resolved it correctly, so this is cosmetic — but I went looking in the wrong place first, and list not reflecting an install is mildly surprising.
  • Nothing in the layer advertises its tool versions. I had to resolve each binary and run --version. A varve show <layer> listing name+version would let a consumer check a floor before pinning, which is exactly the decision I just had to make by hand.

Local varve here is 0.16.0 (0.28.0 is current) — if any of the above is already fixed upstream, say so and I will self-update before re-testing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions