diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 1493e88f..58950817 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -544,27 +544,23 @@ export default tseslint.config( // the compiler SKIPS, silently — `panicThreshold` is "none" and there is no logger, so a lint // error is the only place the skip is said out loud. `todo` is the compiler's "cannot lower // this shape yet" (E32 S4 rewrote all 31 try statements it found); the rest had 0 hits when - // switched on. Most are tripwires, but three cannot report anything under - // eslint-plugin-react-hooks 7.1.1 (E32 review, read in its source and probed): - // `exhaustive-effect-dependencies` (its validation is compiled off — a missing effect dependency - // is reported by the classic `exhaustive-deps` only), `memoized-effect-dependencies` (nothing - // emits its category) and `rule-suppression` (lint mode hands it no suppression rules, so an - // inline disable is never named). They stay on for the plugin version that wires them up; a - // function the compiler skips over a suppression is caught by the coverage ratchet below. + // switched on, and are tripwires. Three more exist but cannot report anything under + // eslint-plugin-react-hooks 7.1.1 (E32 review, read in its source and probed), so they are not + // listed: `exhaustive-effect-dependencies` (its validation is compiled off — the classic + // `exhaustive-deps` reports a missing effect dependency), `memoized-effect-dependencies` (nothing + // emits its category) and `rule-suppression` (lint mode hands it no suppression rules). A + // function the compiler skips over a suppression is caught by the coverage contract below. // `todo` does NOT see every such shape — a conditional, a loop // or an optional call inside a try skips the function with no lint hit at all — so the full // per-function picture is components/compilerCoverage.contract.test.ts. "react-hooks/todo": "error", "react-hooks/memo-dependencies": "error", - "react-hooks/rule-suppression": "error", "react-hooks/invariant": "error", "react-hooks/syntax": "error", "react-hooks/void-use-memo": "error", "react-hooks/component-hook-factories": "error", "react-hooks/capitalized-calls": "error", "react-hooks/hooks": "error", - "react-hooks/memoized-effect-dependencies": "error", - "react-hooks/exhaustive-effect-dependencies": "error", "react-hooks/no-deriving-state-in-effects": "error", // eslint-plugin-react-hooks 7's `recommended` is no longer two rules — it carries the whole // React Compiler rule set (E27 S1). On this codebase that landed 283 findings. 66 were fixed or diff --git a/frontend/src/lib/gates.snapshot.json b/frontend/src/lib/gates.snapshot.json index 99fe32f1..4d2419bd 100644 --- a/frontend/src/lib/gates.snapshot.json +++ b/frontend/src/lib/gates.snapshot.json @@ -92,7 +92,6 @@ "react-hooks/config", "react-hooks/error-boundaries", "react-hooks/exhaustive-deps", - "react-hooks/exhaustive-effect-dependencies", "react-hooks/gating", "react-hooks/globals", "react-hooks/hooks", @@ -100,12 +99,10 @@ "react-hooks/incompatible-library", "react-hooks/invariant", "react-hooks/memo-dependencies", - "react-hooks/memoized-effect-dependencies", "react-hooks/no-deriving-state-in-effects", "react-hooks/preserve-manual-memoization", "react-hooks/purity", "react-hooks/refs", - "react-hooks/rule-suppression", "react-hooks/rules-of-hooks", "react-hooks/set-state-in-effect", "react-hooks/set-state-in-render", @@ -185,7 +182,6 @@ "react-hooks/config", "react-hooks/error-boundaries", "react-hooks/exhaustive-deps", - "react-hooks/exhaustive-effect-dependencies", "react-hooks/gating", "react-hooks/globals", "react-hooks/hooks", @@ -193,12 +189,10 @@ "react-hooks/incompatible-library", "react-hooks/invariant", "react-hooks/memo-dependencies", - "react-hooks/memoized-effect-dependencies", "react-hooks/no-deriving-state-in-effects", "react-hooks/preserve-manual-memoization", "react-hooks/purity", "react-hooks/refs", - "react-hooks/rule-suppression", "react-hooks/rules-of-hooks", "react-hooks/set-state-in-effect", "react-hooks/set-state-in-render", @@ -961,7 +955,6 @@ "react-hooks/config": [2], "react-hooks/error-boundaries": [2], "react-hooks/exhaustive-deps": [1], - "react-hooks/exhaustive-effect-dependencies": [2], "react-hooks/gating": [2], "react-hooks/globals": [2], "react-hooks/hooks": [2], @@ -969,12 +962,10 @@ "react-hooks/incompatible-library": [1], "react-hooks/invariant": [2], "react-hooks/memo-dependencies": [2], - "react-hooks/memoized-effect-dependencies": [2], "react-hooks/no-deriving-state-in-effects": [2], "react-hooks/preserve-manual-memoization": [2], "react-hooks/purity": [2], "react-hooks/refs": [2], - "react-hooks/rule-suppression": [2], "react-hooks/rules-of-hooks": [2], "react-hooks/set-state-in-effect": [2], "react-hooks/set-state-in-render": [2], @@ -1203,7 +1194,6 @@ "react-hooks/config", "react-hooks/error-boundaries", "react-hooks/exhaustive-deps", - "react-hooks/exhaustive-effect-dependencies", "react-hooks/gating", "react-hooks/globals", "react-hooks/hooks", @@ -1211,12 +1201,10 @@ "react-hooks/incompatible-library", "react-hooks/invariant", "react-hooks/memo-dependencies", - "react-hooks/memoized-effect-dependencies", "react-hooks/no-deriving-state-in-effects", "react-hooks/preserve-manual-memoization", "react-hooks/purity", "react-hooks/refs", - "react-hooks/rule-suppression", "react-hooks/rules-of-hooks", "react-hooks/set-state-in-effect", "react-hooks/set-state-in-render",