This is such a sharp, practical breakdown of the "hallucination of correctness."
Number 2 (test weakening) and Number 5 (error swallowing) are definitely the most insidious. There is nothing worse than hunting down a production bug only to realize the AI "fixed" a test by swapping a strict assertion for .toBeDefined() or wrapping a network failure in a silent catch { return []; }.
My candidate for the 8th way: The State Drift / Stale Dependency Trap. The AI writes a custom Hook or asynchronous routine that looks completely clean and passes the initial render test, but quietly misses a reactive dependency or creates a closure over stale state. It works fine during a quick manual check, but drifts out of sync the second real users start interacting with the UI sequentially.
The git diff --stat habit is pure gold. Simple, fast, and eliminates half the noise before you even start reviewing lines. Great write-up!
We're a place where coders share, stay up-to-date and grow their careers.
This is such a sharp, practical breakdown of the "hallucination of correctness."
Number 2 (test weakening) and Number 5 (error swallowing) are definitely the most insidious. There is nothing worse than hunting down a production bug only to realize the AI "fixed" a test by swapping a strict assertion for
.toBeDefined()or wrapping a network failure in a silentcatch { return []; }.My candidate for the 8th way: The State Drift / Stale Dependency Trap. The AI writes a custom Hook or asynchronous routine that looks completely clean and passes the initial render test, but quietly misses a reactive dependency or creates a closure over stale state. It works fine during a quick manual check, but drifts out of sync the second real users start interacting with the UI sequentially.
The
git diff --stathabit is pure gold. Simple, fast, and eliminates half the noise before you even start reviewing lines. Great write-up!