AI PR review runs automatically every time the coding agent opens or synchronizes a pull request on a Deployaar-managed branch. The review is grounded entirely in the original PRD — the reviewer is explicitly instructed never to invent requirements that are not written in the spec. This keeps the review fair, predictable, and focused on what was actually agreed upon rather than on theoretical best practices.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/paramveer-cyber/Deployaar/llms.txt
Use this file to discover all available pages before exploring further.
The review system applies a consistency principle: if a piece of code was present and not flagged in a previous review pass, it will not be flagged in a subsequent pass unless it was directly modified in the new diff. Only what changed is reviewed. This prevents review noise from accumulating across repeated agent runs on the same feature.
Review Depths
Each project’s linked repository has a configuredreviewDepth. The depth controls how many hops of imported-file context the reviewer fetches before forming its verdict. The valid values are defined in the reviewDepthEnum (packages/database/models/enums.ts) and the ReviewDepth type (packages/services/github/review-context.ts).
| Depth | Context hops | Scope |
|---|---|---|
shallow | 0 | Diff only. Catches obvious correctness and security issues. Fastest turnaround. |
depth_1 | 1 | Diff plus files directly imported by the changed files. |
depth_2 | 2 | Diff plus two hops of import context. Balances thoroughness with speed. |
depth_3 | 3 | Full three-hop cross-file analysis. Checks for side effects outside the immediate diff. Slowest but most thorough. |
Issue Severity
Every issue the reviewer raises is assigned one of four severity levels. Severity directly determines whether an issue is blocking — onlycritical and major block merging.
| Severity | Description | Blocking? |
|---|---|---|
critical | The implementation is broken or introduces a concretely exploitable security hole. Reserved for clear, demonstrable problems only. | ✅ Always |
major | A significant functional gap against an explicit, clearly stated PRD requirement. Must be something the PRD unambiguously requires that is absent or wrong. | ✅ Always |
minor | A small quality gap that does not prevent the feature from working as specified. | ❌ Never |
suggestion | Anything that would be nice but is not required by the PRD. | ❌ Never |
isBlocking flag is derived mechanically at review time:
Issue Categories
Each issue is also assigned a category that describes the nature of the problem. Categories are informational and do not affect the verdict.| Category | When Used |
|---|---|
correctness | Logic errors that produce demonstrably incorrect behaviour |
security | Concrete, exploitable vulnerabilities introduced by this PR |
performance | Measurable performance regressions directly caused by the change |
style | Code style issues — never blocking, at most a suggestion |
acceptance_criteria | A stated acceptance criterion from the PRD is not satisfied |
edge_case | An edge case explicitly listed in the PRD’s edge cases section is not handled |
other | Cross-cutting issues that don’t fit the above categories |
Review Verdicts
After all issues are evaluated, the review receives one of two verdicts:| Verdict | Condition | Effect on Feature Request |
|---|---|---|
passed | Zero blocking issues (zero critical or major issues) | Feature request status → in_review |
needs_work | One or more blocking issues | Feature request status → fix_needed |
needs_work, the feature request is surfaced in the dashboard’s “needs action” feed. A new agent run can be triggered to address the blocking issues, which will produce a new PR update and re-trigger the review workflow.
Review Delta
When two or more completed reviews exist for the same feature request, Deployaar computes a delta between the two most recent completed attempts. The delta reveals whether the code is improving between agent runs.isImproving is false across multiple attempts, it may indicate that the feature request’s PRD needs to be edited or the task breakdown needs revision before triggering another agent run.
Resolving Issues
Individual review issues can be manually marked as resolved by any team member via the review UI. Resolving an issue stamps it withresolvedByUserId and resolvedAt.
Important: resolving issues does not change the verdict
Important: resolving issues does not change the verdict
Marking an issue resolved is a human annotation — it does not re-run the AI or recalculate the
blockingIssueCount or verdict fields on the review record. A resolved issue is still counted in blockingIssueCount. The only way to obtain a passed verdict is for the AI reviewer to run a fresh pass and find zero blocking issues on its own.passed verdict:
- Trigger a new agent run to address the blocking issues.
- The agent pushes updated commits, synchronizing the PR.
- The
pull_requestwebhook fires with actionsynchronize. - The
onPullRequestReceivedInngest function runs a fresh review. - If the new review finds zero blocking issues, the verdict becomes
passed.
Review Model
PR review usesresolveLanguageModelForUser to select the AI model, which respects the AI provider configured in user settings. The pull-request-review service also defines a resolveReviewModel helper that returns Anthropic claude-sonnet-4-6 directly, but the active code path calls resolveLanguageModelForUser. Ensure ANTHROPIC_API_KEY is set if you configure Anthropic as your AI provider — the review will fail to produce a verdict if the configured provider’s API key is missing.