Repository navigation
build(tsconfig): split the shared base out of the root tsconfig (#26092 part 1) - #26203
Conversation
Packages, apps and examples now extend tsconfig.base.json; the root tsconfig.json is the type-check program for scripts/ and the top-level configs and declares types ["node"]. Test-layer configs extend tsconfig.test.base.json for the vitest module semantics. Every package config's effective configuration (tsc --showConfig, file lists included) is byte-identical before and after. Also deletes the three empty test-typecheck-debt.json ledgers and the graduation history inside the empty TEST_DEBT object, and rewrites the root DEBT note to the composition measured today (26, unchanged). Claude-Session: https://claude.ai/code/session_01EaorEqkvnJBed5uX9BjSUG Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EaorEqkvnJBed5uX9BjSUG Co-authored-by: Claude <noreply@anthropic.com>
Every package now extends tsconfig.base.json (and test configs tsconfig.test.base.json), so turbo must invalidate on them the way it did on the root tsconfig.json; ci.yml's core filter lists them verbatim, as check-ci-filter-parity requires. Claude-Session: https://claude.ai/code/session_01EaorEqkvnJBed5uX9BjSUG Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 173 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
席位核对 · ACCEPT · devx seat 2 · 2026-10-26T15:27ZSeat
Generated by Claude Code |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40361692247 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
Requested by Steve · project thread
Part of #26092 (PR 1 of 2: the tsconfig half; the vitest preset follows as PR 2).
Clause-②: no
Metadata-protocol: none
What changes
tsconfig.base.json(new) holds the compiler options the roottsconfig.jsonused to carry, unchanged. The 72 package/app/example configs that extended the root now extend it.tsconfig.jsonis now only the type-check program forscripts/and the top-level configs: it extends the base, addstypes: ["node"], keeps itsexclude.tsconfig.test.base.json(new) holds the vitest module semantics (noEmit,module: esnext,moduleResolution: bundler,lib: ["ES2022"]). 36 of the 42tsconfig.test.jsonfiles now spell"extends": ["./tsconfig.json", "REL/tsconfig.test.base.json"]and keep only what differs (DOMinlib,types). The other 6 do not re-set module semantics this way and are untouched.NodeNextidentically to the base (packages/adapters/hono,packages/qa/http-conformance) drop the duplicate; the sevenES2020/bundlerconfigs keep it with a one-line reason (four drivers: no"type": "module", so NodeNext compiles their sources as CommonJS and refusesimport.meta, TS1470 measured;embedder-openai/knowledge-memory/knowledge-ragflow: tsup-bundled, no"type": "module").globalDependenciesgains both bases, so a change to either invalidates every cached build the way a change to the root did;.github/workflows/ci.ymlcore:filter lists both verbatim, whichcheck-ci-filter-parityrequires (measured: FAIL naming both files without these two lines).test-typecheck-debt.jsonfiles (packages/rest,packages/client,packages/plugins/knowledge-ragflow) are deleted (check-test-typecheck.mtsreads a missing ledger as empty); the graduation history inside the emptyTEST_DEBTobject is deleted, keeping the closed-ledger rule.No semantic change, measured
tsc --showConfig -p FILEfor every non-uitsconfig*.json(143 files), before (main 95294be) and after: 142 byte-identical, file lists included. The root differs by exactlytypes: ["node"]. Strictness is not loosened anywhere.The card's premise on the root DEBT entry does not hold
Root program errors,
tsc --noEmit -p tsconfig.jsonwith the import closure built: 26 before, 26 aftertypes: ["node"]. The TS2591/TS2584 pile the entry's note blamed on the missing Node types was already gone. What stands:scripts/analytics-reconcileimports@objectstack/*and example sources the root program cannot resolve (TS2307 x17, plus TS7006 x7 they cascade into),Object.hasOwnunder lib ES2020 inscripts/check-test-typecheck.mts(TS2550), and an unused local inexamples/app-showcasepulled in by import (TS6133). So the@objectstack/spec-monorepoDEBT entry stays at 26 and its note is rewritten to that composition (the stalecompositionAt: 80is dropped). Graduating it also needs atypecheck:rootscript and its step in.github/workflows/lint.yml: separate work, not in this PR. The card's acceptance line about deleting the entry is not met by design.Landing
Tier H:
.github/workflows/ci.ymlis a governed surface, so this needs the maintainer's approval. The maintainer chose this shape (one PR carrying the two filter lines) on the thread decision card. Rootci.ymlis also under a short hold for other in-flight work; land after that clears.Verification (head 07de412)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 117 commands on this head; all 117 ran, each exit captured before any pipe: 117 exit 0.--ranreconciliation: 117 derived, 117 run, 0 NOT-MEASURED, 0 UNRUN.git fetch --unshallowand a build of every non-ui package they ran and exited 0, and they are in the 117 above.node scripts/check-ci-filter-parity.mjs: FAIL without the two ci.yml lines, exit 0 with them.turbo run typecheck --forceover rest, client, knowledge-ragflow (the three deleted ledgers, whosetypecheckrunscheck:test-typecheck), core, driver-sql, hono, http-conformance, spec: 49/49 tasks successful (before the main merge; the merge touched no non-ui tsconfig).tsc -bwas not used for the before/after count: the root config has nonoEmitoroutDir, sotsc -bwould emit next toscripts/; the count istsc --noEmit -p, which is whatcheck:type-check-debtmeasures.skip-changeset).Acceptance notes
os create --in-repo(rootTsconfigExtendsinpackages/cli/src/commands/create.ts) still points new in-repo scaffolds at the roottsconfig.json, which is now the scripts program, so a new scaffold would inherittypes: ["node"]and the rootexclude. Not changed here (outside this card's file surface); the CLI tests pin the root path.packages/drivers/driver-memory/tsconfig.jsonsetsnoUnusedLocals: false, a pre-existing loosening against the base; untouched.embedder-openai,knowledge-memory,knowledge-ragflowtype-check with 0 errors under NodeNext, so theirbundlerre-set could be dropped later; kept here to keep the change semantics-free.packages/restledger's_notecarried a re-derivation grep forany-typed response fixtures; it is in git history.Generated by Claude Code