0643105611
The post-write lint runs `npx tsc --noEmit <file>` on a single .ts file with no `-p tsconfig`. tsc ignores tsconfig.json for explicit file args, so for any file in a real TS project it floods phantom diagnostics — unresolved path aliases (@/... -> TS2307) and ambient globals (Window.hermesDesktop -> TS2339) that the project config defines. The delta filter sees the same phantom errors pre- and post-edit, finds no NEW ones, and returns the misleading 'pre-existing lint errors ... the file is still broken' on a perfectly correct one-line edit — wasting the caller's turns chasing nonexistent breakage. Existing code already skips shell tsc when an LSP server claims the file, but that only fires with LSP configured+enabled (not the default), leaving the common LSP-disabled case fully exposed. Fix: when an ancestor tsconfig.json exists (local host only), skip the per-file shell tsc for .ts — its verdict carries zero signal for project files. Real diagnostics still come from the LSP tier or an explicit `tsc -p tsconfig.json`. Best-effort ancestor walk; remote/sandbox backends fall back to running the linter as before. (.tsx already returns skipped via the ext-not-in-LINTERS branch.) Tests: ancestor-tsconfig .ts -> skipped even with LSP off; standalone .ts with no ancestor tsconfig -> shell tsc still runs. 7/7 in the LSP-skip suite. Co-authored-by: Teknium <teknium1@users.noreply.github.com>