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]

Reply via email to