# Regression **[Regression](https://en.wikipedia.org/wiki/Software_regression)** is a bug introduced by a change that fixed something else or violated a hidden assumption. The feature previously worked, so something broke it. Without protection, the same bug can be reintroduced months later by someone unaware of the original fix. The cost accumulates: each re-introduction requires re-diagnosis and re-fixing. A regression test reproduces a known bug, fails until the bug is fixed, then passes and is kept permanently. When run in a [[swe:ci-cd]] pipeline, these tests catch regressions immediately. The key is treating the test suite as sacred: keep it green and treat any failure as urgent, otherwise you lose signal about what actually broke. This example shows a regression test from a real bug: users with special characters in passwords couldn't log in, now permanently guarded by a test. ```py # Regression test: known bug from 3 months ago def test_login_with_special_characters(): """ Bug: Users with @ in password couldn't log in. Fixed in commit abc123, but reintroduced in commit xyz789. This test prevents it from happening again. """ user = create_user(password="pass@word!") assert login(user.email, "pass@word!") == True ```