Docs
Docs
Jevlit reviews your pull requests automatically — as advice, never as approval.
Install
GitHub App (the hosted path)
- Open console install and install the Jevlit GitHub App on the repositories you want reviewed. Install opens at launch — the waitlist decides the order.
- Open a pull request as usual.
- Jevlit scans the changed functions and posts one review comment with a verdict per function, plus a Check Run as summary.
The App asks for the smallest useful permission set: pull_requests: write, checks: write, contents: read, metadata: read. It reacts to opened, synchronized and reopened pull requests.
Advisory pre-push hook (local engine)
The same engine runs before you push. The snippet below is adapted from the documented sample hook — advisory only, it never blocks a push:
cat > .git/hooks/pre-push <<'EOF'
#!/bin/sh
# Advisory only: findings never block a push.
if ! command -v prepush >/dev/null 2>&1; then
echo 'Jevlit: NEEDS REVIEW — prepush not on PATH; push continues.' >&2
exit 0
fi
(cd "$(git rev-parse --show-toplevel)" && prepush review --base origin/main) \
|| echo 'Jevlit: NEEDS REVIEW — scan failed; push continues.' >&2
exit 0
EOF
chmod +x .git/hooks/pre-pushCopy it from the console install page with one click.
Command line
Documented engine commands (zero-API dry run first, live review second):
prepush plan --base origin/main --head HEAD
prepush review --base origin/main --head HEAD --jsonThe cloud CLI (jevlit login, key in ~/.config/jevlit/config.toml) ships at launch and talks to the hosted API only.
Usage
Each touched enclosing function becomes one bounded scope. Six independent questions run per scope and the code — not the model — applies the frozen threshold. Verdicts per function: FLAG, UNCERTAIN, or CLEAN. Anything skipped, unresolved or failed is disclosed as PARTIAL / NEEDS REVIEW.
Billing per scan, in fixed order:
- subscription quota first,
- then prepaid credits,
- then a hard stop — never a surprise bill.
Large pull requests are cut at the plan cap (max scopes per scan: Trial 40, Pay-as-you-go 150, Pro 150, Team 400). Scopes that were not reviewed are named “not reviewed” explicitly — work is never silently dropped. A daily cap per workspace (Trial 50, Pay-as-you-go 100, Pro 200, Team 500) guards against abuse and bot-PR storms. Prices are on /pricing.
Method and transparency
What Jevlit measures, with the frozen threshold of 0,7:
56 echte bugs uit 17 open-source projecten. Jevlit ving er 13 en sloeg nooit alarm op de fix. Selectie: kleine fixes in één bestand.
Bevestiging op een nieuwe held-out: 47 bug-paren. Engine v2 ving er 10 (v1 op dezelfde items: 2), met 2 alarmen op fixes en 1 op 25 gewone commits. McNemar p=0,039 (10 vs 2). Replicatie E4: 13/37 vs 6/37.
Bovengrens: een gewone commit kan zelf een bug bevatten. Van de twee alarmen lijkt er één op een echte gedragswijziging te wijzen.
kosten (USD, log-schaal)
Echte code: $0,0179 / 122 diffs.
Source data: results/jev-prepush-mvp/suite-E/report.json and results/jev-prepush-mvp/suite-F/, measured 2026-09-19; ship engine results/jev-prepush-mvp/lab/HELDOUT-v1-vs-v2c-E6.json, measured 2026-09-20; costs docs/jev-prepush-mvp/tables.md, measured 2026-09-17.
Kosten zijn tariefafgeleid ($0,042 per miljoen input-tokens, output gratis), geen facturen. Enkele runs, kleine n; zie de intervallen. Volledig audit-spoor: docs/jevlit/HARNESS-REVIEW.md.
Honest limits
- Advisory-only: Jevlit never approves. A failed or partial scan is NEEDS REVIEW — look yourself.
- The selection favours small, function-local fixes in one file. Nothing here proves anything about all bug kinds.
- The ordinary-commit count is an upper bound on a small sample — never quote it as a proven false-positive rate.
- Costs are tariff-derived, not invoices. Single runs, small n — read the intervals.
- Ship engine jev-function-scan-v2: confirmed once on a 47-pair held-out set — single run, small n, read the intervals.
- Hard stop at empty quota or empty credits with a clear message (“monthly limit reached” / “credits empty”). No overage in v1.
Privacy and retention
On a pull request the changed functions are sent to api.typesafe.ai (provider: TypeSafe) for scoring — the only external party that sees your code, and only the functions changed in the diff.
- Per finding we store only: path, line number, function name, verdict, probability and family. No source, no diff, no finding text.
- Findings: 30 days, then deleted.
- Scans (aggregates, no code): 13 months.
- Credit ledger (payments): 7 years (fiscal retention).