Every team eventually builds the same mental shortcut: green pipeline means it's safe to ship. Tests passed, the build compiled, the checks are all checkmarks. Merge, deploy, move on.

That shortcut is wrong more often than most postmortems admit, and it's wrong in a specific, repeatable way: CI/CD pipelines are very good at verifying that code does what it's supposed to do, and almost silent about whether the environment it's about to land in still matches the one it was tested against.

Three places this gap actually bites, in order of how often I've seen each one cause a real incident.

1. The test suite passed against a database that no longer looks like production

Migrations are the classic case. A pipeline runs unit and integration tests against a freshly-migrated test database, everything's green, and the deploy goes out. What the pipeline didn't check: whether that migration is actually safe to run against a production table with real row counts, real lock contention, and real traffic hitting it mid-migration.