Skip to content

feat(gate): pin reconverge 0.3.0, and prove the gate is unchanged - #11

Merged
vyncint merged 2 commits into
mainfrom
feat/reconverge-0.3.0
Aug 22, 2026
Merged

feat(gate): pin reconverge 0.3.0, and prove the gate is unchanged#11
vyncint merged 2 commits into
mainfrom
feat/reconverge-0.3.0

Conversation

@vyncint

@vyncint vyncint commented Aug 22, 2026

Copy link
Copy Markdown
Owner

The gate ran an analyzer two minor versions old. reconverge has been at 0.3.0 since 22 August; launchbound pinned 0.1.11 in four places — prune.yml, the Action's reconverge-version default, docs/LIMITATIONS.md, and docs/research-baseline.md.

This was deferred rather than forgotten, because a newer analyzer can change what the gate refuses — a change in product behaviour, not a dependency bump. So it is measured rather than assumed.

The measurement

The corpus was run under both analyzer versions, on the same toolchain, and compared:

kernel clean caveats refused tool errors
histogram 12 0 0 0
matmul-tiled 18 0 0 0
reduce-flip 3 0 8 0
reduce-stable 11 0 0 0
scan-block 4 0 0 0
stencil-1d 45 0 0 0
total 93 0 8 0

The two runs are byte-identical — not merely equal in the totals, but the same candidate hashes, the same REFUSED RC001 lines, the same reasons. The eight refusals are reduce-flip above one warp: the corpus's known flip, and the behaviour the gate exists to produce.

Gate tests pass unchanged under 0.3.0, including known_flip_kernel_disqualifies_above_one_warp and known_stable_kernel_disqualifies_nothing.

No toolchain move was needed

The rule is that the analyzer and the toolchain move together, because a rustc-driver tool must be built by the rustc it wraps. It turns out launchbound and reconverge 0.3.0 already pin the same nightly-2026-04-03 — so the rule is satisfied without moving either. That is what made this a one-variable change and worth doing now.

What this does not establish

General equivalence. reconverge gained multi-warp replay, bounded inlining so a barrier behind a helper is witnessed, and unmasked warp-wrapper analysis between these versions — a kernel exercising those paths could well be decided differently. Six kernels are the evidence, and six kernels are what they are.

That caveat is written into docs/research-baseline.md beside the numbers rather than summarized away as "no change", and docs/LIMITATIONS.md now describes the limits of the analyzer the gate actually runs, with the date it was re-checked.

Verified

  • corpus under both versions, diffed: identical
  • cargo test --workspace: 41 pass
  • gate tests (--ignored): 3 pass
  • fmt and clippy: clean

Version bumped to 1.2.0. Tracked in the ecosystem repo as the one open drift item; this closes it.

Same settings, written compact where termlens and mossaic write them
formatted. Functionally identical and textually different, which is exactly
the drift the ecosystem repo's sync tool exists to catch — and it caught this
one on its first dry run, before anybody had to notice by eye.

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
The gate ran an analyzer two minor versions old. reconverge has been at 0.3.0
since 22 August; launchbound pinned 0.1.11 in four places — the corpus
workflow, the Action default, and the two documents that name it.

This was deferred rather than forgotten, because a newer analyzer can change
what the gate refuses, and that is a change in product behaviour rather than a
dependency bump. So it is measured rather than assumed.

The corpus was run under both versions on the same toolchain and compared:

  histogram     12 clean   0 caveats  0 refused
  matmul-tiled  18 clean   0 caveats  0 refused
  reduce-flip    3 clean   0 caveats  8 refused
  reduce-stable 11 clean   0 caveats  0 refused
  scan-block     4 clean   0 caveats  0 refused
  stencil-1d    45 clean   0 caveats  0 refused

The two runs are byte-identical — not merely equal in the totals, but the same
candidate hashes, the same REFUSED RC001 lines, the same reasons. The eight
refusals are reduce-flip above one warp, the corpus's known flip and the
behaviour the gate exists to produce. The gate tests pass unchanged, including
known_flip_kernel_disqualifies_above_one_warp.

No toolchain change was needed: launchbound and reconverge 0.3.0 already pin
the same nightly-2026-04-03, so the rule that the analyzer and the toolchain
move together is satisfied without moving either.

What this does not establish is general equivalence. reconverge gained
multi-warp replay, bounded inlining and unmasked warp-wrapper analysis between
these versions; a kernel exercising those paths could be decided differently.
Six kernels are the evidence, and six kernels are what they are — which is why
the measurement is written down in research-baseline.md rather than summarized
as "no change".

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
@vyncint
vyncint merged commit a50b0c3 into main Aug 22, 2026
8 checks passed
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