Opus 5 leaves stale references after its own edits, causing repeated review cycles
Working a small bugfix (2 files, ~10 lines of production code) over one session, the model required five review rounds. Only the first surfaced a real defect. Rounds two to five found debris from the model's own prior edits:
- dropped a test but left its fixture, five constants, an unused import and the comment justifying it
- narrowed a
catchclause but left the assertion comment describing the old, wider behaviour - corrected a claim in a code comment but left the same claim in two other documents
- reverted a change but left a paragraph contradicting the next paragraph
Two behaviours drove it.
First, the model writes a high volume of explanatory prose into code comments, docs and PR descriptions, asserting mechanisms it has not verified. Three separate review findings, including the only blocker, were unverified claims of its own rather than code defects. In one case a 19-line comment sat above 15 lines of code. Reducing what it writes would have removed most of the findings outright.
Second, it does not sweep for references to what it just changed, so each fix generates the next finding. Change one end, leave every artefact that describes the old state.
It also wrote tests covering only the case it had just implemented, never enumerating the scenario set (permitted caller, denied caller, absent principal, fixture reuse across runs). A fixture limitation that was discoverable in minutes at authoring time surfaced on the fifth review instead.
Net effect: a change that needed one derivation up front consumed most of a working day, largely in review cycles the model created for itself.
Environment: Claude Code CLI on Windows 11, model Opus 5 (1M context), .NET Framework / legacy C# codebase.