Postil

Changelog

What's new.

Notable changes to the CLI, the gate contract, and platform support. Stable surfaces follow semantic versioning.

v0.9.8

September 11, 2026

Hosted reviews cover more changed source within their review limits and recover from unsupported dismissals through independent scoring.

  • FixedLarge hosted reviews use the available review budget to cover more changed source. When required source remains unreviewed, the review reports incomplete coverage and keeps the gate blocked.
  • FixedReviews can recover from unsupported dismissals of new findings after a complete independent scoring check. Those findings are suppressed only when scored below the reporting threshold. An unavailable or incomplete check preserves findings and prior review state and keeps the gate blocked.

v0.9.4

August 27, 2026

The CLI starts useful reviews without model or diff-selection setup, keeps terminal progress concise, and keeps agent-box logins renewable.

  • ChangedAfter authentication, `postil review` selects staged changes, commits since the default branch, or tracked working-tree changes and uses the embedded `openai/gpt-5.6-luna` low-effort reviewer when no local model is configured.
  • Added`postil models` explains the embedded default, local scorer behavior, and how explicit endpoint model IDs are accepted.
  • ChangedInteractive terminals show compact progress and a final result while automation retains detailed telemetry. `--verbose` exposes the detailed stream when a person needs it.
  • ChangedCLI logins refresh automatically and remain renewable for up to 180 days of inactivity. The service-only mention responder is no longer exposed as a local CLI command.

v0.8.28

August 24, 2026

Reviews recover from rebased incremental baselines and intermittent provider routing metadata without failing the pull request.

  • FixedAn incremental review whose stored baseline is no longer an ancestor of the pull-request head restarts as a full review instead of failing.
  • FixedA routed model response that temporarily omits the upstream provider identity is retried before the review reports a provider failure.

v0.8.27

August 20, 2026

Hosted reviews run on a different model, chosen because it decides the merge gate correctly more often and interrupts clean pull requests less.

  • ChangedHosted reviews now use a model that gets the block-or-pass decision right 86% of the time against the previous model's 74%, measured across repeated runs of the same 70-fixture suite. It raised no false finding in any run and stayed silent on every clean fixture. Reviews also return faster: the slowest one in twenty finishes in 18 seconds rather than 29.
  • ChangedThe benchmark that gates a release now measures the model the release ships, read from the configuration the binary is built with. It previously named a model separately, so a release that changed the model still measured the old one.

v0.8.24–0.8.26

August 18, 2026

A hosted review gets the share of its time budget that its own plan reserved, instead of the share a much larger review would have been given.

  • FixedA review split across several batches sends them together rather than one after another, so each batch gets the review's whole time budget instead of a fraction of it. Sending them in sequence divided the budget by the number of batches, and larger changes lost a batch to the deadline.
  • FixedHosted reviews divide their time budget by the work they actually scheduled. Every review was held to the slice sized for a review split across many batches, so a review that needed only one model request was cut off partway through and reported as a provider outage. Reviews of ordinary changes were the ones affected, because they are the ones that finish in a single request.

v0.8.17–0.8.23

August 18, 2026

Hosted reviews admit the plans they are meant to run, a review that stops early reports the reason it stopped, and findings keep the direct evidence they were established from.

  • FixedHosted reviews measure their planned worst-case cost against a ceiling for plans rather than against the limit on what a review may spend. The two differ by orders of magnitude, and holding the plan to the spending limit refused every hosted review before it reached a model, whatever the size of the change.
  • FixedA review that stops before reaching a verdict reports the cause it stopped for. Failures unrelated to scoring were previously published as unvalidated model output, which named a stage that had not run and dropped the text identifying the fault.
  • FixedFindings keep the direct evidence they were established from, repository-dependent findings are distinguished from ones grounded in the change alone, and publication evidence stays direct.
  • AddedGitHub publication plans are emitted immutably, so what a review intends to post is fixed before it posts.
  • SecurityThe HTTP/2 dependency moves to the release that rejects unbounded empty data frames.

v0.8.13, 0.8.15–0.8.16

August 13–14, 2026

