Company
About Tomosu Our Team
Platform
Platform & Agents Indexes How it works Solutions Pricing
Get Started
MCP Server VS Code — Plugin Installation Scan Your Repo — Guide Integrations · GitHub App Integrations · CodeRabbit MCP FAQ
Free Tools
Governance Impact
Resources
Blogs News Download / Free Trial Book a call →
Production Reliability · Pull requests

How to Identify High Risk Pull Requests

Tomosu AI·11 min read·

Not every pull request deserves the same amount of scrutiny.

A documentation change and a modification to a shared authentication service can both be valid pull requests, but their potential production impact can be very different. The difficult part is identifying that difference before the change reaches production.

A useful approach is to look beyond the size of the diff and consider the context around the change. That includes:

The goal is not to label every pull request as safe or unsafe. It is to identify changes that deserve additional attention.

What is a high risk pull request?

Short definition

A high risk pull request is a change that has characteristics suggesting a larger potential impact if it behaves unexpectedly in production.

Those characteristics can include:

There is no universal threshold that makes a pull request high risk. The same change can have different implications depending on the architecture, production usage, and deployment process.

Start with the change itself

The first step is understanding what the pull request actually modifies. Look at files changed, components changed, lines added and removed, APIs modified, database changes, configuration changes, infrastructure changes, and shared libraries.

Diff size can be a useful context, but it should not be treated as a complete risk signal. A five line change to a shared authentication library may deserve more attention than a 500 line change to an isolated internal tool.

TEN SIGNALS AROUND ONE PULL REQUEST 1 Shared components 2 What the code does 3 Dependency graph 4 Production usage 5 Testing & verification 6 Recent change activity 7 Production behavior 8 Incident history 9 Blast radius 10 Rollback & deploy PULL REQUEST Change context not just lines changed
The ten checks in this article, in one picture. Diff size is context, not the verdict.

1. Check whether shared components are involved

Shared components can create a large potential blast radius.

ONE LIBRARY IN THE DIFF, FOUR SERVICES IN REACH IN THE PR Shared library Service A Service B Service C Service D IN REACH Production users The pull request may only modify the library. Its potential impact extends to every dependent service.
Dependency relationships are one of the first things to check when identifying high risk changes.

For a deeper process, see How to Assess the Blast Radius of a Code Change.

2. Look at what the changed code does

Some parts of a system have more production significance than others. Pay attention to changes involving:

This does not mean these changes are automatically high risk. It means their production context can make the consequences of failure broader.

3. Check the dependency graph

Next, look beyond the files in the pull request. Ask:

For example, a pull request that changes a shared API client used by six services reaches multiple production workflows. A change with this kind of dependency reaches more context than an isolated change.

4. Look at production usage

Dependency relationships tell you what could be affected. Production usage helps determine what that impact could mean. Consider:

A dependency used by one internal service is different from one used across the main customer API. This is one reason static code analysis alone cannot provide the entire picture.

5. Check testing and verification

Next, look at the evidence supporting the change: unit tests, integration tests, end to end tests, regression tests, load tests, staging verification, and manual testing.

The important question is not simply:

Did CI pass?

Ask:

What behavior did the tests actually verify?

A pull request can have a green CI pipeline while important production paths remain untested. For the broader measurement framework, see How to Measure Software Change Reliability.

6. Check recent change activity

Recent activity can provide useful context. Look at the number of recent changes, deployment frequency, recent refactoring, related pull requests, multiple concurrent changes, and recent ownership changes.

A component that has changed repeatedly over a short period may deserve additional investigation, especially if the current change also has broad dependency reach. This is a signal, not a universal rule.

7. Look at production behavior

Current production behavior can change how you evaluate a pull request. Check relevant error rates, latency, resource usage, dependency failures, alerts, and runtime anomalies.

For example, a change touching a service that is already experiencing elevated errors may warrant more investigation than the same change touching a stable service.

This is where observability becomes useful. For more on the relationship, see Production Reliability vs Observability.

8. Check incident history

Previous incidents can provide additional evidence. Ask:

Past incidents do not prove that a new change will fail. They provide historical context that can help determine how much additional verification is appropriate.

9. Assess the blast radius

Once you understand the change and its dependencies, map the potential impact: changed component → direct dependencies → downstream services → production workflows → potential user impact. Ask:

For a detailed walkthrough, see How to Assess the Blast Radius of a Code Change.

10. Consider rollback and deployment controls

A pull request's potential impact also depends on how it will reach production. Consider feature flags, canary releases, gradual rollout, regional rollout, automated rollback, manual rollback, and monitoring during deployment.

A change with broad reach and no practical rollback path may deserve more scrutiny before merge. A broad change with strong isolation and gradual rollout may have more operational controls around it.

A practical high risk pull request checklist

