Independent PR & Deep reviews

A complete review.
Outside your coding agent.

Doomer independently investigates the change, its requirements, and the surrounding code. Your team gets a review with findings, evidence, and a recorded revision to inspect in GitHub and in Doomer.

Start the investigation with your coding agent or on GitHub. It can finish before CI checks and within minutes of opening the PR.

Reviews / billing-service / PR #42

Add invoice exports for account admins

Completed in 3m 35s · revision a4b8e12

Review complete

Review complete

Review summary

The investigation, evidence, and execution history stay with this revision.

Prepare source

Complete

Build context

Complete

Select reviewers

Complete

Prepare reviewers

Complete

Review changes

Complete

Verify & publish

Complete

Review activity3m 35s · complete
3 changed files128 changed lines4 reviewers

Reviewer execution trace

review/code
Complete
lang/typescript
Complete
security/authorization
Complete
review/engineering
Complete
The PR workflow

From pull request to an informed merge decision.

The review runs as a separate investigation, with its own findings and evidence. You can inspect it without reopening a coding-agent chat.

  1. 1. Connect and open a PR

    Choose repositories for the GitHub App. Eligible pull requests start a review against the recorded commit.

  2. 2. Examine and resolve

    Inspect findings, code references, intent, and evidence. Push a fix and review the updated change.

  3. 3. Approve with evidence

    Use the review and GitHub checks in your approval process. Configure approval and merge automation separately.

On GitHub

Findings where your team reviews code.

Inline comments connect a concern to the changed line, the evidence, and the correction. Your team can discuss and resolve them on the pull request.

billing-service · Pull requests · #42

Add invoice exports for account admins

Open2 commits · 3 files changed

routes/invoice-export.ts

18+ router.get('/accounts/:accountId/invoices', requireAdmin, async (req, res) => {
19+ const invoices = await loadInvoices(req.params.accountId)
20 res.json(invoices)
doomerbotReview comment

Check access to the requested account before loading invoices.

An admin of account A can supply account B’s ID here. The middleware verifies the admin role, but the related permission code does not establish membership in the requested account.

await requireAccountAccess(session.user.id, req.params.accountId)

Verified against this revision and the shared admin middleware.

Show author response

Added the account access check and a regression test for cross-account export requests. Ready for another review.

Access & approvals

Make the review part of your change-control process.

Explicit repository access, commit-specific findings, and configured GitHub checks support a reviewable approval process.

Approve repository access

Choose which repositories Doomer can analyze and who can configure them.

Keep evidence with the change

Review the recorded revision, findings, and responses alongside the pull request.

Control approval separately

Configure approval automation and required checks to match your team’s policies.

Your organization determines how these records support its SOC 2 change-management controls.

Context

Code can be correct in isolation and still miss the point.

A helper can pass its tests while a caller breaks. An implementation can be internally consistent while leaving out an acceptance criterion. Deep review connects those pieces.

Pull requestThe change
Issues & documentsThe intended behavior
History & feedbackThe team’s context
Adversarial
investigation
Trace · challenge · verify
Findings + evidenceCode locations
Impact & uncertainty

The change and its surroundings

The recorded base and head commits, related code, callers, and tests. The pull request title and description explain what the author set out to change.

The work behind the code

Linked issues and documents bring requirements, acceptance criteria, and design decisions into the investigation. Configured searches can suggest related work when a PR has no linked issue.

What your team already knows

Repository history and relevant feedback from earlier reviews preserve decisions and disagreements. For mapped Sentry projects, recorded errors add stack locations and release or environment context.

Your clarifications

Add the expected behavior when a requirement is missing or ambiguous. With intent capture enabled, saved clarifications help the next review examine the change against the goal.

Adversarial investigation

Follow the risk through the code.

Use specialized adversaries to investigate security, reliability, and product behavior. They examine the change and its relationships with surrounding code, looking for concrete paths to a failure.

An invoice-export investigationFrom entry point to impact
  1. Entry pointAccount ID in a request

    A caller chooses which account to export.

  2. Application pathExport handler

    The identifier reaches the invoice query.

  3. Missing boundaryOwnership check

    A finding identifies an authorization gap.

  4. Possible impactAnother account’s invoices

    The path explains how data could be exposed.

Evidence and uncertainty stay attached.

An attack-path brief connects the entry point, affected code, and possible impact to its supporting finding. It also identifies assumptions that still need verification.

Attack paths appear when a completed review produces a brief. Each investigation runs against the recorded revision, so the evidence relates to the code that was actually reviewed.

The review

Enough detail to make the next decision.

Follow findings back to the relevant code and attack paths. Read the reasoning, inspect the sources, and decide what needs a fix or a closer look.

Finding evidenceCode and evidence together
invoice-export.ts
18const accountId = request.params.accountId
19const invoices = await db.invoice.findMany({
20  where: { accountId }
21})
AUTHORIZATION

Verify access before exporting.

The query uses the account from the request. Check that the signed-in user can access that account before returning its invoices.

Request inputDatabase queryAccount boundary

Findings

Concerns and supporting evidence, including findings below your GitHub posting threshold.

Intent & sources

The interpreted goal, linked requirements, suggested work, and retrieval gaps.

Attack paths

Connections between an entry point, the affected components, and possible impact.

Code provenance

Recorded coding-agent and model attribution when Git AI notes are available. Missing notes remain unknown.

In GitHub and on the review page.

Changed-line findings appear on the diff. Other findings appear in the review body. The review page brings the investigation together so your team can inspect context and evidence alongside the results.

Choose standard, adversarial, or combined review tracks. Configure posting thresholds and comment voice for your repository, and use review replies to capture your team’s feedback.

A failed review is reported as a failure. Approval and merge automation are separately configured through Stampy Stamp.

Review configuration →
In your workflow

Start before the handoff. Review again as the change evolves.

From your coding agent

Use the Doomer CLI to request a review of your worktree while the implementation is still in context. Quick reviews provide early leads as you edit. Deep review adds a fuller investigation when you’re ready to assess the whole change.

Install the review skill →

On your pull request

Connect the GitHub App and enable a repository. Doomer reviews new and updated eligible PRs automatically. A new commit supersedes an in-flight review of the previous head. Authorized collaborators can also request a run with /doomer run.

Connect GitHub →

Catch more before your team picks up the PR.

Bring requirements, adversarial investigation, and code evidence into the review. Keep human attention on the decisions that need it.