Skip to content

Sparks Pair (P0->P5) - #9884

Merged
briansrls merged 1 commit into
mainfrom
session/eager-pike-541-gpu-axis
Sep 1, 2026
Merged

briansrls merged 1 commit into
mainfrom
session/eager-pike-541-gpu-axis

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session eager-pike-541.
Pushing to session/eager-pike-541-gpu-axis advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

ResourceEnvelope has carried gpu: GpuRequirement? since the envelope was
generalized, and unmet_shape_axes folded threads, memory and architecture
only -- grep for gpu or vram in supply.dag returned zero, and
UnmetShapeAxis had no GPU variant. So a work item demanding 80 GiB of
VRAM and a CUDA runtime was admitted by any offer with enough threads,
with the GPU requirement never examined.

THE RULE THIS BREAKS IS WRITTEN IN THE SAME FILE. envelope.dag's own
annotation says a fold "may skip an unstated axis, but it must never
report an unstated axis as CHECKED -- that is the conflation where
absence of observation becomes positive clearance". GPU was STATED and
unchecked, which is that conflation reached from the other side, and the
caller could not tell the difference because the fold answers the empty
list both for "this axis matched" and for "this axis was never read".

RUNTIME IS A MEMBERSHIP TEST PER REQUIRED RUNTIME, not a subset check.
Work naming two acceptable runtimes needs the offer to provide one; work
naming one needs that one. Reporting per missing runtime keeps the
diagnosis at the grain the caller can act on, which is why the axes
beside it carry required and offered rather than answering false.

gpu_runtime_wire and gpu_runtime_eq land in extdeps.gpu.types, where the
type is declared, because the wire projection is the single enumeration
of the variants and equality reads it. A hand-rolled comparison beside it
would let a fifth runtime compile against half the corpus.

EVIDENCE, 12/12 PASS. The discriminating RED is
work_demanding_vram_is_not_fungible_with_an_offer_stating_no_gpu: every
other axis covers, and before this change the pair was reported fungible
-- the broker sending GPU work to a machine with no GPU, reached by an
absent comparison rather than a wrong one. Its positive control is
a_sufficient_gpu_on_the_right_runtime_is_fungible, without which the
three refusals would also pass if the axis refused everything.
work_naming_no_gpu_requirement_ignores_the_gpu_axis holds the skipped-is-
not-cleared line.

Adding the variants also broke two PRE-EXISTING exhaustive matches in the
witness. That is the no-wildcard discipline working: a new variant forces
a decision at every site rather than defaulting silently.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HL72ndT9xg2dZEb6J8a2Gr
@briansrls
briansrls marked this pull request as ready for review September 1, 2026 10:16
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-01T10:17:55.196444Z be4cb82 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: be4cb82915

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +407 to +411
flat_map(want, w =>
if any(have, h => gpu_runtime_eq(a: h, b: w)) {
[]
} else {
[GpuRuntimeNotOffered { required: w }]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Treat requested GPU runtimes as alternatives

When a workload lists multiple acceptable runtimes, this flat_map emits a failure for every runtime the offer lacks, so a requirement such as [Cuda, Rocm] rejects an offer providing [Cuda]. This contradicts the stated one-of semantics and makes unmet_shape_axes nonempty—and therefore offer_covers_shape false—despite the offer supporting an acceptable runtime; the runtime check should produce no unmet axis when any requested runtime is present.

Useful? React with 👍 / 👎.

@briansrls
briansrls merged commit daed247 into main Sep 1, 2026
6 checks passed
@briansrls
briansrls deleted the session/eager-pike-541-gpu-axis branch September 1, 2026 22:58
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