Skip to content

fix(ci): core-and-rest dropped all 99 excludes to a shell comment - #797

Open
ruvnet wants to merge 1 commit into
mainfrom
fix/ci-core-and-rest-excludes
Open

fix(ci): core-and-rest dropped all 99 excludes to a shell comment#797
ruvnet wants to merge 1 commit into
mainfrom
fix/ci-core-and-rest-excludes

Conversation

@ruvnet

@ruvnet ruvnet commented Aug 4, 2026

Copy link
Copy Markdown
Owner

What was wrong

packages: in the test matrix is a YAML folded scalar (>-). YAML does not treat # as a comment inside a block scalar, so the note added in 578400d (2026-06-21) survived as literal text and was substituted into

run: cargo nextest run --no-fail-fast ${{ matrix.packages }}

where bash does treat # as starting a comment. Everything after it was discarded.

For six weeks the core-and-rest shard has actually been running:

cargo nextest run --no-fail-fast --workspace

— the entire workspace, including every heavy research crate the sharding exists to subtract, plus examples/.

Evidence

Three runs, identical signature, zero tests executed in any of them:

run last Compiling silence before kill orphan at kill Starting N tests Summary [
main job 91974446705 11:36:32Z 3h45m47s one rustc 0 0
#791 attempt 1 12:19:03Z 3h45m40s one rustc 0 0
#791 attempt 3 16:21:37Z 3h45m20s one rustc 0 0

All three were cancelled at the 4h timeout-minutes cap. Because it presented as a slow-test timeout, the cap was raised 150 → 180 → 240 minutes across iters 231–232 without the cause ever being found. It fails the same way on main as on any PR branch, so it was not attributable to any one change.

The fix

Comments move above the packages: key where YAML treats them as comments. core-and-rest-wasm had the same pattern — its comment trailed all the -p flags so nothing was dropped, but it is fixed too.

Verified by parsing the workflow: 99 of 99 excludes now reach cargo, versus 0 before.

Two of the 99 names — ruvector-postgres and timesfm-wasm — are not workspace members. Cargo emits a warning rather than an error for an unknown --exclude (confirmed by experiment), and ruvector-postgres is deliberately in the root Cargo.toml workspace exclude list, so both are inert.

Guard

The failure is silent — the job runs, it just runs the wrong command — so a convention will not hold it. .github/scripts/lint_test_matrix.py fails CI if any matrix packages scalar contains a #, and reports how many flags would be dropped.

Tested both directions:

  • on this tree: ok: 9 matrix shards, no '#' in any packages scalar
  • on the pre-fix workflow: core-and-rest: flags intended: 99, flags reaching cargo: 0 -> 99 flag(s) SILENTLY DROPPED

Verification

This PR's own Tests (core-and-rest) run is the measurement. It should now compile a subtracted workspace and actually reach the test phase — the first time that shard has run its intended command since 2026-06-21.

🤖 Generated with claude-flow

https://claude.ai/code/session_01WfyBMvexdN4bhWVaqSXKvR

The packages value is a YAML folded scalar. YAML does not treat '#' as a
comment inside '>-', so the note added in 578400d (2026-06-21) survived as
literal text and was substituted into

    run: cargo nextest run --no-fail-fast ${{ matrix.packages }}

where bash does treat ' #' as starting a comment. Every flag after it was
discarded. The shard has been running a bare

    cargo nextest run --no-fail-fast --workspace

for six weeks: the entire workspace, including all the heavy research crates
the sharding exists to subtract, plus examples/.

Measured, three runs, identical signature:

  main    job 91974446705   11:36:32Z last Compiling, 3h45m47s silence
  PR #791 attempt 1         12:19:03Z last Compiling, 3h45m40s silence
  PR #791 attempt 3         16:21:37Z last Compiling, 3h45m20s silence

All three cancelled at the 4h timeout-minutes cap with one rustc still alive,
and zero tests executed -- no "Starting N tests" and no "Summary [" line in any
of the three logs. It presented as a slow-test timeout, which is why the cap
was raised 150 -> 180 -> 240 minutes over iters 231-232 without ever fixing it.

Comments move above the packages key, where YAML treats them as comments.
core-and-rest-wasm had the same pattern; its comment trailed all the -p flags
so nothing was dropped, but it is fixed too.

Verified: all 99 excludes now reach cargo (0 before). Two of the 99 names,
ruvector-postgres and timesfm-wasm, are not workspace members -- cargo emits a
warning rather than an error for those, confirmed by experiment, and
ruvector-postgres is deliberately in the root Cargo.toml workspace exclude.

Adds .github/scripts/lint_test_matrix.py as a guard: the failure is silent, so
a convention will not hold it. Tested both ways -- passes on this tree, and on
the pre-fix workflow reports core-and-rest 99 intended / 0 surviving.

Co-Authored-By: claude-flow <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_01WfyBMvexdN4bhWVaqSXKvR
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