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 · How-to

How to Assess Production Reliability Before Deployment

Tomosu AI·10 min read·

A pull request can pass CI, get approved in code review, and still introduce a production problem.

The reason is simple: most pre-deployment checks look at individual parts of a change. Production reliability depends on how those parts interact with the system around them.

A useful production reliability assessment asks a broader question:

What evidence do we have that this specific change is ready to reach production?

This doesn't mean predicting exactly what will happen after deployment. It means bringing the relevant evidence together before the change ships and identifying where uncertainty remains.

If you haven't read it yet, start with What Is Production Reliability in Software Engineering?.

What should you assess before deployment?

There isn't one universal checklist that works for every application. The useful signals depend on the architecture, the change, the team's deployment process, and the production history of the system.

But a practical assessment can start with six areas:

01

Change scope

What the change actually modifies, and what it can influence.

02

Dependencies

Dependencies and affected components, in both directions.

03

Verification

Testing and verification — what was tested and what wasn't.

04

Production behavior

What the affected systems are doing right now.

05

History

Incident and change history in the affected area.

06

Deployment

Deployment and rollback conditions if something goes wrong.

The goal isn't to produce a perfect score from these signals. The goal is to understand what you know, what you don't know, and whether the remaining uncertainty is acceptable before deployment.

1. Start with the change itself

First, understand what the change actually modifies. Look at:

A small diff isn't necessarily a small production change. A five line modification to a shared authentication library can have a much larger production surface than a 500 line change isolated to an internal tool.

DIFF SIZE IS NOT PRODUCTION SURFACE 5 LINES CHANGED Shared auth library api web billing admin mobile Large production surface Every service that authenticates is in reach. 500 LINES CHANGED Isolated internal tool no downstream consumers Small production surface A big diff that stays inside its own walls.
Line count alone isn't a useful measure of production reliability. Reach is.

This is why line count alone isn't a useful measure of production reliability. The important question is:

What parts of the production system can this change influence?

2. Map the dependencies

Next, look at what the change depends on and what depends on it. This can include:

Dependencies matter because a change can be correct in isolation while interacting badly with another component.

For example, a service might introduce a new database query that works correctly against its own test data. But if the query changes load characteristics on a shared database, the production impact may extend beyond the service that owns the pull request.

CORRECT IN ISOLATION, SHARED IN PRODUCTION SERVICE A · THE PR New query — passes against its test data SHARED DATABASE Load characteristics change Service B Service C Service D B, C, and D aren't in the diff. They are in the production impact.
Dependency context exposes relationships the pull request's own tests were never going to see.

Dependency context helps expose that kind of relationship before deployment.

3. Look at what was actually tested

“Tests passed” is useful information. It isn't the same thing as “the change has been fully verified.” Ask:

The important distinction is between tests that passed and behavior that has actually been verified. A change can have excellent test coverage in general while still introducing an untested interaction.

4. Check current production behavior

Production already contains useful evidence about the system. Depending on the application, that might include:

This is where observability becomes useful. Observability tells you what the system is doing now. That information can provide context for understanding what a new change is about to modify.

But observability by itself doesn't answer whether the change should ship. That requires connecting the production evidence to the specific change. For more on this distinction, see What Is AI Observability?.

5. Check incident and change history

Past production behavior can be useful evidence when evaluating a new change. Look for:

For example, imagine a pull request changes a service that has already experienced several production incidents related to connection pooling.

That history doesn't mean the new change is automatically unsafe. It does mean there is useful context that shouldn't disappear simply because the current pull request passes its tests.

Historical evidence helps answer:

Has this part of the system caused problems before, and does this change interact with the same conditions?

6. Check deployment and rollback conditions

A reliability assessment shouldn't stop at the code. Ask what happens if the change doesn't behave as expected. Consider:

A change with a clear rollback path has a different operational context from a change that is difficult to reverse.

This doesn't automatically make one reliable and the other unreliable. It changes the consequences of a failure and the options available to the team.

Put the signals together

The six areas above shouldn't be treated as six independent checkboxes. The useful part is the relationship between them. Consider a hypothetical pull request:

AreaWhat the evidence shows
ChangeUpdates a shared authentication component.
DependenciesUsed by several production services.
TestingUnit tests pass, but integration coverage for one service is missing.
Production behaviorThat service has experienced elevated latency recently.
HistoryThe authentication component has been involved in previous incidents.
DeploymentThe change can be rolled out gradually, but rollback requires a configuration change.

