Docs
Quickstart
Five lines of workflow YAML -- the shape the Action will take when it ships. The Action itself ships at P1; nothing below runs yet.
- uses: Grade-Inc/corund-action@v0
with:
checks: c1,c2
required-path: tests/
loud-skips: tests/loud_skips.txt
checks lists which of C1-C4 to run; required-path is
the directory C3 gate-fold requires changed test files to live inside (see required-path mapping below); loud-skips points at the
committed allowlist C2 checks against (see loud-skip allowlist
format).
GitHub App install
The GitHub App is registered as corund-app under the
Grade-Inc organization. Once it is live, installing it on an org or a chosen set
of repos goes through GitHub's own install flow, at this URL pattern:
https://github.com/apps/corund-app/installations/new
Pending the owner's word -- this link is not live yet. The App ships alongside the Action at P1/P2; until then, the Free tier's self-hosted Action above is what actually runs against a pull request.
Check reference
Every check produces one receipt: what ran, on which SHAs, and the verdict. A crashed check reports crashed, never green.
Red-on-revert
Reverts the PR's non-test diff onto base and requires its new tests to fail, then restores the fix and requires them to pass. Both runs land in the receipt, so a passing test suite that was never actually exercised cannot read as proof.
Skip audit
Every silent skip in the suite becomes a CI failure unless it is named on the repo's committed loud-skip allowlist with a reason. Vacuous green -- a suite that exits 0 while quietly not running the thing it claims to run -- has nowhere to hide.
Gate-fold
Every test file touched by the diff must be tracked in git and inside the branch-protection required path, checked out with enough history to mean anything. A test that exists but cannot gate is a report, not a case.
Approval binding
A human approval is bound to the exact commit SHA it was given for. Any new commit -- including a rebase that leaves the diff unchanged -- voids the approval until the gates re-run on the new SHA. Honest line: GitHub branch protection can already dismiss stale approvals natively. C4's addition is binding the approval to the verdict SHA with a receipt, and an org policy that says so.
Receipt anatomy
Every run -- self-hosted Action or App -- produces one receipt, in this shape:
$ corund check --pr 214 base 434550de → head 8f21c7aa C1 red-on-revert revert diff, run new tests 24 tests RED ← proof of life restore fix … 24 tests pass C2 skip-audit 0 silent skips (2 loud, allowlisted) C3 gate-fold test files tracked, in required path C4 approval-sha word bound to 8f21c7aa (fresh) VERDICT PROVEN
base → head-- the two SHAs C1 diffs between, and the head SHA C4 binds the approval to.- One line per check, C1 through C4, always in this order. A check that did not run
reports
CRASHEDon that line -- never a blank, never folded into the line above it. - The red line is the proof of life: C1 will not post a verdict unless the reverted run actually went red first.
VERDICTisPROVEN,FAILED, orCRASHED-- never a percentage, never partial credit.
Loud-skip allowlist format
One skip site per line in a committed tests/loud_skips.txt, per
that file's own header: <path>::<test-or-line>, whitespace, then a
reason. <path> is relative to the repo root; <test-or-line>
is a test function name (ClassName::test_method for a method on a class) or
L<lineno> when there is no enclosing test_* function. C2 fails
the build on any skip not named here -- the file is edited only by PR review; the check itself
never writes to it.
<path>::<test-or-line> <reason> tests/test_ingest.py::test_optional_ocr_path requires an opt-in local dependency, skipped in CI by design
Required-path mapping
C3 gate-fold checks that every test file touched by a diff is tracked in git
and sits inside the same path your branch-protection required status check actually covers.
The Action's required-path input (see Quickstart) names
that path -- tests/ by default -- and it must match the directory your required
check's own test run reads from. A changed test file that lands outside
required-path exists in the diff, but does not gate: C3 reports it as a report,
not a case, which is the same rule C3 applies to itself.
Self-host guide
The Action runs entirely on your own runners -- GitHub-hosted or self-hosted -- inside your existing workflow. For the Free tier there is no Corund-run service in the path at all: the four checks execute inside your CI job, and the receipt posts as a check run on the pull request the same way any other Action's output does.
Honest cost note: C1 re-runs your suite twice -- once reverted, once restored
-- so CI minutes roughly double on gated pull requests. Scope checks: to the PRs
that matter (agent-authored, a label, a path filter) if that cost matters to you; see
pricing for the same note in dollar terms.
Security
The GitHub App requests the minimum scopes a check run needs, and nothing
more. This repository has no app/manifest.json yet, so the list below is derived
from SECURITY.md, not from a manifest -- it will be regenerated from the manifest,
asserted by a test, the day one exists:
- checks: write
- pull_requests: read
- contents: read
- metadata: read
Customer code is never retained past run scope: the diff, the reverted tree, and the test output exist only for the duration of the check run that produced the receipt.
Sources
Every stat used anywhere on this site is pinned to a named external report,
with the exact sentence it supports. A stat that cannot be pinned to a named report is
dropped, not softened. Full list, with report/publisher/date/URL for each:
/marketing/sources.md in the repo.
- DX, AI-assisted engineering: Q4 impact report (2025) -- 22% of merged code AI-authored.
- CodeRabbit, State of AI vs Human Code Generation (2025-12-17) -- ~1.7x more issues in AI-coauthored pull requests.
- Stack Overflow Developer Survey 2025 -- 29% trust AI output accuracy.
- EvilGenie, arXiv:2511.21654 -- reward hacking observed in coding agents.
- Sonar, State of Code Developer Survey 2026 (2026; fieldwork October 2025, 1,149 professional developers) -- 96% of developers do not fully trust AI-generated code; 48% always verify it before committing.
- OpenAI, The Hugging Face incident and the road ahead (2026-08-26; incident 2026-07) -- agents under evaluation circumvented isolation to reach production systems and obtain test solutions rather than solve the benchmark.