comphead opened a new pull request, #5784: URL: https://github.com/apache/datafusion-comet/pull/5784
## Which issue does this PR close? Closes #5007. ## Rationale for this change `ci.yml` fires on `pull_request.types: [labeled]`, and GitHub cannot filter that trigger by label name. `preflight` guarded itself with an `if:` on the four gating labels, so any other label started a run in which `Preflight`, `Detect changes` and all 12 heavy jobs reported `skipped`. A job held back by `if:` still publishes a check run under its own name, and the newest check run for a name is what the merge box, `gh pr checks` and required-status-check evaluation read. An unrelated label therefore overwrote the commit run's real `Preflight` verdict with `skipped`. Of the 170 open PRs today, 28 report `Preflight: skipped` as their latest verdict, and 14 of those had an earlier `success` that is no longer reachable. #5721 is one example: green on 2026-09-05, and now every CI row reads skipped. The same `if:` chain had a second problem. A *gating* label re-ran the whole pipeline instead of just the job it gates. Run [34126169891](https://github.com/apache/datafusion-comet/actions/runs/34126169891) (`run-iceberg-tests` on #5759) rebuilt Linux, macOS, Spark 3.5, Spark 4.1 and all four Iceberg jobs at a commit that had just been tested. ## What changes are included in this PR? - `preflight` loses its `if:` guard and runs on every event, so `Preflight` always reports a real verdict. Cost is about a minute of `ubuntu-slim` per label event. - Each heavy job now excludes `labeled` events unless the label just added is the one it gates, so applying a label no longer duplicates a pipeline. - `.github/workflows/README.md`: corrected five stale rows in "What runs when", added the missing `iceberg_1_11`, redrew the diagram, and added a "Label events" section recording why `preflight` must stay unguarded. Not addressed here: a non-gating label still starts a run, so the bare caller names (`PR Build (Linux)`, ...) still publish `skipped` rows. Those names never carry a passing verdict anyway, because a reusable workflow that runs publishes only its child jobs. Removing them needs the label trigger split into its own workflow. ## How are these changes tested? `actionlint --shellcheck=off` and `prettier --check "**/*.md"` pass. The `if:` expressions were extracted from the finished YAML and evaluated against every event scenario: | scenario | `preflight` | always-on heavy | label-gated heavy | | ------------------------------------------------------- | ----------- | --------------- | -------------------------------- | | push to main | run | run | run | | `workflow_dispatch` | run | run | run | | PR opened / synchronize | run | run | only if the PR carries the label | | label `performance` | run | skip | skip | | label `performance`, PR already has `run-iceberg-tests` | run | skip | skip | | label `run-iceberg-tests` | run | skip | `iceberg_1_8/1_9/1_10` only | | label `run-spark-3.4-tests` | run | skip | `spark_3_4` only | push, dispatch, opened and synchronize behave exactly as before. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
