Release Readiness Checklist: The Go/No-Go Framework
A go/no-go release checklist with a blocker-versus-non-blocker decision framework, change-failure-rate framing from DORA, and a habit that makes every release blocker fixable: capture it with a reproduction.

Most bad releases do not fail because nobody noticed the bug. They fail because the team noticed it, argued about whether it mattered, and ran out of time to decide before the deadline decided for them. A release readiness checklist exists to take that decision off the deadline's hands and put it back on a person's.
This playbook gives you three things: a go/no-go checklist you can copy, a framework for sorting every open bug into blocker or non-blocker, and a way to measure whether the gate is actually working. It is written for the team that ships weekly, hits the same 6pm scramble every Friday, and wants to stop having the same severity argument every time.
What is a release readiness checklist?
A release readiness checklist is a fixed set of pass/fail conditions a build must meet before it ships, ending in a recorded go or no-go. It covers tests, critical-path smoke checks, open blockers, rollback readiness, and monitoring. Its job is to apply one standard to every release, regardless of deadline pressure, and to settle severity before release day instead of during it.
The structure matters more than the exact items. A working checklist has objective conditions (a test suite is green or it is not), a written definition of what blocks a release, and a single accountable owner who says the word. Everything else is tuning for your service's risk profile. Google's SRE practice formalizes the same idea through policy enforcement and gating changes behind code review and approvals, so a release cannot proceed on momentum alone.
The go/no-go checklist
Run this top to bottom. Every line is a hard pass/fail, not a discussion. If any required line fails and is not explicitly accepted by the owner, the answer is no-go.
- Tests green: all required automated suites pass in CI on the exact commit being shipped.
- Smoke pass: a manual run over critical paths (login, checkout, the core workflow) on a production-like build.
- Blocker count is zero: or each remaining blocker is explicitly accepted, with a named owner and a reason on the record.
- Rollback ready: a tested rollback path or a feature-flag kill switch that has actually been exercised, not assumed.
- Migrations safe: any database migration is backward-compatible or sequenced so a rollback does not corrupt data.
- Monitoring confirmed: dashboards and alerts cover the new code paths, so a regression pages someone instead of hiding.
- On-call covered: a named person owns the release window and can respond.
- Decision recorded: one accountable person writes go or no-go, with the date and the build.
Blocker versus non-blocker: the decision that does the work
The checklist only functions if "blocker" is defined before release day. Define it once, write it down, and stop relitigating it at 6pm. Three questions decide every open bug:
- Blast radius: how many users hit this, and on which path?
- Severity: how bad is the outcome — data loss and security holes sit at the top, cosmetic glitches at the bottom.
- Reversibility: can you roll back or flag it off in minutes if it surfaces in production?
A blocker breaks a critical path, corrupts data, opens a security hole, or has no safe workaround. A non-blocker is real but survivable: an edge case, a cosmetic issue, or anything with a documented workaround that can wait for a follow-up. Force every open bug into exactly one bucket. The ambiguous middle is where releases die.
| Feature | Manual checklist + tickets | BugMojo-captured blockers |
|---|---|---|
| Go/no-go checklist itself | Yes (manual) | Yes |
| Blocker arrives with a reproduction | Rarely — often one-line ticket | Steps + build + console + network + replay |
| Runtime state attached (console, network, DOM replay) | No | Yes, rrweb + logs bundled |
| MCP / AI-agent-readable blocker context | No | Yes — agent triages from captured state |
| Mature production error-monitoring (alert on spikes, fingerprints) | Use Sentry/Datadog | No — pair with a dedicated APM |
| Deep release-orchestration / Jira admin (gates, environments, approvals) | Native in Jira/release tooling | No — connect to existing tooling |
BugMojo is honest about its edges. It does not replace a production error monitor like Sentry for spike detection and fingerprinting, and it does not run your release-gate workflow the way Jira or a dedicated deployment tool does. Where it wins is the moment a blocker is found: the bug travels with a full reproduction instead of a sentence.
Change failure rate: the scoreboard for your gate
A checklist without a metric is a ritual. The metric is DORA's change failure rate: the percentage of deployments that cause a failure in production requiring immediate intervention — a hotfix, rollback, or patch. If your gate is catching the right things, this number trends down. If blockers keep slipping through, it climbs, and the climb tells you before the next incident does.
DORA now tracks stability with two metrics, not one. Change failure rate is paired with rework rate: the share of deployments that are unplanned and happen because of a production incident. The two together are a more reliable stability signal than change failure rate alone, and the broader framework has expanded to five delivery metrics. Review both after each release cycle, not just when something breaks.
Why AI tightens the gate instead of loosening it
It is tempting to assume AI assistants make releases safer by writing more tests and catching more bugs. The data says the opposite happens by default. In the 2024 DORA report, a 25% increase in AI adoption was associated with an estimated 1.5% decrease in delivery throughput and a 7.2% decrease in delivery stability. More generated code and larger change batches, with the same-sized feedback loops, push change failure rate up rather than down.
The 2025 DORA report frames this cleanly: AI's primary role is as an amplifier, magnifying an organization's existing strengths and weaknesses. A strong release gate gets stronger leverage; a weak one degrades faster because volume scales quicker than your ability to catch blockers. The fundamentals that hold the line are unglamorous and well-established: small batches and robust testing. The checklist and the blocker discipline are how you keep those fundamentals enforced when the volume goes up.
Capture each blocker with a reproduction
Here is the failure mode that wastes the go/no-go meeting: a ticket that says "checkout broken" with no steps, no environment, and no state. The next hour is spent proving the bug is real instead of deciding whether it ships. A blocker only blocks effectively if the person who has to fix it can reproduce it on the first try.
Attach a concrete reproduction to every blocker: the exact steps, the build or commit it appeared on, and the runtime state — console errors, the failing network response, and a session replay of the path that broke. When the repro travels with the bug, triage becomes a decision rather than an investigation. With BugMojo, the browser extension captures the rrweb session replay, console logs, network requests, and a screenshot in one click, and the MCP server lets an AI agent (Claude Code, Cursor) read that captured state and weigh in on go/no-go from evidence instead of a one-line summary.
# A blocker that is actually fixable in the release window
id: BLK-412
title: Checkout fails on coupon apply (returning users only)
classification: blocker # critical path + no safe workaround
build: 2026.6.5-rc3
commit: a1f9c20
repro:
steps:
- Log in as a returning user with a saved cart
- Apply coupon SPRING20 at checkout
- Click "Place order"
expected: Order confirmed, 20% applied
actual: 500 error, order not placed
state:
console: "TypeError: cannot read 'total' of undefined (cart.js:88)"
network: "POST /api/checkout -> 500"
replay: "rrweb session attached (path that failed)"
go_no_go:
decision: no-go-until-fixed
owner: payments-team
reason: "Critical path, affects all returning users with coupons"
Two cross-references make this checklist sturdier. Pair the smoke-pass step with a deeper manual QA testing checklist so critical paths are exercised the same way every release. And when a previously-working feature breaks, classify it precisely — a software regression is its own category and almost always a blocker, because something that used to work no longer does.
Frequently asked questions
Frequently asked questions
Sources
- DORA — Software delivery performance metrics (Four Keys): change failure rate defined as the ratio of deployments requiring immediate intervention; framework now has five metrics including rework rate — DORA (DevOps Research and Assessment / Google Cloud) (2025)
- Using the Four Keys to measure your DevOps performance — change failure rate = the percentage of deployments causing a failure in production — Google Cloud (2024)
- Announcing the 2024 DORA report — a 25% increase in AI adoption associated with an estimated 1.5% decrease in delivery throughput and a 7.2% decrease in delivery stability — Google Cloud / DORA (2024-10)
- DORA 2025 State of DevOps Report — AI's primary role is as an amplifier, magnifying an organization's existing strengths and weaknesses — DORA (DevOps Research and Assessment) (2025)
- Google SRE Book — Release Engineering: policy enforcement and gating changes behind code review and approvals — Google (Site Reliability Engineering) (2024)
- The Cost of Poor Software Quality in the US: A 2022 Report — $2.41T total, ~$1.52T accumulated technical debt — CISQ (Consortium for Information & Software Quality) (2022-12)
Get bug-tracking insights, weekly.
Engineering deep-dives, QA playbooks, and honest tool comparisons. No spam — unsubscribe in one click.

