Repository navigation
Commit ea89df3
<!-- claude-projects-attribution: {"github_login":"os-steve"} -->
_Requested by **Steve** · [project
thread](https://claude.ai/code/project/chan_01FdL1XeUyvVNxLreh3F4Qi9?thread=cmsg_01FdL1XeUyvVNxLreh3F4Qi9LfZ5QdBw85EmeKfVNFm1YF)_
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 root
`tsconfig.json` used to carry, unchanged. The 72 package/app/example
configs that extended the root now extend it.
- **Root `tsconfig.json`** is now only the type-check program for
`scripts/` and the top-level configs: it extends the base, adds `types:
["node"]`, keeps its `exclude`.
- **`tsconfig.test.base.json`** (new) holds the vitest module semantics
(`noEmit`, `module: esnext`, `moduleResolution: bundler`, `lib:
["ES2022"]`). 36 of the 42 `tsconfig.test.json` files now spell
`"extends": ["./tsconfig.json", "REL/tsconfig.test.base.json"]` and keep
only what differs (`DOM` in `lib`, `types`). The other 6 do not re-set
module semantics this way and are untouched.
- **Module re-sets:** the two configs that re-set `NodeNext` identically
to the base (`packages/adapters/hono`, `packages/qa/http-conformance`)
drop the duplicate; the seven `ES2020`/`bundler` configs keep it with a
one-line reason (four drivers: no `"type": "module"`, so NodeNext
compiles their sources as CommonJS and refuses `import.meta`, TS1470
measured; `embedder-openai` / `knowledge-memory` / `knowledge-ragflow`:
tsup-bundled, no `"type": "module"`).
- **turbo.json** `globalDependencies` gains both bases, so a change to
either invalidates every cached build the way a change to the root did;
**`.github/workflows/ci.yml`** `core:` filter lists both verbatim, which
`check-ci-filter-parity` requires (measured: FAIL naming both files
without these two lines).
- **Ledgers:** the three empty `test-typecheck-debt.json` files
(`packages/rest`, `packages/client`,
`packages/plugins/knowledge-ragflow`) are deleted
(`check-test-typecheck.mts` reads a missing ledger as empty); the
graduation history inside the empty `TEST_DEBT` object is deleted,
keeping the closed-ledger rule.
- **Comments:** 63 mentions of "the root config" across 53 tsconfig
comments now say "the base config".
## No semantic change, measured
`tsc --showConfig -p FILE` for every non-ui `tsconfig*.json` (143
files), before (main 95294be) and after: **142 byte-identical**, file
lists included. The root differs by exactly `types: ["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.json` with the import
closure built: **26 before, 26 after** `types: ["node"]`. The
TS2591/TS2584 pile the entry's note blamed on the missing Node types was
already gone. What stands: `scripts/analytics-reconcile` imports
`@objectstack/*` and example sources the root program cannot resolve
(TS2307 x17, plus TS7006 x7 they cascade into), `Object.hasOwn` under
lib ES2020 in `scripts/check-test-typecheck.mts` (TS2550), and an unused
local in `examples/app-showcase` pulled in by import (TS6133). So the
`@objectstack/spec-monorepo` DEBT entry stays at 26 and its note is
rewritten to that composition (the stale `compositionAt: 80` is
dropped). Graduating it also needs a `typecheck:root` script 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.yml` is 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. Root
`ci.yml` is 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/objectstack` derived **117** commands on this head; all
117 ran, each exit captured before any pipe: **117 exit 0**. `--ran`
reconciliation: 117 derived, 117 run, 0 NOT-MEASURED, 0 UNRUN.
- Earlier on this branch five of them first refused on prerequisites
(exit 2/3: shallow clone, unbuilt dists); after `git fetch --unshallow`
and 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 --force` over rest, client, knowledge-ragflow
(the three deleted ledgers, whose `typecheck` runs
`check:test-typecheck`), core, driver-sql, hono, http-conformance, spec:
49/49 tasks successful (before the main merge; the merge touched no
non-ui tsconfig).
- Effective-config diff: see above. `tsc -b` was not used for the
before/after count: the root config has no `noEmit` or `outDir`, so `tsc
-b` would emit next to `scripts/`; the count is `tsc --noEmit -p`, which
is what `check:type-check-debt` measures.
- Changed lines: well under the 3000 human-merge threshold. No
changeset: no published package ships a tsconfig, and every package's
effective compiler configuration is unchanged (`skip-changeset`).
## Acceptance notes
- `os create --in-repo` (`rootTsconfigExtends` in
`packages/cli/src/commands/create.ts`) still points new in-repo
scaffolds at the root `tsconfig.json`, which is now the scripts program,
so a new scaffold would inherit `types: ["node"]` and the root
`exclude`. Not changed here (outside this card's file surface); the CLI
tests pin the root path.
- `packages/drivers/driver-memory/tsconfig.json` sets `noUnusedLocals:
false`, a pre-existing loosening against the base; untouched.
- `embedder-openai`, `knowledge-memory`, `knowledge-ragflow` type-check
with 0 errors under NodeNext, so their `bundler` re-set could be dropped
later; kept here to keep the change semantics-free.
- The deleted `packages/rest` ledger's `_note` carried a re-derivation
grep for `any`-typed response fixtures; it is in git history.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01EaorEqkvnJBed5uX9BjSUG)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent f2e7083 commit ea89df3
138 files changed
Lines changed: 254 additions & 632 deletions
File tree
- .github/workflows
- examples/embed-objectql
- packages
- adapters/hono
- apps
- account
- setup
- studio
- client-react
- client
- cli
- cloud-connection
- connectors
- connector-imap
- connector-mcp
- connector-openapi
- connector-rest
- connector-slack
- core
- drivers
- driver-memory
- driver-mongodb
- driver-sqlite-wasm
- driver-sql
- driver-turso
- formula
- lint
- mcp
- metadata-core
- metadata-fs
- metadata-protocol
- metadata
- objectql
- observability
- platform-objects
- plugins
- embedder-openai
- knowledge-memory
- knowledge-ragflow
- organizations
- plugin-approvals
- plugin-audit
- plugin-auth
- plugin-dev
- plugin-email
- plugin-hono-server
- plugin-pinyin-search
- plugin-security
- plugin-sharing
- plugin-webhooks
- qa
- http-conformance
- refd-timer-testkit
- vitest-filter-preflight
- rest
- runtime
- sdui-parser
- services
- service-analytics
- service-automation
- service-cache
- service-cluster-redis
- service-cluster
- service-datasource
- service-i18n
- service-job
- service-knowledge
- service-mailbox
- service-messaging
- service-package
- service-print
- service-queue
- service-realtime
- service-settings
- service-sms
- service-storage
- spec
- triggers
- trigger-api
- trigger-record-change
- trigger-schedule
- types
- verify
- scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
277 | 277 | | |
278 | 278 | | |
279 | 279 | | |
| 280 | + | |
| 281 | + | |
280 | 282 | | |
281 | 283 | | |
282 | 284 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
7 | | - | |
8 | 6 | | |
9 | 7 | | |
10 | 8 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | | - | |
| 66 | + | |
67 | 67 | | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | 68 | | |
72 | 69 | | |
73 | 70 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
121 | | - | |
| 121 | + | |
122 | 122 | | |
123 | | - | |
124 | 123 | | |
125 | | - | |
126 | | - | |
127 | 124 | | |
128 | 125 | | |
129 | 126 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
This file was deleted.
0 commit comments