We benchmark import-next/no-cycle against eslint-plugin-import/no-cycle and oxlint's native Rust port on next.js (131K stars, 14,556 source files). The two ESLint plugins agreed: 0 cycles found. oxlint disagreed: 17 cycles found.
We trusted the consensus. Then we tested our own rule on a 33-file subset of the same repo (packages/next/src/client/components/router-reducer/**). It found 5+ cycles immediately.
Same rule. Same config. Same files. Different scope. Different answers.
The bug was 60 lines deep in the cache layer — and it explains why the wider scope returned silence.
The setup that hides the bug






