Shipping in the Age of AI: Green Tests Are Not a Release Decision
AI-assisted development puts more change into every release and makes it harder for humans to describe that change. Here are five questions a release decision has to answer before 'all tests passed' means anything.

TL;DR: AI-assisted development increases how much change reaches each release. Good! However, it also lowers the ability of humans to describe those changes. A release decision now has to answer five questions: what changed, where the risk sits, who verified it independently, how fast a problem would show up, and who owns the call.
For a long time, release readiness leaned on an assumption nobody had to state: the people approving a change understood it. Someone wrote the code, someone reviewed it, and that shared understanding carried into the release meeting for free. A QA could ask “what’s in this build?” and get an answer that was roughly complete.
AI-assisted development weakens that link. Code arrives faster and diffs get larger. A change that looks like a small ticket can touch files nobody mentioned. The person who approved it may have read it carefully, or may have skimmed a diff generated in seconds (be honest, everyone skims!). The result is more change per release and less certainty about its edges. Testing hasn’t become less important. What has changed is how much weight a green test run can carry on its own.
Five questions a release has to answer
| Question | What gets harder with AI | What to do |
|---|---|---|
| What actually changed? | Diffs often reach beyond the ticket: refactors, renamed modules, dependency bumps | Define scope from the diff, not only from the ticket list. Review what changed outside the stated feature areas |
| Where does the risk sit? | Speed flattens risk. A payment change and a copy change arrive looking equally routine | Tier every change. Money, auth, personal data, and platform-specific code get named and get deeper testing |
| Who verified it independently? | Tests generated alongside the code can share its wrong assumptions | For high-risk paths, check the expected result against the requirement, not against what the code does |
| How fast would we know if it’s wrong? | You cannot pre-test everything, and the volume of change makes that gap bigger | Set up monitoring, staged rollout, and a rollback path before submission, not after the first incident |
| Who owns the go/no-go? | More contributors, more diffuse ownership | Name one decision owner. Record which known issues were accepted and by whom |
(1) What changed: scope from the diff
A ticket will show intent, a diff will describe what happened. But when the code is produced at supersonic speed, the gap between the intent and the actual work product grows.
Action item: To avoid surprises, we should compare the two: anything in the diff that no ticket explains is a question for the author, whether it was a human or an agent.
(2) Where the risk sits: tier the changes
The mistake in fast-moving releases is treating every change as equal because they all passed the same pipeline.
Action item: Sort changes into tiers by consequence: what happens to a user, their money, or their data if this is wrong. High-tier changes get named in the release notes for the team, explicit test coverage, and a reviewer who can explain the change without opening the code.
(3) Independent verification: don’t let the code grade itself
If the same tool produces the implementation and the tests, both can inherit the same misreading of the requirement. The tests pass, and the behavior is still wrong.
Action item: For anything high-risk, make sure at least one check traces back to the requirement itself: a human-written expected result, or a human-reviewed one.
(4) Observability: shrink the cost of being wrong
Observability means being able to tell what your app is doing in production from the data it sends back: crashes, errors, performance, and key user actions.
No release process catches everything. Faster change makes that more true, so the second half of readiness is how quickly a problem becomes visible and reversible.
Action item: Before submitting a build, know which metrics you will watch (crash rate, login failures, payment errors), what threshold triggers action, and what the rollback or kill-switch path is.
(5) Ownership: one name on the decision
Release decisions drift toward “everyone assumed someone checked.” With more people and tools contributing to a build, that drift speeds up.
Action item: Pick one owner for the go/no-go, and write down the outcome (go, no-go, go with conditions) along with the known issues accepted for this release.
And more…
When pressure to ship earlier shows up
Faster development brings a predictable request: if the code is done early, why wait? The useful response is not a calendar argument. If scope is clear, risk is tiered, the high-risk paths are independently checked, monitoring is ready, and someone owns the call, shipping early is a reasonable decision.
What stays the same
Device and OS coverage, build traceability, store metadata and compliance checks, and release notes still matter exactly as much as before. Nothing here replaces them. The five questions sit on top, because they are the parts most exposed when the pace of change goes up.
Bottom line
A release is ready when the team can say what changed, which parts are risky, how the risky parts were checked independently, how quickly a failure would be seen, and who made the call. “All tests passed” is one input to that answer. It was never the whole answer, and AI-assisted development makes that easier to forget.
When to skip this
For a low-risk product with strong monitoring and instant rollback, such as a small internal tool, the full set is more process than the situation needs. The questions earn their cost where a bad release is expensive to detect or hard to undo: money, identity, personal data, and anything shipped through a store review where a fix takes days to reach users.
Curious about technology, product thinking, and anything worth reading.
Continue reading

How to structure test cases so AI can actually automate them
Good communication skills are a must even if you're talking to AI. Especially then! AI tools love to guess when something's unclear, so here's how to work with them effectively when using agents for automation testing.

I passed the ISTQB CT-MAT exam — here are two practice tests to help you prepare
Two free practice exams for the ISTQB Mobile Application Testing (CT-MAT) certification, built from the public syllabus and checked question-by-question for accuracy.

Shifting Baseline Syndrome: Why we treat “new” features as if they were always available
Fingerprint unlock, tap-to-pay, dark mode, Face ID. These features feel like they've always existed, but they're all under fifteen years old. A look at why we forget how recent "normal" really is, and how these features look stacked against the world events happening at the same time.