feat(githubbot): skip centaur-skip checks, and read check detail without the Checks API - #23
Draft
oponder wants to merge 1 commit into
Draft
feat(githubbot): skip centaur-skip checks, and read check detail without the Checks API#23oponder wants to merge 1 commit into
oponder wants to merge 1 commit into
Conversation
oponder
force-pushed
the
feat/githubbot-ignored-checks
branch
2 times, most recently
from
August 21, 2026 17:10
3a3ac43 to
6308448
Compare
oponder
force-pushed
the
feat/githubbot-ignored-checks
branch
from
August 24, 2026 17:34
6308448 to
f4d3dca
Compare
…out the Checks API An approval gate that fails until a person signs off reads to githubbot as red CI: it spends every CI-fix attempt on a check no agent can turn green, then escalates. Checks with `centaur-skip` in their name are now dropped from the CI evaluation and from the escalation comment's failing list. The marker rides the job id because GitHub recomputes the check-run name every run, unlike workflowRun.workflow.name, which it caches per consuming repo for ruleset-injected required workflows and never refreshes. That filter needs readable check detail, and a fine-grained PAT — the token type GitHub recommends — has no Checks permission at all, so statusCheckRollup returns null check nodes. Today that silently degrades every deployment using one: failingNames is always empty, so fix turns are dispatched with "Failing checks: unknown" and escalations say "Still failing: the CI checks". When the nodes are unreadable, githubbot now rebuilds the checks from the Actions API, where a job is the same object as its check run. It trusts the reconstruction only when it accounts for every context GitHub counted — commit statuses and check runs from other Apps aren't Actions jobs — and otherwise keeps the existing aggregate behavior rather than call a PR green on a check it never saw.
oponder
force-pushed
the
feat/githubbot-ignored-checks
branch
from
August 28, 2026 19:47
f4d3dca to
3689eb7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two changes, and the second is why the first works.
Skip a check. A check with
centaur-skipin its job id is dropped from the CI evaluation. We have checks a bot can never turn green because they require a human to act, and today githubbot burns all three fix attempts on them and then escalates. The marker rides the job id rather than the workflow name: GitHub recomputes the check-run name every run, but cachesworkflowRun.workflow.nameper consuming repo for ruleset-injected required workflows, where a rename never reaches the API (verified — neither re-adding the ruleset entry nor opening a fresh PR rebuilds that record).Read check detail without the Checks API. The filter needs readable per-check detail, and a fine-grained PAT — the token type GitHub recommends, with classic PATs on a deprecation path — has no Checks permission at all. So
statusCheckRollupreturns null check nodes and the evaluation degrades to the bare aggregate. That silently affects any deployment using one today:failingNamesis always empty, so fix turns are dispatched with "Failing checks: unknown" and escalations say "Still failing: the CI checks".When the nodes are unreadable, githubbot now rebuilds the checks from the Actions API, where a job is the same object as its check run. It trusts that reconstruction only when it accounts for every context GitHub counted — commit statuses and check runs from other GitHub Apps aren't Actions jobs — and otherwise keeps the existing aggregate behavior rather than call a PR green on a check it never saw.
No new configuration.
GITHUBBOT_AUTO_MERGEand the merge path are untouched.fixes PE-8596