None of those signals alone tells you what will happen. Together, they give an engineer much more context.

THE SIGNALS POINT AT THE SAME PLACE CHANGEShared auth component DEPENDENCIESSeveral prod services TESTING1 integration gap PRODUCTIONElevated latency HISTORYPrevious incidents DEPLOYMENTGradual; config rollback CHANGE CONTEXT before deployment
The untested service, the latency, and the incident history all concern the same component. That's the context a checkbox list loses.

That is the point of production reliability assessment.

What evidence should block deployment?

This is where teams need an explicit policy. Not every weak signal should automatically block a deployment. The same evidence — missing integration coverage — can call for different responses:

ContextResponse to missing integration coverage
Some teamsAdd the test before merging.
Another changeMerge behind a feature flag and use a gradual rollout.
A critical production pathDo not deploy until the behavior is verified.

The important part is defining these responses before the situation happens. A reliability signal is much more useful when it is connected to an action.

How to think about production reliability before deployment

A simple model is:

CHANGE → EVIDENCE → UNCERTAINTY → ACTION CHANGE What is beingmodified? EVIDENCE Code, dependencies,tests, production,history UNCERTAINTY What haven't weverified? ACTION What shouldhappen becauseof it? More testing Another review Smaller rollout Feature flag Rollback plan Monitoring Stop Possible actions, from lightest to heaviest.
The goal is to make the remaining uncertainty visible before users discover it for you.

The goal isn't to eliminate all uncertainty. That's not realistic in a production system.

The goal is to make the remaining uncertainty visible before users discover it for you.

Where the Production Reliability Index fits

The Production Reliability Index (PRI) is Tomosu's approach to turning multiple reliability signals into a single trendable score. Tomosu describes PRI as a master score built from seven sub indices:

The underlying signals provide the detail. PRI provides a way to track the overall reliability picture over time.

For teams working with a large number of changes, the idea is to move from manually piecing together reliability context toward having a consistent signal attached to the production environment and the changes moving through it.

See the Production Reliability Index →

Production reliability assessment vs code review

Code review remains an important part of the process. But code review primarily examines the change itself. Production reliability assessment expands the context around that change.

A reviewer might ask:

Does this implementation do what it is supposed to do?

A production reliability assessment also asks:

These are complementary questions. You can go deeper in Production Reliability vs Code Review.

A practical pre deployment checklist

Before deploying a significant change, ask:

Change
  • What components does this change affect?
  • Does it introduce a new execution path?
  • Does it modify a shared component?
Dependencies
  • What services, databases, APIs, or libraries does it depend on?
  • Which other components depend on the changed system?
Verification
  • What was tested?
  • What wasn't tested?
  • Are the affected integrations covered?
Production
  • What is happening in the affected services right now?
  • Are there existing errors, latency issues, or resource problems?
History
  • Has this component caused incidents before?
  • Has it changed frequently recently?
  • Are there known failure modes?
Deployment
  • Can the change be rolled back?
  • Can it be released gradually?
  • What signal would tell us to stop or roll back?
Read the blanks

If several answers are unknown, that uncertainty is itself useful information.

What to read next

This article covers the process of assessing a change before deployment. The next step is understanding how those signals can actually be measured: How to Measure Software Change Reliability. Or see how Tomosu puts these signals together in the Production Reliability Index.

Frequently asked questions

What is production risk assessment for a software change?

It is the process of evaluating a specific software change against evidence that could affect its behavior after deployment. This can include dependencies, testing, production behavior, incident history, code changes, and rollback conditions.

How do you assess production reliability before deployment?

Start by understanding the change and its affected components. Then examine dependencies, test coverage, current production behavior, incident history, and deployment or rollback conditions. Finally, connect the evidence to an action when uncertainty remains.

Does passing CI mean a change is reliable?

No. Passing CI means the configured checks passed. It doesn't necessarily tell you how the change will interact with production dependencies, existing system behavior, or historical failure modes.

Should every risky change be blocked?

Not necessarily. The appropriate response depends on the system, the evidence available, and the consequences of failure. The response could be additional testing, another review, a gradual rollout, a feature flag, or blocking deployment.

How is this different from observability?

Observability provides information about system behavior. Production reliability assessment uses that information alongside change context, dependencies, testing, and history to understand what a specific change could mean for production.


This article covers the process of assessing a change before deployment. The next step is understanding how those signals can actually be measured — or seeing how Tomosu puts them together in one trendable score. How to Measure Software Change Reliability →