Skip to content

Harden a radial rounding test and the CI device change filter - #816

Open
jtravs wants to merge 2 commits into
mainfrom
test/ci-hardening-494
Open

jtravs wants to merge 2 commits into
mainfrom
test/ci-hardening-494

Conversation

@jtravs

@jtravs jtravs commented Nov 13, 2026

Copy link
Copy Markdown
Contributor
  • A radial expansion test compares two columns by exact equality and fails on an AVX-512 build #494: the radial expansion's two polarisation columns are now compared within a stated rounding bound, gamma(2n) * sum|w||t| (about 4 gamma_n(u)). Their stored terms are identical, and that is now asserted exactly, but the increment is one BLAS tensordot whose kernel may round output columns differently (reproduced on an AVX-512 build with OpenBLAS: 19 of 1536 elements differ in the last bit). A 1e-13 relative perturbation fails the bound by 12–17×.
  • Make the CI device change filter safe under pipefail #612: the CI changes job's device filter reads the whole pipe (grep -E … > /dev/null instead of grep -qE), so pipefail cannot turn a native change into device=false through SIGPIPE. A regression test (tests/test_ci_changes.py) extracts the workflow's own step and runs it under bash -e and bash -e -o pipefail, with a 100,000-line list and the existing classifications.

Not included: #777. The object-file pass it proposes finds nothing under the default IPO/LTO Release build; that needs a build-policy decision.

Closes #494
Closes #612

🤖 Generated with Claude Code

https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH

jtravs and others added 2 commits November 13, 2026 17:33
Both polarisation columns of the cumulative phase come from identical
stored terms (now asserted exactly), but delta_phi contracts them in one
np.tensordot, and the BLAS kernel may round each output column
differently: on an AVX-512 build with OpenBLAS 7 and 19 of 1536 elements
differed in the last bit. Compare the columns within 4 gamma_n(u) of
sum |w| |t| per element (testing.md section 3, class R). The bound was
spot-checked: a 1e-13 relative perturbation of one column fails it by
12 to 17 times.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH
The device filter piped grep -vE into grep -qE. On a long change list
with the native match first, grep -q exits at that match, the upstream
grep dies of SIGPIPE, and under pipefail the negated pipeline sets
device=false despite a native change. The second grep now reads the whole
pipe and discards its output. The current step runs as bash -e, so this
hardens against a shell-policy change rather than fixing a skipped lane.

tests/test_ci_changes.py runs the workflow's own step under bash -e and
bash -e -o pipefail: a 100 000-line list with the native match first
(fails under pipefail before this change), and the existing positive and
negative classifications, including an unknown base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH
@jtravs
jtravs marked this pull request as ready for review November 13, 2026 19:29
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-13T19:31:26.682878Z 19c33be Draft marked ready
🔒 Security Review ✅ Completed 2026-11-13T19:32:52.483649Z 19c33be 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.

@codecov

codecov Bot commented Nov 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

This branch has not been deployed

No deployments
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.

Make the CI device change filter safe under pipefail A radial expansion test compares two columns by exact equality and fails on an AVX-512 build

1 participant