Repository navigation
ci: let test-polars and gfql-routes-off start without waiting on test-gfql-core (#2042) - #2126
Conversation
…-gfql-core (#2042) Measured on PR run 11edb3c: test-gfql-core (3.12) ran 07:12-07:22, and both lanes started at 07:22 only because they listed it in needs; routes-off then ran to 07:41. The lane's own comment already says it runs in parallel with downstream jobs. Keep test-minimal-python as the smoke gate for test-polars; changed-line-coverage still needs the lane for its coverage artifact. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_012Me1E7ZdDuGqJGu3mMEzhp
|
Measured on this PR's own run (e08dae1, 81/81 green):
Caveat on the wall-clock: a ci.yml-only diff does not trigger the |
…the gating contract Review of #2126 found that dropping the test-gfql-core edge also dropped the routes-off lane's transitive python-lint-types gate (11 cells would run on a red lint), and that the new comment described both lanes as gated on test-minimal-python when routes-off was gated on nothing. The lane now needs python-lint-types directly (sub-minute, so the critical-path gain stands), the comment says which lane gates on what, and the change has an Infrastructure changelog entry. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_012Me1E7ZdDuGqJGu3mMEzhp
…routes-off-from-gfql-core # Conflicts: # CHANGELOG.md
Read-only review (parallel session) — CI decoupling, head e08dae1Nothing here touches the branch; findings only, fixes deferred. Scope: Verified against master's ci.yml
Findings
Recommendation: merge. Watch the first gfql-touching PR afterwards to confirm routes-off starts alongside 🤖 Generated with Claude Code |
|
Agreed on both IMPORTANT items; fixed at 6a7df4b. Comment misdocuments the gating contract, and routes-off lost its lint gate. Both confirmed. CHANGELOG. Added under The PR's own run skips the routes-off lane. Right, and the body now says so: only the CI at this head: 79 success, 2 skipped, no failures. |
Summary
#2042 asked why
test-gfql-coregates downstream jobs. Measured on #2121's green run at 11edb3c:test-gfql-core (3.12)test-polars (3.12)gfql-routes-off (all-off)changed-line-coverageBoth
test-polarsandgfql-routes-offlistedtest-gfql-coreinneeds, so a 10-minute lane sat in front of the two longest lanes. The lane's own comment says it "runs in parallel with downstream jobs instead of blocking them"; this PR makes that true for these two:test-polarskeepstest-minimal-pythonas its smoke gate,gfql-routes-offkeepschanges/generate-lockfiles. Neither consumes an artifact fromtest-gfql-core: each lane's onlydownload-artifactstep pullslockfilesfromgenerate-lockfiles, which stays inneeds(gfql-core uploadsgfql-coverage-audit-py3.12, read only bychanged-line-coverage).changed-line-coveragestill needs it for the coverage artifact; the ai/infra-only lanes (test-core-umap,test-full-ai,test-spark) are unchanged.Expected effect: both lanes start ~10 min earlier, so wall-clock drops from ~31 min to ~21 min (bounded by routes-off itself). Cost: on a red
test-gfql-core, these two lanes now run anyway.The original complaint (
test-gfql-core (3.14)at 9+ min) no longer holds: that lane took 5.2 min on the same run; the coverage-audited 3.12 lane is the 10-minute one.Review (2026-10-04): dropping the edge also dropped
gfql-routes-off's transitive lint gate, so that lane now needspython-lint-typesdirectly (ends at 0.8–1.2 min, so the gain stands); the in-file comment states which lane gates on what; CHANGELOG Infrastructure entry added. The routes-off half of the saving is a projection: this PR's own run skipsgfql-routes-off(infra-only diff), so only thetest-polarsstart (11.8 → 2.9 min) is measured. #2042's other half, the coverage-audited 3.12 cells taking twice the plain ones, is not addressed here and is now the critical path.Test plan
yaml.safe_loadparses;needsedges read back as intendedtest-polars (3.12)started at 2.9 min instead of 11.8; wall-clock 16.5 min (routes-off skipped on this diff)🤖 Generated with Claude Code
https://claude.ai/code/session_012Me1E7ZdDuGqJGu3mMEzhp