Why generated code changed the problem
Code written by an AI assistant fails differently from code written by a tired human. It is idiomatic, consistently formatted, plausibly named and lint-clean, because those are the properties the training data rewarded. What it is not reliably is correct.
The mistakes that survive are semantic: a discount applied before tax instead of after, an authorisation check that validates the wrong identifier, a retry loop with no ceiling, a token that reaches a log line. None of those violate a rule. All of them look like working code in review, which is exactly the problem, because they also look like working code to the person who accepted the suggestion.
A rule engine cannot reach any of it, because the shape of the mistake is different every time it happens. That is the gap AI review is actually for.