When a program do not behave as expected, we call this a bug. Using TDD forces to express all expected behavior by tests. So all behavior is perfectly known and proven. If TDD is used, then there is no bug in our code.

We may have new expectations. A client may ask for a new semantic, a new rendering. It's not a bug. It has not been expressed before, we have to implement a new behavior. We will do this by applying TDD. Creating new tests, implementing code to make tests succeed may drives to have existing tests that fail. We have to check carefully if we broke the expected behavior, or if the existing test that fail is still valid. Sometime, adding new features drives to change existing features, and so drives to change tests.

On the OXiane Course project, we do not have any ticket that was an error, after investigation. We have tickets where the client says "it doesn't work as I expect". But it works as it was expected in the beginning. And these tickets have conduct us to change some parts of syntax, mainly on image sizing.