Review Flow
How a Drixy review runs end to end — when it triggers, when it skips, and what each status means.
This page describes the lifecycle of a single ScanDrix review, from webhook to posted comments.
Trigger conditions
A review starts when your Git provider sends a webhook for a pull request event. ScanDrix runs when:
| Event | Default behavior |
|---|---|
| PR opened | Full review |
| New commits pushed to the PR | Incremental review of changed files |
| PR reopened | Full review |
| Review re-requested via comment or dashboard | Full review |
Label scandrix-skip present | Skipped |
| Draft PR | Skipped (configurable) |
Delivery is asynchronous: webhooks are ingested, queued, and processed by workers with exponential backoff and dead-letter queues. A slow worker can never block your Git provider's webhook endpoint.
Pipeline stages
- Ingest — the webhook is validated (signature check), normalized, and de-duplicated with an idempotency key. Retries are safe.
- Context expansion — the diff is widened with surrounding code so rules see enough context to judge intent, not just changed lines.
- AST analysis — files are parsed per language (Go, TypeScript, Python, and others). Deterministic checks — SQL string concatenation, hardcoded secrets, missing tenant filters, unbounded goroutines — run on the tree.
- AI reasoning — multi-model review evaluates the diff against active Drixy rules, architecture boundaries, and your rule messages. Prompts never contain raw secrets; credentials are redacted first.
- Posting — findings are grouped, deduplicated, and posted as inline review comments with severity badges and patch suggestions.
Most reviews complete in under 60 seconds.
Statuses
✅ Approved— no blocking findings. Informational notes may still be present.💬 Comments— findings posted; none atcriticalseverity (or your configured blocking level).🛑 Changes requested— at least one finding at or above the blocking severity.⏭️ Skipped— trigger conditions not met (draft, skip label, path filters excluded all changes).⚠️ Failed— analysis error (unsupported file type mix, provider API error after retries). Details are in the PR check run log.
Blocking behavior is yours to configure: choose which severities block merge per repository or organization under Settings → Merge Policies.
Incremental reviews
On subsequent pushes, only files changed in the new commits are re-analyzed — unless a change touches a shared module or config file that expands the analysis scope. Full re-reviews can be forced by commenting:
/scandrix review full
Failure handling
Reviews are retried up to 5 times with exponential backoff. Persistent failures land in a dead-letter queue and surface as a failed check on the PR with a link to re-run from the dashboard. Outages on your side never cause duplicate comment storms — every comment carries a stable finding ID used for de-duplication.