Before merging, ask:

Change scope
  • What changed?
  • Is shared or critical code involved?
  • Are APIs, databases, or infrastructure affected?
Dependencies
  • What depends on the changed code?
  • How many production services consume it?
  • Are external dependencies involved?
Production
  • How heavily is the affected component used?
  • Is it part of a customer facing workflow?
  • Are there current runtime problems?
History
  • Has this component caused incidents before?
  • Have similar changes caused problems?
  • Has the area changed frequently recently?
Verification
  • What has been tested?
  • Are important production paths covered?
  • Is additional testing needed?
Blast radius
  • How far could the change propagate?
  • How many services or workflows could be affected?
Deployment
  • Can it be rolled out gradually?
  • Is rollback straightforward?
  • Can the change be isolated?

These questions create a much better picture than simply sorting pull requests by lines changed.

How to prioritize risky pull requests

Once potentially high risk pull requests have been identified, teams can prioritize engineering attention based on the evidence. For example, consider two changes.

WHICH ONE NEEDS MORE ATTENTION? PULL REQUEST A ● Small diff ● Shared authentication library ● Many production consumers ● Limited integration testing ● Difficult rollback PULL REQUEST B ● Large diff ● Isolated internal tool ● Strong test coverage ● Limited production usage ● Easy rollback Sorted by lines changed, B comes first. Sorted by production context, A does.
The number of changed lines alone does not capture the difference between these changes.

A useful prioritization process considers multiple signals together. Possible actions include additional review, more testing, dependency investigation, smaller change scope, a feature flag, gradual rollout, and additional monitoring.

The appropriate action depends on the team's architecture and reliability requirements.

Should high risk pull requests always be blocked?

No single rule applies to every engineering organization. A high potential impact change does not automatically mean it should not merge. Instead, the assessment can trigger additional controls.

A SIGNAL TRIGGERS CONTROLS, NOT A BLOCK Potentiallyhigh impact Additionalevidence needed Testing / review/ investigation Deploymentcontrols Mergeand monitor The objective is to make uncertainty visible while engineers still have options.
High potential impact raises the evidence bar. It doesn't automatically stop the merge.

High risk does not mean large diff

This distinction is worth emphasizing. A pull request with many changed lines is not automatically more likely to cause a production problem. Likewise, a tiny pull request is not automatically safe.

DiffWhat it touchesProduction reach
10 linesShared database library20 services
500 linesIsolated internal prototypeNo production consumers

The first change may have a much broader potential production impact.

This is why change context matters more than diff size alone.

Production Reliability Index

Tomosu uses the Production Reliability Index (PRI) to bring multiple reliability signals into a broader view of changes and production systems. The platform describes PRI as a master score built from seven sub indices:

These signals are calibrated to the organization and used across development, pre merge, and production.

The idea is to bring multiple pieces of reliability evidence together rather than treating one signal, such as diff size or test status, as the complete picture. See also Production Reliability vs Code Review for why the diff alone rarely tells the whole story.

Try the Production Reliability Index →

The main idea

A pull request is more than a diff. Its potential production impact depends on what changed, what depends on it, where it runs, what has happened before, and how the change will be deployed.

Change + dependencies + production usage + testing + history + runtime signals + deployment conditions = change context.

That context can help engineers identify which pull requests deserve more attention before they reach production. It sits naturally inside pre merge reliability analysis and the broader question of what production reliability means.

For the next step, see How to Prioritize Risky Pull Requests. You can also check How to Assess Production Reliability Before Deployment.

Frequently asked questions

How do you identify high risk pull requests?

Look at change scope, dependencies, production usage, testing, recent activity, incident history, runtime behavior, blast radius, and deployment conditions.

Are large pull requests always high risk?

No. Diff size is one signal, but production impact depends heavily on what changed and what depends on it.

How do you prioritize risky pull requests?

Start by identifying changes with broad dependencies, critical production usage, limited verification, significant historical issues, or difficult deployment conditions. Then determine what additional evidence or controls are appropriate.

Can code review identify high risk pull requests?

Code review can identify many implementation problems, but production risk can also depend on information outside the diff, such as dependency relationships, runtime behavior, incident history, and deployment conditions.

Can static analysis identify high risk pull requests?

Static analysis can identify many code level issues, but it may not contain enough production context to understand the full potential impact of a change.

Can AI identify high risk pull requests?

AI can help analyze code and combine different signals, but the usefulness of the result depends on the evidence available to the system and how that analysis is validated.

Should every pull request receive the same level of review?

Teams can use change context to determine where additional review or verification is useful rather than treating every change identically.


A pull request is more than a diff. Tomosu's Production Reliability Index brings dependencies, runtime signals, history, and deployment context together so the changes that deserve attention stand out before they merge. Try the Production Reliability Index →