Repository navigation
feat(ci-status): advisory checks from ci.ignore in .reeve/policy.yml (RV-74) - #110
Merged
Merged
Conversation
… advisory (RV-74) ccm-ci-status reads .reeve/policy.yml from the PR's base branch when a check is not passing and sets aside each check ci.ignore lists, the rule Reeve's merge gate applies: a listed failure or pending check neither fails nor holds the result, and an unlisted failure still does. App and creator bindings are checked when the API allows and otherwise marked owner_unverified. ccm_policy_ci_json in ccm-lib.sh reads the ci block.
… and CHANGELOG (RV-74)
… and read quoted commas in flow entries (RV-74) The fallback named each check after its workflow (Copilot), so an entry for the copilot-pull-request-reviewer check run never applied there, which is the path Cyrus sessions take, and a workflow-name match would have set aside every job. A run that is not passing is now replaced by its jobs, owned by github-actions, and a whole workflow run never matches. Fixtures use the real check name.
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.
Summary
The finish step parked on any red check, so when GitHub's Copilot code review failed on its own side (2026-09-29, every reeve-sandbox PR) every autonomous run parked before Reeve saw the PR. Reeve's gate now accepts an advisory list,
ci.ignorein.reeve/policy.yml(devondragon/reeve#188). This makes ccmagic follow the same rule.bin/ccm-ci-status: when a check is not passing, it reads.reeve/policy.ymlfrom the PR's base branch through the contents API (never the working tree, which is the PR head) and sets aside each checkci.ignorenames, by exact name (check runnameor statuscontext). A listed failure or pending check neither fails nor holds the result; an unlisted failure still does. An entry'sapporcreatoris checked against the check-runs or statuses API; when that read is refused (HTTP 403 for a fine-grained token) the check is set aside by name withowner_unverified: true, since Reeve checks the App again before it merges. New output fields:advisory(the set-aside checks that had not passed) andpolicy_note(why nothing was set aside, when the policy could not be read or parsed, or lists a check under bothci.requiredandci.ignore). With only advisory checks left, the result is decided as if no check had reported. A green PR makes no policy read.actions/runs/{id}/jobs), whose names are the check-run names and whose App isgithub-actions, so{ name: copilot-pull-request-reviewer, app: github-actions }sets aside only that job. A whole workflow run never matches an entry.bin/ccm-lib.sh:ccm_policy_ci_jsonreads the policy'sci.requiredandci.ignore(block form only, flow or block entries, quoted commas kept in values; anything else sets nothing aside). Checked under BSD awk, mawk, and gawk.ccm-merge-gate, the merge guard hook,finish-ticket, and auto-ticket's CI wait all go throughccm-ci-status, they all follow the rule.finish-ticketandauto-ticketget one sentence each saying advisory checks are not failures;tests/every-ticket-since-baseline.diffis regenerated for those lines.[Unreleased]. No version bump and no release in this PR.Tests
bash tests/run.sh: 451 passed, 0 failed. New: a failed advisory check with a green check is green and the policy is read withref=main; an unlisted failure still fails; a pending advisory check is not waited on under--watch; a same-named check from another App is counted; a 403 on check runs sets it aside asowner_unverified; statuscreatorbinding; no policy, an overlapping policy, and an unparseable list set nothing aside; only advisory checks leads tonot-registered; a green PR reads no policy;ccm-merge-gatepasses with a failed advisory check.shellcheck -xas CI runs it is clean.Known differences from Reeve
Reeve is the final gate, so where ccmagic is looser Reeve still parks: