From 6626f92f955840c12b60c0636e66cad991006ba0 Mon Sep 17 00:00:00 2001 From: valgulnecron <39313199+ValgulNecron@users.noreply.github.com> Date: Tue, 22 Sep 2026 01:35:33 +0200 Subject: [PATCH] docs(claude): record the ESLint 10 blocker alongside TypeScript 7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The start-of-session check covered one blocked upgrade and was named after it. A second one has the same shape, so the section now holds an entry per blocker, each deleted independently when its own wall clears. eslint 9 -> 10 (#386) cannot install: eslint-plugin-react@7.37.5 caps its eslint peer range at ^9.7, so npm ci fails at step 4 of the web job in about ten seconds, taking web e2e (mock) and the visual diff with it since each starts with the same install. The other three plugins already accept ^10, so the plugin is the sole holdout. #387 (@eslint/js 9 -> 10) is deliberately called out as NOT blocked — its web jobs pass, because the plugin's peer range constrains eslint itself rather than @eslint/js. I had assumed the two moved together and they do not, which is worth recording so the next session does not re-derive it wrongly. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01ESdYuAvpfkcZLPQ5TfDW55 Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com> --- CLAUDE.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 5dde63ab9..1bf9174d2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,15 +7,27 @@ This file provides architectural context, commands, and non-negotiable operation --- -## ⏳ Start-of-Session Check: TypeScript 7 (Delete when unblocked) +## ⏳ Start-of-Session Check: Blocked Dependency Upgrades (delete each entry when unblocked) + +Execute at the start of every session. + +### TypeScript 7 -Execute at the start of every session: ```sh npm view @typescript-eslint/parser@latest version peerDependencies.typescript npm view @typescript-eslint/parser@canary version peerDependencies.typescript ``` - **Blocked:** Peer dependency range ends `<7` (e.g., `<6.1.0`). Dependabot PR #272 is blocked at `npm ci` (`ERESOLVE`). Do not attempt workarounds, overrides, or code fixes. Do not close #272. -- **Unblocked:** Published release accepts TS 7. Fulfill tasks T055/T056 in `specs/009-remediate-security-dependabot/tasks.md`: bump `typescript` and `@typescript-eslint/*` in `web/package.json`, resolve real type errors (no `@ts-ignore`), merge #272, mark tasks `[X]`, and delete this entire section. +- **Unblocked:** Published release accepts TS 7. Fulfill tasks T055/T056 in `specs/009-remediate-security-dependabot/tasks.md`: bump `typescript` and `@typescript-eslint/*` in `web/package.json`, resolve real type errors (no `@ts-ignore`), merge #272, mark tasks `[X]`, and delete this entry. + +### ESLint 10 + +```sh +npm view eslint-plugin-react@latest version peerDependencies.eslint +``` +- **Blocked:** Peer dependency range does not accept `^10`. Dependabot PR #386 (`eslint` 9.39.5 → 10.x) is blocked at `npm ci` because `eslint-plugin-react@7.37.5` declares `peerDependencies.eslint: "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"` (no ESLint 10 support). Fails in ~10 seconds at step 4 of the `web` job before any test runs; `web e2e (mock)` and `design vs browser visual diff` jobs fail identically. The other ESLint plugins are already ready: `eslint-plugin-react-hooks@7.1.1`, `@typescript-eslint/eslint-plugin@8.69.0`, and `@typescript-eslint/parser@8.69.0` all accept `^10.0.0`. Do not attempt workarounds (`--legacy-peer-deps`, `overrides` blocks, pinning tricks). Do not close #386. + Note PR #387 (`@eslint/js` 9 → 10) is **not** blocked and its `web` jobs pass: the `eslint-plugin-react` peer range constrains `eslint` itself, not `@eslint/js`. Do not assume the two move together. +- **Unblocked:** Published `eslint-plugin-react` accepts ESLint 10. Bump `eslint` and `@eslint/js` together in `web/package.json`, resolve any real lint errors without adding `eslint-disable`, merge #386 (and #387 if still open), and delete this entry. ---