Skip to content

fix(ci): unbreak main — the merge-landed PR gate, and a stale loader message - #210

Merged
mudler merged 1 commit into
mainfrom
row/CI-MAIN-RED-REPAIR
Aug 9, 2026
Merged

fix(ci): unbreak main — the merge-landed PR gate, and a stale loader message#210
mudler merged 1 commit into
mainfrom
row/CI-MAIN-RED-REPAIR

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

Main CI has been red on every merged PR. Two independent defects, both surfaced by #178's push (run 31332846716). cuda-fat-build in that run was cancelled by concurrency, not failing.

1. The gate reddened main for obeying it

check-role-discipline.py judges every commit in the before..after range on its own message. A PR landed with a real merge commit pushes the merge and the branch commits under it: the merge names the PR, the branch commits were never required to, so each one read as a direct push.

Push Commit flagged Jobs red
#178 6603356a documentation-checkpoint, agent-record
#204 e73cbbae same
#196 1a02ab4f same

Arrival is now judged once, on the commit that lands the change: merged_pr_content exempts what a row/* PR merge brings in. Squash-merges are untouched — their one commit carries (#N) and passes on its own message.

Not a weakening, and gated as such: only the side parents count, so --not parents[0] keeps a commit pushed straight to main from being laundered by merging a PR on top, and a merge naming no row and no PR exempts nothing.

2. A stale message in a test

6603356a taught LoadMergedBf16RawNK to accept F8_E4M3 shards and rewrote its rejection to name the supported dtypes. test_qwen27_dense_forward.cpp:229 still asserted the old "expected BF16", so build-test-cpu and both sanitizer legs failed on it.

The expectation now reads the message the loader raises, and the FP8 merge path that arrived without a test in this file gets one: a mixed BF16+FP8 merged parameter, with expectations hand-computed from E4M3 bytes and the scale rather than re-derived through the same dequant helper the loader calls, plus the per-channel-scale rejection.

Evidence

  • tests/scripts/test_agent_role.py: 47/47; the 5 new checks are 5/5 red without the fix.
  • The three real CI ranges (3bbee96e..0cf3dbbb, 0cf3dbbb..bc6e3d72, #204) now exit 0; the first exited 1 before.
  • test_qwen27_dense_forward: 7/7, 333 assertions (was 314).
  • scripts/agent-preflight.sh: exit 0.

Not run locally: the full ctest sweep — this box is at 100% disk. The C++ change touches one test file, which was built and run green.

FOLLOWING_AGENTS_PROTOCOL

…message

Main CI has been red on EVERY merged PR. Two independent defects, both landed
by #178's push (run 31332846716); `cuda-fat-build` in that run was cancelled by
concurrency, not failing.

THE GATE REDDENED MAIN FOR OBEYING IT. `check-role-discipline.py` judges every
commit in the `before..after` range on its own message. A PR landed with a REAL
merge commit pushes the merge AND the branch commits under it: the merge names
the PR, the branch commits were never required to, so each one read as a direct
push. `6603356a` (#178), `e73cbbae` (#204) and `1a02ab4f` (#196) all failed this
way, in both `documentation-checkpoint` and `agent-record`. Arrival is now judged
ONCE, on the commit that lands the change: `merged_pr_content` exempts what a
row/* PR merge brings in. Squash-merges are untouched -- their one commit carries
"(#N)" and passes on its own message. NOT a weakening, and gated as such: only
the SIDE parents count, so `--not parents[0]` keeps a commit pushed straight to
main from being laundered by merging a PR on top, and a merge naming no row and
no PR exempts nothing. Four unit checks build real git history for those cases,
plus the exact `3bbee96e..0cf3dbb` range CI ran, pinned with `has_reached_main`
forced TRUE -- from a `row/*` worktree everything reports as pending PR
disposition, and the test would have passed against the defect it exists to
catch. Suite 47/47, and 5/5 red without the fix.

A STALE MESSAGE IN A TEST. `6603356a` taught `LoadMergedBf16RawNK` to accept
F8_E4M3 shards and rewrote its rejection to name the supported dtypes;
`test_qwen27_dense_forward.cpp:229` still asserted the old "expected BF16", so
`build-test-cpu` and both sanitizer legs failed on it. The expectation now reads
the message the loader raises, and the FP8 merge path that arrived WITHOUT a test
in this file gets one: a mixed BF16+FP8 merged parameter, expectations hand-
computed from E4M3 bytes and the scale (never re-derived through the same
dequant helper the loader calls), plus the per-channel-scale rejection.
7/7, 333 assertions.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-opus-5 [ClaudeCode]
@mudler
mudler force-pushed the row/CI-MAIN-RED-REPAIR branch from 580161e to 290a2ea Compare August 9, 2026 21:29
@mudler
mudler merged commit 7533eeb into main Aug 9, 2026
13 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