Skip to content

fix(ci): match the FLASH_ATTN pin as a fixed string, not a BRE - #3390

Merged
mudler-agent merged 1 commit into
localai-org:mainfrom
phantomic12:fix/vulkan-ci-grep-bre-fix
Oct 17, 2026
Merged

mudler-agent merged 1 commit into
localai-org:mainfrom
phantomic12:fix/vulkan-ci-grep-bre-fix

Conversation

@phantomic12

@phantomic12 phantomic12 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

What is broken

The prio[0] pin in the build-test-vulkan case-gate step is unsatisfiable.
It landed in 16086ae1f (#3375) under a bare grep -q, so grep parsed it as a
BASIC REGULAR EXPRESSION in which [0] is a character class for the digit 0.
The pattern asks for prio0 and can never match the literal prio[0] that
doctest prints under -s. The pin could not succeed from the moment it landed.

#3375 correctly retired two stale pins. It replaced one of them with a third
failure mode: not stale wording, but a pattern that no output can satisfy.

Evidence — the suite passed and the GREP could not

Run 37160385766
on main @ 33fb82b09 fails build-test-vulkan at The Vulkan suite MEASURED a
device rather than skipping past one
, and its log separates cause from symptom:

./tests/vt/test_vulkan_backend.cpp:538: SUCCESS: CHECK_FALSE( p.get_device_capability().present() ) is correct!
./tests/vt/test_vulkan_backend.cpp:557: SUCCESS: CHECK( prio[0] == "FLASH_ATTN" ) is correct!
[doctest] test cases:  1 |  1 passed | 0 failed | 45 skipped
[doctest] assertions: 13 | 13 passed | 0 failed |
[doctest] Status: SUCCESS!
##[error]Process completed with exit code 1.

Every assertion passed, the summary is green, the Vulkan device was genuinely
measured — and the step still exits 1, because the gate cannot be satisfied. The
lane has been red on main since 2026-10-02 while proving something true.

Replaying that run's captured vulkan-platform-case.log through the three pins:

pin before after
CHECK_FALSE( p.get_device_capability().present() ) is correct exit 0 exit 0
CHECK( prio[0] == "FLASH_ATTN" ) is correct exit 1 exit 0
test cases: *1 | *1 passed exit 0 exit 0

The fix

-qF, so grep compares literal text. No other pin moves.

This is the only unsatisfiable pin in the file: git grep over .github finds
the remaining bracketed pins at 1908-1910 and 1944-1945, and those are -qE
using [[:space:]], [1-9] and [0-9] as intended character classes.

Negative control

A fixed-string pin that matches everything is worthless, so: a deliberately wrong
CHECK( prio[1] == "FLASH_ATTN" ) is correct! is still rejected (exit 1).
The pin keeps its teeth.

Honest gaps

  • Replayed against a captured runner log, not a fresh Vulkan device on this
    machine; there is no GPU and no toolchain here, so no build was run. The log is
    the real output of the run cited above.
  • python3 scripts/check-commit-style.py and
    python3 scripts/check-commit-trailers.py over upstream/main..HEAD: pass.
    .github/workflows/ci.yml re-parses with PyYAML (19 jobs).
  • No speed claim. No GPU, checkpoint, oracle or performance run occurred.
  • The step name promises the suite measured a device. It does — but a pin that
    cannot fail for the right reason cannot show that. This PR restores the
    ability to ask the question; the surrounding Windows and CPU lanes are red on
    main independently of it and are untouched here.

Update (2026-10-04): rebased onto e67a071a6; main reached the same line independently

The PR went CONFLICTING when main advanced past 33fb82b09. It is now
rebased (head 6a5e27ba9), clean, and its two gates re-run at rc=0 over
upstream/main..HEAD.

One fact a reviewer should have: main already fixed this same defect in
ded529eef ("ci: escape the prio bracket in the vulkan platform-case grep"),
after run 37202846607
hit the identical signature on PR #3393's head — green suite, then exit 1 at
the platform-case step — as its commit message records. The two fixes are
behaviorally equivalent; this PR keeps the -qF form because a fixed string
has no escaping to rot the next time the pin's text is edited, and it carries
the failure-mode comment quoted above in place of the three-line escape note.
Sections What is broken and Evidence describe main @ 33fb82b09 as of
filing and are left unchanged; main's e67a071a6 CI run was still queued at
the time of this update.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:buffy/space-bunny-alpha [freebuff]

@phantomic12
phantomic12 force-pushed the fix/vulkan-ci-grep-bre-fix branch from b1c3530 to 6a5e27b Compare October 4, 2026 23:03
The `prio[0]` pin landed in 16086ae (localai-org#3375) under a bare `grep -q`, so
grep read it as a BASIC REGULAR EXPRESSION in which `[0]` is a character
class for the digit 0. The pattern therefore asked for `prio0` and could
never match the literal `prio[0]` doctest prints under `-s`. The pin was
unsatisfiable from the moment it landed.

Run 37160385766 on main is the evidence, and it separates the suite from
the gate cleanly: the case ran, all thirteen assertions printed
`is correct!`, and the summary read
`test cases:  1 |  1 passed | 0 failed | 45 skipped` with
`Status: SUCCESS!` — yet the step exited 1, because the SUITE passed and
the GREP could not succeed. So `build-test-vulkan` has been red on main
since 2026-10-02 while measuring a perfectly healthy device.

`-qF` compares the literal text. Replaying all three pins against that
run's captured `vulkan-platform-case.log` gives pin2 exit 1 before and
exit 0 after, with pin1 and pin3 unchanged at 0; a deliberately wrong
`prio[1]` string is still rejected, so the pin keeps its teeth. This is
the only unsatisfiable pin in the file: the remaining bracketed pins
(1908-1910, 1944-1945) are `-qE` and use `[[:space:]]`/`[1-9]`/`[0-9]`
as intended classes.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:buffy/space-bunny-alpha [freebuff]
@phantomic12
phantomic12 force-pushed the fix/vulkan-ci-grep-bre-fix branch from 6a5e27b to 9adfd7c Compare October 12, 2026 23:08
@mudler-agent
mudler-agent merged commit f82dc1d into localai-org:main Oct 17, 2026
23 of 28 checks 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.

2 participants