aster review reviews a diff: the current branch, a range, a PR, or stdin.

How it works

  1. Hypothesize. A model reads the diff and forms candidate findings.
  2. Retrieve. A local symbol index pulls the code around each candidate, so the verifier sees context, not just the hunk.
  3. Verify. A second pass tries to refute each finding. What survives is reported; what is refuted is dropped.
  4. Shape. Findings carry file, line, severity, category, title, suggestion, and confidence.
The refutation pass is the point: a finding that cannot be refuted after an honest attempt is worth your time. --no-index skips the symbol index for speed at the cost of evidence.

Configuration

Under review: in aster.yaml: model: auto tiers with ASTER_ROUTER_TIER=cheap|balanced|strong; aster model router shows the current pick. Environment overrides: ASTER_VERIFY_MODEL, ASTER_HYPOTHESIS_MODEL, ASTER_VERIFY_CONCURRENCY.

In CI

--json prints findings as data; exit code reflects severity, so a plain aster review --json step fails the build on a critical finding. The --pr --comment pair posts findings inline on the PR. See Fix for consuming the JSON.