Skip to content

feat(githubbot): skip centaur-skip checks, and read check detail without the Checks API - #23

Draft
oponder wants to merge 1 commit into
mainfrom
feat/githubbot-ignored-checks
Draft

feat(githubbot): skip centaur-skip checks, and read check detail without the Checks API#23
oponder wants to merge 1 commit into
mainfrom
feat/githubbot-ignored-checks

Conversation

@oponder

@oponder oponder commented Aug 19, 2026

Copy link
Copy Markdown

Two changes, and the second is why the first works.

Skip a check. A check with centaur-skip in 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 caches workflowRun.workflow.name per 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 statusCheckRollup returns null check nodes and the evaluation degrades to the bare aggregate. That silently affects any deployment using one today: 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 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_MERGE and the merge path are untouched.

fixes PE-8596

@oponder
oponder force-pushed the feat/githubbot-ignored-checks branch 2 times, most recently from 3a3ac43 to 6308448 Compare August 21, 2026 17:10
@oponder oponder changed the title feat(githubbot): let deployments ignore CI checks the bot can't fix feat(githubbot): skip checks from centaur-skip workflows Aug 21, 2026
@oponder
oponder force-pushed the feat/githubbot-ignored-checks branch from 6308448 to f4d3dca Compare August 24, 2026 17:34
@oponder oponder changed the title feat(githubbot): skip checks from centaur-skip workflows feat(githubbot): skip checks whose job id contains centaur-skip Aug 24, 2026
@oponder oponder changed the title feat(githubbot): skip checks whose job id contains centaur-skip Skip workflows whose job id contains "centaur-skip" Aug 24, 2026
@oponder oponder changed the title Skip workflows whose job id contains "centaur-skip" PE-8596: Skip workflows whose job id contains "centaur-skip" Aug 27, 2026
…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
oponder force-pushed the feat/githubbot-ignored-checks branch from f4d3dca to 3689eb7 Compare August 28, 2026 19:47
@oponder oponder changed the title PE-8596: Skip workflows whose job id contains "centaur-skip" feat(githubbot): skip centaur-skip checks, and read check detail without the Checks API Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant