- Grounded, fail-closed review engine; local, GitHub, GitLab, Bitbucket Cloud, and Azure DevOps. GitHub, GitLab, and Azure support self-managed base URLs.
- Two-check semantics (postil/review advisory, postil/gate blocking);
gate.onError: block|advisoryfor fail-open on provider outages. - Incremental re-review with resolved/carried reconciliation.
- Repository, pull-request and head-bound conversation context for generation, adjudication and scoring, with bounded inputs and source-grounded refutation.
- SARIF 2.1.0 output (
--sarif) for code-scanning ingestion. - Repo guardrails file (
.postil/guardrails.md) injected into the prompt; violations surface askind: guardrailfindings that quote the rule. - Content policy (built-in baseline by default, optional
.postil/content-policy.mdadditions,contentPolicy.enabled: falseopt-out): reviews prose in the diff for fabricated/contradicted doc claims, same-PR self-contradictions, AI-authorship/process-narration residue, leaked conversation text, and stale temporal/TODO/style residue; surfaces askind: contentPolicy. postil plandeterministic config dry-run;postil doctor; exact-ref pre-push hook.- Compact PR summaries with run links, retained policy-suppressed findings, and provider-safe operational check text.
- Bounded large-change review with deterministic hunk receipts, mandatory direct coverage for security and control-plane changes, final-request exact-evidence semantic batches for low-risk hunks, a 24-request quality ceiling lowered by hosted model and scorer fan-out, four-way concurrency, format-specific lockfile summaries, oversized-line segmentation, a hosted ceiling that reserves every enabled post-processing call, and fail-closed partial review that preserves findings from the selected schedule when normalized hunks remain unreviewed.
.coderabbit.yamltranslation for zero-cost migration.- Model cascade + concurrent multi-model consensus over any OpenAI-compatible endpoint; bounded retry with jittered backoff on transient provider errors.
- Verified
curl | shinstall script with SHA-256 checksum verification; prebuilt release binaries for six targets, including x86_64 musl (Alpine) for static-libc systems. - Sigstore keyless signing of release artifacts (cosign, GitHub OIDC); the installer verifies the signature when cosign is present, supports required-signature mode, and refuses a stripped signature unless explicitly overridden.
- Validate the Bitbucket and Azure DevOps incremental (
--since-sha) diff paths against live instances. The full-PR-diff paths are exercised by tests; the incremental ones depend on unverified API conventions (Bitbucket'sdiff/{spec}two-dot order, which may also apply merge-base semantics on Cloud; Azure's changed-file reconstruction). - Bitbucket inline-comment threading and Azure DevOps iteration-aware diffs for very large PRs.
- Learning from dismissals: feed comment-resolution outcomes from the hosted platform back into per-repo suppression hints.
- An
/evidencebenchmark: Postil's own silence rate and confirmed-finding rate on public OSS PRs, with raw envelopes.
The hermetic PR-review benchmark harness lives in bench/: isolated run dirs,
mock forge and model endpoints, prompt-leakage guardrails, and 70 fixtures. The
set contains 57 seeded defects across languages and change classes plus 13 clean
PRs where correct behavior is silence.
Mock mode runs in CI against a release build and measures pipeline fidelity: grounding, gating, statusline correctness, and prompt-leakage controls. It does not measure detection ability because the mock model returns recorded findings generated from fixture specs.
Live-model mode runs the same 70 fixtures against selected OpenRouter-compatible
models while keeping forge I/O mocked, then reports detection rate, false
positives, cost with provider or catalog-estimate provenance, latency, and
per-case detail. Local runs are explicit because they spend real model tokens.
Tagged releases run five sequential complete samples and compare their cohort
against a signed, predeclared ten-report calibration baseline. Durable slot
reservations, receipts, reports, cohort manifests, and binaries are
authenticated by GitHub OIDC attestations for release and calibration runs.
OpenRouter generation records independently bind each cohort to distinct
provider calls with matching model, provider, token, and cost totals.
Calibration runs once on the current main commit, with each reservation
attested before its GitHub-hosted job starts inference. Failed, interrupted,
missing, substituted, and copied samples invalidate the whole cohort rather
than becoming replaceable observations. Diff-file live mode is
available for single-model local checks with no mock forge.
Comparative claims require peer runs on the identical fixture set; site comparisons stay qualitative and sourced until then.