evidence(containers): W6 — the arm64 cuda lane runs on GB10 with --gpus all - #410
Merged
Merged
Conversation
…pus all
FOLLOWING_AGENTS_PROTOCOL
First runtime evidence for any container lane on accelerator hardware.
Measured 2026-08-11 on promaxgb10-4ad8 (GB10, sm_121a, aarch64, CUDA 13.3,
Docker 29.2.1 + nvidia runtime), building docker/Dockerfile --target cuda
natively:
build 673/673 objects; ten-SM gencode audit PASS; Triton AOT "six exact
trees and namespaces OK"
image 1.71 GB (linux/arm64, cuda)
driver /usr/lib/aarch64-linux-gnu/libcuda.so.1 -> libcuda.so.580.159.03,
injected by the host runtime; the image ships none
runtime /health 200, /version 200, the image's own declared healthcheck
passing INSIDE the container, clean SIGTERM -- with --gpus all, on
opt-125m-bf16-st
Scope, stated so the record cannot be read wider than the measurement: this is
one tuple -- linux/arm64 + cuda + sm_121a. amd64 cuda has never been built.
Nothing is published to GHCR.
SBSA is now CONFIRMED and it sharpens the Tegra question rather than answering
it: the runtime libraries came from /usr/local/cuda/targets/sbsa-linux/lib, so
the arm64 image is an SBSA image. GB10 runs it. Thor (sm_110) and Orin (sm_87)
are Tegra/L4T with a different CUDA runtime, remain unprobed, and are NOT
covered by this result. release/container-matrix.json therefore flips
runtime_evidence for cuda/linux-arm64 only.
Lock discipline on a shared box: the build ran OUTSIDE gpu.lock because it needs
no GPU, and only the container run took it, blocking -- queued 16:58:38 ->
17:50:43 behind other users rather than jumping them.
Getting here cost four defects, every one found by building rather than
reading: the CUDA 12.9 base that could not compile sm_110, the BuildKit cache
mount that outlived its toolchain (both #366), the Marlin gencode drift that
failed the audit on 14 correctly-compiled TUs (#394, which blocked BOTH cuda
tuples project-wide), and a validator whose boot smoke never passed --gpus so
an accelerator lane could only ever produce build evidence (#407).
NOW.md is deliberately untouched: it is authored at operator cadence and is
never a per-row deliverable (AGENTS.md:252).
Issues: #170, #394
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-opus-5 [Claude Code]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First runtime evidence for any container lane on accelerator hardware. Refs #170.
Measured 2026-08-11 on
promaxgb10-4ad8(GB10,sm_121a, aarch64, CUDA 13.3, Docker 29.2.1 with the nvidia runtime), buildingdocker/Dockerfile --target cudanatively on the box:linux/arm64, cuda lane)/usr/lib/aarch64-linux-gnu/libcuda.so.1 -> libcuda.so.580.159.03, injected by the host runtime — the image ships none/health200,/version200, the image's own declared healthcheck passing inside the container, clean SIGTERM — with--gpus all, onopt-125m-bf16-stScope, so the record cannot be read wider than the measurement
This is one tuple:
linux/arm64+ cuda +sm_121a. amd64 cuda has never been built. Nothing is published to GHCR.SBSA is now confirmed, and that sharpens the Tegra question rather than answering it. The runtime libraries were copied from
/usr/local/cuda/targets/sbsa-linux/lib, so the arm64 image is an SBSA image. GB10 runs it. Thor (sm_110) and Orin (sm_87) are Tegra/L4T with a different CUDA runtime, remain unprobed, and are not covered.release/container-matrix.jsontherefore flipsruntime_evidenceforcuda/linux-arm64only.Lock discipline on a shared box
The build ran outside
gpu.lockbecause it needs no GPU; only the container run took the lock, and it took it blocking — queued16:58:38 → 17:50:43behind other users rather than jumping them. Holding the lock across an 18-minute CUDA build would have blocked four waiting processes for nothing.What it cost
Four defects, every one found by building rather than reading:
sm_110(fix(containers): the cuda lane could not build at all — wrong CUDA base, stale build cache #366)--gpus, so an accelerator lane could only ever produce build evidence (fix(cuda): Marlin gencode drifted from the feature table; validator can now take GPU evidence #407)Records
Spec gains a W6 result section; engine-matrix row carries the anchors and the explicit not-established list; BENCHMARKS gains the image size and the GPU boot; STATUS states the lane and the Tegra gap.
.agents/NOW.mdis deliberately untouched — it is authored at operator cadence and is never a per-row deliverable (AGENTS.md:252).Gates
scripts/agent-preflight.sh --stagedexits 0; container matrix, workflow guard and agent-record all green.🤖 Generated with Claude Code