pr-sieve
GitHub Action that compiles .jev.yml rules into Jev questions and fails, comments on or passes a PR based on the numbers.
Overview
pr-sieve is a GitHub Action that treats a .jev.yml file as a semantic linter for pull requests. Each rule is a typed Jev question (Noul, Choice or Score) with a gate, and the check fails, comments or passes from those numbers; it does not write reviews, suggest patches or approve anything. Results appear as a pr-sieve Check Run and a sticky table comment with templated reasons rather than generated prose, for example missing_tests at 0.87 against a 0.80 gate failing the check.
Policy is read from the base ref so a PR cannot rewrite its own gate. Secret-shaped strings such as AWS keys or private-key armour fail in code with no Jev call; everything else goes in one batch capped at 12 questions. Fork PRs without a key skip as neutral, and TypeSafe rate limits, server errors or timeouts produce a neutral 'sieve degraded' result. The README stresses pinning the action by commit SHA and using pull_request, never pull_request_target. Local commands support mocked and live evaluation and diffing. MIT licensed.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | missing_tests: does this PR change behaviour without adding tests? | yes · no |
| Yes / no | touches_auth: does this PR touch authentication? | yes · no |
| Choice | change_kind: what kind of change is this PR? | — |
How it works
- Load rules from the base branch's .jev.yml.
- Fail secret-shaped strings in code.
- Send remaining rules to Jev in one batch (max 12).
- Fail, comment or pass per gate; post a check run and comment.
Strengths
- PRs cannot alter their own gate.
- Deterministic secret checks without API calls.
- Degrades to neutral on API errors.
Caveats
- Requires a TypeSafe key as a repo secret.
- Fork PRs without a key are skipped.
Getting started
Copy examples/jev.yml to .jev.yml and examples/pr-sieve.yml to .github/workflows/, then add TYPESAFE_API_KEY as an Actions secret.At a glance
- Type
- Project
- Status
- beta
- Language
- TypeScript
- Runtime
- GitHub Action
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
A GitHub Action that compiles \`.jev.yml\` rules into Jev questions and fails, comments, or passes from the numbers.
logicrw/awesome-jev-projects
Frequently asked questions
Can a PR change the rules that judge it?
No, policy is read from the base ref.
Does it write reviews?
No, it only fails, comments or passes with templated reasons.
What happens if TypeSafe is down?
The check is neutral with a 'sieve degraded' note.
Related projects
Advisor for coding agents: git and Stop hooks flag test tampering, secrets and skipped hooks, with optional Jev review findings.
HookbetaNode quality gate that scores each diff, commit message and doc set with three Jev Score lenses and a security Noul.
CLIbetaTypeScriptSemantic lint rules as yes/no questions to Jev, for review issues like logged secrets or unbounded retries that ESLint cannot express.
ProjectbetaTypeScriptRust code-review gate asking Jev small typed questions about functions and tests, failing CI only on rules measured 80% right.
CLIproductionRustCoding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.
HookbetaTypeScriptRead-only Go CLI that checks files against your plain-language code rules with Jev, locally or in CI.
CLIbetaGo