Skip to content

fix(preflight): accept 0.33.x-dynres in mlx-cuda, as #218 did for cuda-dynres-903 - #219

Merged
glennneuber merged 2 commits into
mainfrom
fix/mlx-cuda-version-pattern-033
Aug 27, 2026
Merged

fix(preflight): accept 0.33.x-dynres in mlx-cuda, as #218 did for cuda-dynres-903#219
glennneuber merged 2 commits into
mainfrom
fix/mlx-cuda-version-pattern-033

Conversation

@glennneuber

Copy link
Copy Markdown

#218 widened cuda-dynres-903 for the v0.33.0 sync. mlx-cuda was left behind and needs the same widening.

Both are lineage-tracking profiles keyed on the containerised -dynres stamp, both describe the same CUDA host, and the sync moves that host's builds to 0.33.x.

0.32.14-rc0-dynres-20-geb0ad43   old True    new True
0.33.0-dynres-3-gabc1234         old False   new True
0.33.0-rc1-dynres-1-gdeadbee     old False   new True

What is deliberately left alone

Every profile pinned to an exact baseline: mlx-metal (0.32.5-maxusai), mlx-metal-0-32-14, metal-0-32-14, metal, cpu, rocm-0-32-1-dynres, cuda-dynres-005.

Those are tight on purpose — mlx-metal's own comment reads "tightened at first baseline". A new version there wants a new profile with re-measured expectations, not a wider pattern (ADR 0011). Only the two lineage profiles track a moving version by design.

Why this recurred

This is the same defect #175 fixed for mlx-cuda at its creation — the pattern could not match the artifact it describes, so --platform mlx-cuda fails to resolve a profile at all. That is the bad failure shape: the gate becomes unreachable rather than red.

It recurred because that fix was version-specific. Worth naming the general shape: a version pattern is the one field that breaks by standing still — every other expectation stays correct until something changes, this one goes stale on a bump that touches nothing else.

--platform mlx-cuda currently passes on the CUDA host (7 PASS / 3 SKIP, gemma4 measured), so there is a real gate to lose here. #217's criterion 4 runs the CUDA preflight after the image build; without this it would error on profile resolution instead of exercising the row.

verdict gate 50/50.

🤖 Generated with Claude Code

glennneuber and others added 2 commits August 27, 2026 10:30
…a-dynres-903

#218 widened cuda-dynres-903 to the 0.33.x family for the v0.33.0 sync. mlx-cuda
was left at 0.32 and needs the same widening for the same reason: both are
LINEAGE-tracking profiles keyed on the containerised `-dynres` stamp, both
describe the same CUDA host, and the sync moves that host's builds to 0.33.x.

    0.32.14-rc0-dynres-20-geb0ad43   old True    new True
    0.33.0-dynres-3-gabc1234         old False   new True
    0.33.0-rc1-dynres-1-gdeadbee     old False   new True

Left alone deliberately: every profile pinned to an exact baseline —
mlx-metal (0.32.5-maxusai), mlx-metal-0-32-14, metal-0-32-14, metal, cpu
(0.32.5-dynres), rocm-0-32-1-dynres (0.32.1), cuda-dynres-005. Those are tight
on purpose; mlx-metal's own comment says "tightened at first baseline". A new
version there wants a new profile with re-measured expectations, not a wider
pattern, per ADR 0011.

This is the same defect #175 fixed for this profile at its creation, recurring
because that fix was version-specific. The pattern could not match the artifact
it describes, so `--platform mlx-cuda` would fail to resolve a profile at all —
the gate silently unreachable rather than failing. Worth noting the shape: a
version pattern is the one field that breaks by standing still.

verdict gate 50/50.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…pattern

The fix in this branch closes the second occurrence of one defect. A guard is
worth more than the fix, because the third is otherwise a matter of time.

cuda-dynres-903 and mlx-cuda describe ONE host — both keyed on the containerised
`-dynres` stamp of the same CUDA machine, chosen between by --platform rather
than by version — so their patterns drifting apart is always a bug. Asserted
directly.

Every other profile is pinned to an exact baseline on purpose, so the second
test asserts the widening was NOT swept into them: mlx-metal's own comment reads
"tightened at first baseline", and per ADR 0011 a new version there wants a new
profile with re-measured expectations rather than a looser regex.

Verified by reintroducing the exact #218 state -- widen one, leave the other --
and confirming the failure names both patterns side by side:

    AssertionError: 2 != 1 : lineage profiles drifted:
      {'cuda-dynres-903': '^0\.3[23]\....', 'mlx-cuda': '^0\.32\....'}

The docstring records why this class is worth a test at all: the failure is
silent in the worst way. `--platform mlx-cuda` does not go red on a stale
pattern, it fails to RESOLVE A PROFILE, so the gate becomes unreachable rather
than failing. And a version pattern is the one field that breaks by standing
still -- every other expectation stays correct until something changes; this one
goes stale on a bump that touches nothing else about the profile.

verdict gate 52/52.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@glennneuber

Copy link
Copy Markdown
Author

Added a guard commit, because this is the second occurrence of one defect and the third is otherwise a matter of time.

cuda-dynres-903 and mlx-cuda describe one host — both keyed on the containerised -dynres stamp of the same CUDA machine, chosen between by --platform rather than by version — so their patterns drifting apart is always a bug. Now asserted directly, with a second test that the widening was not swept into the baseline-pinned profiles (mlx-metal, metal-0-32-14, cpu, rocm-0-32-1-dynres), since ADR 0011 wants a new profile with re-measured expectations there rather than a looser regex.

Verified by reintroducing the exact #218 state — widen one, leave the other:

AssertionError: 2 != 1 : lineage profiles drifted:
  {'cuda-dynres-903': '^0\.3[23]\....', 'mlx-cuda': '^0\.32\....'}

The failure names both patterns side by side, so the next person sees which one is stale rather than that something is wrong.

verdict gate 52/52.

The docstring records why this class earns a test at all, and it is the part I would keep if the rest were trimmed: the failure is silent in the worst way. A stale pattern does not make --platform mlx-cuda go red — it fails to resolve a profile, so the gate becomes unreachable rather than failing. Every other expectation in this file stays correct until something changes; a version pattern is the one field that breaks by standing still.

@glennneuber
glennneuber merged commit 43cfe91 into main Aug 27, 2026
1 check 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