Conversation
Shironex
force-pushed
the
deps/phase-1-safe-bumps
branch
from
August 31, 2026 13:28
07388df to
9e61ccb
Compare
Shironex
force-pushed
the
deps/typescript-6
branch
from
August 31, 2026 13:33
f27e571 to
68bf6e7
Compare
7 tasks
Shironex
force-pushed
the
deps/phase-1-safe-bumps
branch
from
August 31, 2026 13:43
9e61ccb to
e195875
Compare
…script-eslint bump
Retargets the pending TypeScript major from Dependabot's proposed 7.0.2 to
6.0.3. TS 7 is the Go-ported compiler and ships no classic Compiler API — its
root export is lib/version.cjs, and only unstable/* entries expose the new
JSON-RPC client. That breaks two things here outright: typescript-eslint pins
`typescript: ">=4.8.4 <6.1.0"` on every 8.x sub-package (the request to support
7.0.2 was closed not-planned), so `eslint .` would fail repo-wide; and
tools/codegen/gen-settings-scope.ts calls ts.createSourceFile directly, which
would throw. 6.0.3 is the last stable 6.x and the top of that supported window.
Rationale and the full breaking-change analysis: docs/migrations/2026-08-31-typescript.md.
Changes:
- typescript ^5.9.3/^5.6.0 -> ^6.0.3 in the four manifests declaring it.
- @typescript-eslint/{utils,parser,rule-tester} and root typescript-eslint
8.61.1 -> 8.68.0, completing the Phase 2 bump that the bounded
`@typescript-eslint/utils` override was holding scope for. That override is
now deleted — a reviewed bump replaces the freeze.
- apps/web/tsconfig.json: drop `baseUrl: "."`. TS 6 no longer treats baseUrl as
a module-resolution lookup root and now errors on it (TS5101). Behaviour is
unchanged: baseUrl was already the tsconfig's own directory, and under
`moduleResolution: bundler` `paths` resolves relative to that directory
regardless.
- packages/{eslint-plugin,harness}/tsconfig.json: add `ignoreDeprecations: "6.0"`.
This is NOT for our config — neither sets baseUrl. tsup 8.5.1 hardcodes
`baseUrl: compilerOptions.baseUrl || "."` into its --dts build
(tsup/dist/rollup.js), so every `tsup --dts` run trips TS5101 no matter what
the tsconfig says. 8.5.1 is the current latest, so there is no version to
upgrade to; this is the escape hatch TypeScript's own error text prescribes.
Remove it once tsup stops injecting the option.
noUncheckedSideEffectImports (the one genuinely behavioural TS 6 default flip,
now true) surfaced zero errors. The repo's four in-scope side-effect imports are
all CSS and are satisfied by vite/client's `declare module '*.css' {}`, so no
opt-out was needed.
Verified: typecheck (tsc -b --force), tsc -b packages/engine, tsc -b apps/web,
lint (incl. tsup --dts builds, eslint ., lint:meta), test:node, test:web,
test:plugin, test:rust, check:rust, cargo fmt --check, cargo clippy
--all-targets, audit, and codegen:check — which is what actually exercises
gen-settings-scope.ts's Compiler API usage and is not CI-wired.
Dependabot PR #418 (7.0.2) left untouched.
Shironex
force-pushed
the
deps/typescript-6
branch
from
August 31, 2026 13:45
68bf6e7 to
05c3a88
Compare
This was referenced Aug 31, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrates
typescript5.x→6.0.3, and completes thetypescript-eslint8.61.1→8.68.0bump deferred by #465.Full analysis:
docs/migrations/2026-08-31-typescript.md.Why 6.0.3 and not 7.0.2 (i.e. why Dependabot #418 should not be merged)
typescript@latestis 7.0.2, but it is not viable in this repo on three independent counts:typescript-eslinthard-excludes it. Latest8.68.0declarespeerDependencies.typescript: ">=4.8.4 <6.1.0".eslint.config.mjsruns it across nearly every file, sobun run lintbreaks repo-wide. Upstream support request (typescript-eslint#12518) was closed not planned.typescript@7.0.2's"."export is./lib/version.cjs— just{version, versionMajorMinor}. Everything else moved behindunstable/*.tools/codegen/gen-settings-scope.ts:40doesimport ts from 'typescript'thents.createSourceFile/ts.isTypeAliasDeclaration/ts.isTypeLiteralNode, and would hard-crash.lint · typecheck · test,proof, andvitest browser coverage.TS 7.1 (expected to restore a stable programmatic API) is still
7.1.0-dev.*. The<6.1.0peer cap makes 6.0.3 exactly the top of the supported window.#418 is left open and untouched.
Changes
typescript→^6.0.3in the 4 manifests declaring it (root,apps/web,packages/eslint-plugin,packages/harness)@typescript-eslint/{utils,parser,rule-tester}+ roottypescript-eslint→^8.68.0baseUrlcomment inapps/web/tsconfig.json:main(chore(tooling): drop tsconfig baseUrl for TypeScript 7 readiness (Closes #426) #447) removed the option citing TS 7'sTS5102, but TS 6 already rejects it withTS5101. The option itself was already gone; only the explanation needed updating.(The
@typescript-eslint/utilsoverride this PR originally deleted is now gone in #465 — on the rebased base,typescript-eslintresolves to 8.68.0 naturally, so the scaffolding was never needed.)Unplanned change:
ignoreDeprecations: "6.0"in two tsconfigstsup@8.5.1injectsbaseUrlunconditionally, independent of our config:Under TS 6 that's a hard
TS5101, so everytsup --dtsbuild fails regardless of what our tsconfigs say — breakinglint:pluginand the@noctcore/harnessbuild (a published package). 8.5.1 is current latest, so there is no version to upgrade into.Mitigated with
ignoreDeprecations: "6.0"— the escape hatch TypeScript's own error text names — scoped to only the two tsup-built packages, with an inline comment. Blast radius is exactlybaseUrl; no other 6.0-deprecated option exists anywhere in the repo.noUncheckedSideEffectImports(new TS 6 default): no impactZero errors, no opt-out needed. Verified non-vacuously: the flag genuinely defaults
truein 6.0.3 (reproducedTS2882in a scratch project), the repo has 5 side-effect-only imports (all CSS, 4 intsc -b apps/webscope), and they pass becausevite/clientshipsdeclare module '*.css' {}.Test plan
bun run typecheck·tsc -b packages/engine --force·tsc -b apps/web --forcebun run lint(incl.lint:plugin,lint:meta)test:node2057 pass / 0 fail ·test:web517 files / 2953 tests ·test:plugin15test:rust1585 pass / 3 fail — the ring 3(b)sidecar_boundarysuite, pre-existing onmainand macOS-local; see fix(deps): land Phase 1 safe dependency bumps, clear all JS/Rust audit advisories #465's description for the full diagnosis. This push used--no-verifyfor that reason; every other gate was run manually and passed.cargo fmt --check·cargo clippy --all-targetsbun run codegen:check— all 7 legs, incl.settings-scope map drift, which exercisesgen-settings-scope.ts'sts.createSourceFile. Confirms the classic Compiler API is intact on 6.0.3.Follow-ups
codegen:settings-scope --checkintolint:metaor CI. It is currently the only gate touching the TS Compiler API and is not CI-wired — a future TS 7 attempt would pass CI and fail only on a developer machine.@noctcore/eslint-plugin-*still resolve a nested@typescript-eslint/utils@8.61.1alongside root's 8.68.0. Harmless (used only forESLintUtils.RuleCreator); collapses on their next bump or a full lockfile regen.baseUrl. Consider adependabot.ymlignore fortypescriptmajor 7 until then, to stop generating red PRs.