Review findings are adjudicated against candidate-bound direct evidence and a complete repository receipt before publication, while large changes remain bounded without silently skipping required source.

  • FixedRepetitive source is encoded losslessly within the review budget, reconstructed only for exact citations, and cannot impersonate the evidence transport format.
  • ChangedAbsence, removal, conditional, and delegated-verification claims use the same complete-corpus adjudication regardless of generated kind; refuted and unresolved delegated checks are not published.
  • FixedRepository-wide claims are bound to immutable search receipts, and time-sensitive claims use the trusted UTC request date instead of model memory.
  • FixedInline code in GitHub review findings preserves comparison operators while surrounding prose remains HTML-safe.

v0.8.9–0.8.12

August 12, 2026

Large pull-request descriptions no longer consume review context that is never sent to the model, and bounded retries retain their complete evidence.

  • FixedLong pull-request descriptions are budgeted from the bounded text rendered into the review request, so dependency updates with extensive release notes reach review instead of failing before model contact.
  • FixedRetry and correction requests preserve their route, phase, evidence coordinates, and bounded prior response, including quoted Git paths and Unicode source text.
  • FixedProvider-contract and timeout-fallback tests use isolated process state and structured attempt records, keeping release checks deterministic under parallel and slower runners.

v0.8.7–0.8.8

August 9, 2026

Ignored paths do not consume bounded-review coverage, and uncertainty resolution can continue from exact diff evidence when repository lookup is unavailable.

  • ChangedFiles matched by ignore rules are excluded before grounding, batching, and coverage planning. Generated-looking source remains reviewable unless a repository explicitly ignores it.
  • FixedWhen repository file lookup fails, uncertainty resolution uses exact evidence already present in the reviewed diff. Any uncertainty that remains unresolved is reported as a warning rather than an operational failure.

v0.8.5–0.8.6

July 30, 2026

A finding's citation is checked against the code its prose names, and the CLI can review without your own model credential.

  • FixedA finding whose prose names a construct the diff places on a different line is no longer published. Citing the wrong line makes a claim the reader cannot check against the code in front of them.
  • FixedA content-policy claim can no longer state more confidence than the finding it argues from, and is withdrawn when that finding was itself withdrawn as mis-anchored.
  • ChangedOne observation about several files is published once, naming every location it affects, instead of once per file.
  • ChangedAn uncertainty finding whose body only asks you to confirm something no longer carries a blocking severity. Findings that report what the review checked are unaffected.
  • FixedA second review of an unchanged commit no longer repeats inline comments the previous review already left on the pull request.
  • Addedpostil login authorizes the CLI against Postil through a browser, so reviews run without your own model provider credential.

v0.8.1–0.8.4

July 24–28, 2026

Reviews can resolve uncertainty against repository files and publish each GitHub finding on one configured surface.

  • Addedreview.findingPresentation selects batched review comments by default or advisory check annotations on GitHub, so the same finding is not rendered twice.
  • FixedA review that cannot produce a verdict fails postil/review instead of appearing skipped; postil/gate still follows the configured outage policy.
  • ChangedFinding bodies over six hundred bytes are rewritten to state the defect, evidence, and fix in at most three sentences; reviews.conciseFindings: false opts out.
  • ChangedBuiltin content-policy rules for stale text and house style state functional tests with illustrative examples, so the policy stays accurate as model vocabularies shift, and repo-appended rules can scope themselves to specific paths.
  • AddedA bounded post-scoring pass fetches the repository files an uncertainty finding names and resolves it with byte-verbatim evidence instead of asking the developer to inspect them; reviews.uncertaintyResolution: false opts out.

v0.7.0–0.7.9

July 19–21, 2026

Self-service trials and bounded hosted reviews use release-scoped activation checks and durable retry accounting.

  • AddedNew installations receive a 30-day private-repository trial without a payment card.
  • ChangedHosted activation checks the pinned model and provider route, token usage, and provider cost accounting.
  • FixedFailed hosted reviews reconcile reserved provider spend after model execution begins.
  • FixedHosted runs report an operational failure unless GitHub receives their terminal review checks.
  • FixedBounded reviews recover incomplete model output and validate every selected source batch before returning results.
  • FixedPrior findings remain active until a current review rechecks their evidence across bounded batches and renamed files.
  • FixedReasoning-heavy synthesis retries once with a larger bounded output budget and stops when that retry is exhausted.
  • SecurityHosted large-review retries bind provider calls and billing to an authenticated durable plan and immutable retry identity.

