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:

EventDefault behavior
PR openedFull review
New commits pushed to the PRIncremental review of changed files
PR reopenedFull review
Review re-requested via comment or dashboardFull review
Label scandrix-skip presentSkipped
Draft PRSkipped (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

  1. Ingest — the webhook is validated (signature check), normalized, and de-duplicated with an idempotency key. Retries are safe.
  2. Context expansion — the diff is widened with surrounding code so rules see enough context to judge intent, not just changed lines.
  3. 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.
  4. 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.
  5. 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 at critical severity (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:

code
/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.