Skip to content

ci: un-dark aprender-gpu and aprender-cuda-edge in workspace-test (651 tests, 0.193s) - #3063

Merged
noahgift merged 6 commits into
mainfrom
ci/un-dark-gpu-crates-workspace-test
Sep 10, 2026
Merged

ci: un-dark aprender-gpu and aprender-cuda-edge in workspace-test (651 tests, 0.193s)#3063
noahgift merged 6 commits into
mainfrom
ci/un-dark-gpu-crates-workspace-test

Conversation

@noahgift

@noahgift noahgift commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

T0 of docs/specifications/nvidia-cuda-rust-library-integration.md, pulled forward into 0.66 because nothing else in that spec is measurable without it. Tracked by #3062 (0.67).

What this is

Two crates were excluded from the only required test check for a CUDA/cuBLAS link their default features do not have. Both are default = [] with no build.rs; the cuda feature is optional and off.

Crate Tests Run time
aprender-gpu 444 0.10s
aprender-cuda-edge 207 0.03s
651 0.193s

Nothing else covered them. .github/workflows/cuda-nightly.yml:242 is the only other CI reference to either crate and it runs a single perf053 filter.

Correction (2026-09-09). An earlier version of this description said this PR gives the 109k-LOC PTX generator required-check coverage. It does not. In aprender-gpu, driver, kernels, memory and ptx are all #[cfg(feature = "cuda")] (lib.rs:138–151). The 444 default-feature tests this PR un-darks are monitor (308), testing (72), backend (39), error (20), graph (4), plus 13 new launch_budget tests from #3064. The PTX generator's ~2,160 tests still run only under --features cuda, i.e. the gx10 nightly's single perf053 filter. This PR is a first step, not the fix for that; the gap is tracked separately.

Measured with the exact CI harness

Not cargo test — the command CI actually runs:

cargo nextest run --profile ci -p aprender-gpu -p aprender-cuda-edge --lib
  Starting 651 tests across 2 binaries
   Summary [0.193s] 651 tests run: 651 passed, 0 skipped

Re-run in a CI-like environment (CUDA_VISIBLE_DEVICES="", empty HOME, scrubbed XDG_CACHE_HOME) — still green, so the pass does not depend on this box having a GPU or a warm ~/.cache/trueno.

Cost: ~31s extra cold build (263 dep crates, measured in an empty target dir) against the job's timeout-minutes: 150.

aprender-compute stays excluded — it SIGSEGVs at exit and already runs as its own step below.

Coupled state checked

  • scripts/ci_test_tier.sh does not reference these crates
  • no other workflow excludes them
  • no guard script asserts the exclusion list
  • YAML re-parsed after the edit (10 jobs)

Risk, stated plainly

workspace-test is a required check with fail-fast = true. If either crate has a failure that reproduces only in the clean-room container, this blocks every open PR. The scrubbed-environment run above is evidence, not proof.

That is why this lands alone rather than batched — the revert is this single commit. Please watch the first run rather than assuming it.