v0.6.0–0.6.3

July 13–14, 2026

Review delivery has time and output bounds, hosted reviews handle large changes in bounded batches, and GitHub reviews fetch every changed-file page.

  • ChangedHosted reviews process large changes in bounded batches; local reviews can opt in with postil review --bounded.
  • FixedGitHub reviews fetch every changed-file page and recover when a model spends its response on reasoning without returning review content.
  • FixedProvider recovery and review publication have explicit limits, so a completed review cannot turn into an unbounded retry or oversized comment.

v0.5.0

July 13, 2026

Bring-your-own-key setups can call Anthropic-compatible APIs directly.

  • AddedNative Anthropic request and authentication support alongside the OpenAI-compatible API format.

v0.4.1–0.4.6

July 11–12, 2026

Scoring, model fallback, and blocking rules became configurable and time-bounded.

  • AddedAn independent scorer records its assessment separately from the review model, and gate policy can block selected finding kinds.
  • ChangedModel cascades live in configuration and report progress while a review is running.
  • FixedTimeouts retry before advancing the cascade; gate replay, GitHub links, and review-comment formatting stay consistent.

v0.2.0–0.2.1

July 10, 2026

Content-policy checks, accurate run states, and reliable re-runs became defaults.

  • ChangedContent-policy review is enabled by default, with plain gate output and truthful queued, running, completed, and failed states.
  • FixedRe-runs can resolve carried findings, annotations use the changed side of the diff, and transient forge failures retain the completed review.
  • ChangedParallel source fetches and bounded model output reduce review latency without shortening the review prompt.

v0.1.1–0.1.2

June 13–July 2, 2026

Multi-forge replies, benchmark coverage, content-policy checks, and security hardening extend the first CLI releases.

  • AddedInteractive replies work across GitHub, GitLab, Bitbucket, and Azure DevOps, with end-to-end coverage for each forge.
  • AddedThe benchmark harness runs in CI and supports bounded live-model comparisons with detection, severity, concurrency, and retry measurements.
  • SecurityCargo audit runs in CI, known dependency advisories are closed, model output is stripped of terminal control sequences, and diff plus check-run output is capped.
  • FixedAmbiguous incremental baselines fail closed, disabled review stays disabled, and PR-description findings must cite the relevant text.

v0.1.0

June 13, 2026

First tagged release of the CLI and the gate contract. Signed multi-arch binaries are published on GitHub releases; you can also install via the one-line script, build from source, or pin the GitHub Action to a commit SHA.

  • Addedpostil review with --staged, --base, and --diff-file inputs, plus JSON envelope output via --output-json and SARIF 2.1.0 output via --sarif.
  • AddedTwo named check-runs on every non-draft PR in enabled repositories: postil/gate (blocking) and postil/review (advisory), with documented branch-protection setup.
  • AddedForge support beyond GitHub via --forge gitlab, bitbucket, and azure, each covering its self-managed/server variant through a base-URL environment variable (GITLAB_API_URL and friends). Bitbucket and Azure DevOps are best effort: shipped, tested, and refined as platform-specific edge cases surface.
  • AddedIncremental re-review (--since-sha + --baseline) with resolved/carried finding reconciliation.
  • Addedpostil respond: the interactive @postil bot engine for PR and issue mentions. The CLI command covers GitHub, GitLab, Bitbucket, and Azure DevOps via --forge; the hosted GitHub App is GitHub only. Review-and-answer only, never opens PRs.
  • Addedpostil doctor preflight, postil plan dry-run against stored envelopes, and postil hook install for a pre-push review hook.
  • AddedRepo guardrails: rules in .postil/guardrails.md are injected into the prompt; violations surface as guardrail findings that quote the rule.
  • AddedOne-line install script with SHA-256 checksum verification and Sigstore keyless signature verification when cosign is present; build from source with cargo install --git.
  • SecurityLeast-privilege GitHub App (no contents:write), fail-closed gate on operational errors (repos can opt into gate.onError: advisory), AES-256-GCM sealing for bring-your-own inference keys, Sigstore keyless signing of release artifacts in CI.

Signed binaries and source archives are published on GitHub releases.