yuqi1129 opened a new pull request, #14202: URL: https://github.com/apache/gravitino/pull/14202
### What changes were proposed in this pull request? - Report **Fork CI** and **ASF Allowlist Check** only as commit statuses. The publishers no longer create check runs, so each check appears once on the PR instead of also as `Conflict Marker Check / Fork CI (pull_request)` and `Conflict Marker Check / ASF Allowlist Check (pull_request)`. - The Fork CI status link now names the run attempt it reports, `https://github.com/{owner}/{repo}/actions/runs/{id}/attempts/{n}` (plus `#fork-run-{id}-{n}` for a trusted result, recording the fork run it was chosen over). The publisher uses that link instead of the check run's JSON record: it never replaces a newer attempt or a finished result with a running one, and sweeps leave a status settled while the runs it depends on are unchanged. - Retiring a cancelled previous head now reads that head's status: only a status still pending on exactly that fork attempt becomes `Fork CI cancelled for a previous commit`. A retired status is no longer pending, so it needs no marker. - Failed and cancelled results add `; re-run it in your fork` when it fits the 140-character description. Without a run, the status links to the fork's Fork CI page instead of the PR. - Passes start on a fixed one-minute cadence. A pass took 30-40 seconds of API calls on apache/gravitino, so sleeping a full minute afterwards made passes about 1.6 minutes apart. - Every `workflow_run` other than a trusted run refreshes only the PRs with that run's head, once. A finished Fork CI push run (for example on `main` after a merge) used to start an 11-minute polling sweep in the signal queue, blocking PR signals; on apache/gravitino one such job ran from 11:57 to 12:08 on 2026-10-23. - Remove `checks: write` from both publishers and update CONTRIBUTING. ### Why are the changes needed? After #14192, every PR shows Fork CI and ASF Allowlist Check twice: once as the commit status and once as a check run that GitHub attaches to an arbitrary workflow suite (here Conflict Marker Check). The check runs only stored metadata for the publisher, and they could disappear from the PR's latest-check view anyway. Fix: N/A ### Does this PR introduce _any_ user-facing change? Contributors and reviewers see one **Fork CI** and one **ASF Allowlist Check** row. **Details** opens the exact fork run attempt. The Checks tab no longer has a Fork CI page with a summary; that page's **Re-run** button only refreshed the status. ### How was this patch tested? - 90 Node tests in `.github/scripts/tests`, rewritten around statuses: links to the exact attempt and no check run, the lifecycle states and descriptions, the re-run hint and its length limit, stale-attempt and running-over-finished guards, legacy links without an attempt, sweep settlement for fork and trusted results (including a fork rerun under a trusted result), retirement of previous heads, the fixed cadence, and `workflow_run` push events refreshing only their head without sleeping. Ten mutations of the new logic were each rejected by a test. actionlint reports only the known `concurrency.queue` diagnostic. - Sandbox (timelyflow/gravitino with contributor fork yuqi1129/gravitino): [timelyflow/gravitino#38](https://github.com/timelyflow/gravitino/pull/38) lists only `Fork CI` and `ASF Allowlist Check` as statuses; its check runs are only `conflict-marker-check` and `signal`. The status linked `…/runs/39950637328/attempts/1`, showed `Failed: build / changes (+1 more); re-run it in your fork` for a failing run, and turned to `All required suites passed` 32 seconds after the run finished. -- 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]
