From 71b88f4fa82b7563ffc564754a27ea62acc01d9b Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 31 Jul 2026 04:58:03 +0000 Subject: [PATCH 1/2] fix(dx): per-package lint scripts stop existing where they can only mislead (#4276) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `pnpm --filter @objectstack/verify lint` (package-local `eslint src`) failed on a clean HEAD with 7x "Definition for rule '@typescript-eslint/no-explicit-any' was not found": the standalone run resolves the root flat config, which registers only the TS parser — never the @typescript-eslint plugin — and, unlike the root gate (`eslint . --no-inline-config`), honors the orphaned eslint-disable directives in src, so each one references a rule that does not exist. cli and lint carried the same script and passed only because their src has no such directives yet — same divergence, one comment away from the same red. No turbo lint task or CI job ever ran these scripts; most packages never had one. Remove all three and lint only from the root, matching the gate exactly. The root config now documents the decision and the scoped-run recipe (`pnpm exec eslint --no-inline-config `). Closes #4276 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0195He4CTy2BvCVMDTJ6NkVY --- eslint.config.mjs | 7 +++++++ packages/cli/package.json | 3 +-- packages/lint/package.json | 1 - packages/verify/package.json | 1 - 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 8740323df1..e0ab1292c6 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -18,6 +18,13 @@ import tsParser from '@typescript-eslint/parser'; // import guard), and the flag ignores them so the guard runs clean. The only // active rule (no-restricted-imports) should never need a local opt-out — it // prevents a ~1.2GB RSS regression. +// +// Lint ONLY from the root. Per-package `lint` scripts (`eslint src`) were +// removed in #4276: a standalone run resolves this same config but honors the +// inline directives `--no-inline-config` exists to ignore, so it fails on +// rules this config never registers ("Definition for rule … was not found"). +// Don't add such a script back — scope a local run from the root instead: +// `pnpm exec eslint --no-inline-config packages/verify/src`. const SUBPATH_NAMES = [ 'Data', 'UI', 'System', 'AI', 'API', 'Automation', diff --git a/packages/cli/package.json b/packages/cli/package.json index 7675ceaf00..5bec4a9a13 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -11,8 +11,7 @@ "scripts": { "build": "if [ -n \"$OS_SKIP_DTS\" ]; then tsc -p tsconfig.build.json --noCheck --declaration false --declarationMap false; else tsc -p tsconfig.build.json; fi", "dev": "tsc -p tsconfig.build.json --watch", - "test": "vitest run", - "lint": "eslint src" + "test": "vitest run" }, "keywords": [ "objectstack", diff --git a/packages/lint/package.json b/packages/lint/package.json index 48e967f4e4..0a7f1843bd 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -16,7 +16,6 @@ "scripts": { "build": "tsup --config ../../tsup.config.ts", "dev": "tsc -w", - "lint": "eslint src", "test": "vitest run" }, "dependencies": { diff --git a/packages/verify/package.json b/packages/verify/package.json index 6f44df9025..ba2c2789f8 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -16,7 +16,6 @@ "scripts": { "build": "tsup --config ../../tsup.config.ts", "dev": "tsc -w", - "lint": "eslint src", "test": "vitest run" }, "dependencies": { From 6183d6acb57584bb8d3e675ccbbf3f69aa1e760e Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 31 Jul 2026 05:00:04 +0000 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20empty=20changeset=20=E2=80=94=20de?= =?UTF-8?q?v-script=20removal=20releases=20nothing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0195He4CTy2BvCVMDTJ6NkVY --- .changeset/drop-per-package-lint-scripts.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .changeset/drop-per-package-lint-scripts.md diff --git a/.changeset/drop-per-package-lint-scripts.md b/.changeset/drop-per-package-lint-scripts.md new file mode 100644 index 0000000000..189d06d9ea --- /dev/null +++ b/.changeset/drop-per-package-lint-scripts.md @@ -0,0 +1,4 @@ +--- +--- + +fix(dx): remove the per-package `lint` scripts (`eslint src`) from `@objectstack/verify`, `@objectstack/cli` and `@objectstack/lint` (#4276). A standalone run resolves the root flat config but honors the inline directives the root gate's `--no-inline-config` exists to ignore, so it fails on rules the config never registers — verify was red on a clean HEAD. Lint only from the root; the scoped recipe is documented in `eslint.config.mjs`. Dev scripts only; releases nothing.