Touches .github/workflows/*, so per repo policy this needs a web-UI merge click.

🤖 Generated with Claude Code

https://claude.ai/code/session_01J9cSQynVPYeUkQ2i7ccvrs

…1 tests)

T0 of docs/specifications/nvidia-cuda-rust-library-integration.md, pulled
forward into 0.66 because nothing else in that spec is measurable without it.

Both crates were excluded from the ONLY required test check for a CUDA/cuBLAS
link their DEFAULT features do not have. Each is `default = []` with no
build.rs; the `cuda` feature is optional and off. So 651 tests have been
running nowhere:

  aprender-gpu         444 tests   0.10s
  aprender-cuda-edge   207 tests   0.03s

Nothing else covered them. `.github/workflows/cuda-nightly.yml:242` is the only
other CI reference to either crate and it runs a single filter (`perf053`), so
a 109,365-LOC PTX generator has had no required-check coverage at all.

Measured 2026-09-09 with the exact CI harness, not an approximation of it:

  cargo nextest run --profile ci -p aprender-gpu -p aprender-cuda-edge --lib
  -> Starting 651 tests across 2 binaries
     Summary [0.193s] 651 tests run: 651 passed, 0 skipped

and still green in a CI-like environment (CUDA_VISIBLE_DEVICES="", empty HOME,
scrubbed XDG_CACHE_HOME), so the pass does not depend on this box having a GPU
or a warm ~/.cache/trueno.

Cost: ~31s extra cold build (263 dep crates, measured in an empty target dir)
against the job's timeout-minutes: 150. Run time is 0.193s.

aprender-compute stays excluded — it SIGSEGVs at exit and already runs as its
own step below.

Checked for coupled state: scripts/ci_test_tier.sh does not reference these
crates, no other workflow excludes them, and no guard script asserts the
exclusion list.

RISK, stated plainly: workspace-test is a required check with fail-fast = true.
If either crate has a failure that reproduces only in the clean-room container,
this blocks every open PR. The scrubbed-environment run above is evidence, not
proof. That is why this lands alone rather than batched -- revert is this one
commit.

Refs #3062

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J9cSQynVPYeUkQ2i7ccvrs
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3063 head=a829836612f18c54e71daaa25b2990384256223a verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

…the un-darking adds) — the tier decider refused the drifted registry

workspace-test on this PR went RED at step 10 "Decide the test tier": scripts/ci_test_tier.sh classified a drifted scripts/tree_reader_tests.txt as ENV (exit 2, "no quick tier over a stale list") because un-excluding aprender-gpu --lib changed the derived list. The tests never ran. This is the registry co-evolving with ci.yml, generated by scripts/check_tree_reader_tests.sh --update, exactly as the failure printed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01J9cSQynVPYeUkQ2i7ccvrs
…rkspace, aprender-explain's features=["cuda"] on aprender-gpu unifies the cuda driver in and its 217 driver:: tests panic on a GPU-less clean-room (queue run 34411725611); the workspace line keeps its excludes

Refs #3062 #3067. Measured on main: nextest list --workspace -E 'package(aprender-gpu)' = 217 driver:: tests; -p aprender-gpu -p aprender-cuda-edge = 0 driver::, 13 launch_budget::.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BjhtNUSensCYpQb3mCYLod
@noahgift
noahgift enabled auto-merge September 9, 2026 22:58
@noahgift

noahgift commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Pushed c6ce084ec (PMAT-1096, the 0.66.0 cut): the merge-queue run 34411725611 failed workspace-test with nextest exit 100 — driver::cublas_tests::cta64_vs_cta32_vs_cublas_fp16 and cta_wmma_dbuf_bench_fp16 panicked CudaNotAvailable("CUDA driver not found") on the clean-room runner.

Why the PR-level measurement was green and the queue was red. -p aprender-gpu -p aprender-cuda-edge --lib is a per-package resolve: cuda stays off (cargo nextest list … -p … on main lists 0 driver:: tests, 13 launch_budget::). The line this PR changed is --workspace, where cargo unifies features across every member, and aprender-explain depends on aprender-gpu with features = ["cuda"] non-optionally — so cargo nextest list --workspace --lib -E 'package(aprender-gpu)' lists 217 driver:: tests. The PR's own body already warned about exactly this class.

The fix that keeps the claim. The workspace line keeps its three excludes; the two GPU crates run as their own full-tier step (cargo nextest run --profile ci -p aprender-gpu -p aprender-cuda-edge --lib, same container and mounts as the compute step). Auto-merge is re-armed. The aprender-explainaprender-gpu/cuda non-optional edge is a finding on its own (every --workspace build compiles the CUDA driver FFI); noted on #3067.

…the registry now that the crate runs as its own per-package step (the tier decision reads the workspace line's excludes)

Refs #3062.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BjhtNUSensCYpQb3mCYLod
@noahgift
noahgift added this pull request to the merge queue Sep 10, 2026
Merged via the queue into main with commit 9bc1ecf Sep 10, 2026
16 of 17 checks passed
@noahgift
noahgift deleted the ci/un-dark-gpu-crates-workspace-test branch September 10, 2026 01:59
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