Filed unassigned by the #7353 dev (PR #7921) as an out-of-scope observation. Not fixed there: #7353's file surface is scripts/check-type-check-coverage.mjs only — that card changes what the gate can SEE, not what the repo declares — so every one of these was recorded as measured TEST_DEBT rather than repaired.
The shape
#7353 taught TESTS_COVERED the include-shaped form (a tsconfig that never steered tsc toward the tests, as opposed to one that steered it away). Three packages became visible and were ledgered:
| package | files hidden | raw errors | why hidden |
|---|
@objectstack/cli | 56 | 188 | include: ["src"], no exclude at all, 56 tests in a sibling test/ tree |
@objectstack/metadata-fs | 6 | 6 | include: ["src/**/*"], all 6 tests in test/ |
@objectstack/example-showcase | 3 | 4 | include names src/test; the e2e/ Playwright tree beside it is unread |
A TEST_DEBT entry is the correct holding position — it freezes the number and makes the layer ratchet — but it is not the destination. The supported repair is the #5286 route: widen include to reach the test tree, or add a sibling tsconfig.test.json and name it in the typecheck script, then delete the ledger entry in the same PR (RECONCILED forces the pair).
Why two of these look cheap
@objectstack/metadata-fs — 6 errors. TS6133 x5 (declared-never-read, from the root config's noUnusedLocals) and one TS2349, across 2 files. Five of the six are lint-grade.@objectstack/example-showcase — 4 errors. TS2339 x4 across three Playwright specs.
Both are plausibly one sitting each, and both would graduate a package out of the ledger rather than move a number inside it.
⚠️ One thing a repairer will hit immediately, measured during #7353: both packages set "rootDir": "src". Widening include past it makes tsc answer with one TS6059 per added file and nothing else — packages/cli measured 56 TS6059 that way versus 188 real errors with rootDir neutralised. So the repair is not a one-line include edit; it needs rootDir handled too, which is part of why the sibling-tsconfig.test.json route exists.
@objectstack/cli is a different size
188 raw errors, and not a sitting. But it is also less bad than it reads: 159 of the 188 are TS2835 (NodeNext extension specifiers) plus the TS7006 implicit-any cascade it causes — the pair the top-of-ledger note describes as one repair, not 159. The remainder is concentrated: test/i18n-coverage.test.ts x35, test/data-model-rules.test.ts x26, test/i18n-declared-surface-gate.test.ts x19, test/i18n-section-coverage.test.ts x18, test/commands.test.ts x15 account for 113 of the 188.
Worth knowing before anyone sizes it: this layer has never been read by any gate, ledger or CI job, so the 188 is a first measurement rather than a drift.
Not urgent
Nothing is red and nothing regressed — after #7353 all three are frozen at their exact measured counts with no bootstrap margin, so the next new error in any of them goes red immediately. This is a "these should graduate" note, not a defect.
Related: #7353 (PR #7921) · #5286 · #7312 (the same repair, done for app-crm / app-todo) · #4311.
Filed unassigned by the #7353 dev (PR #7921) as an out-of-scope observation. Not fixed there: #7353's file surface is
scripts/check-type-check-coverage.mjsonly — that card changes what the gate can SEE, not what the repo declares — so every one of these was recorded as measured TEST_DEBT rather than repaired.The shape
#7353 taught TESTS_COVERED the include-shaped form (a tsconfig that never steered tsc toward the tests, as opposed to one that steered it away). Three packages became visible and were ledgered:
@objectstack/cliinclude: ["src"], noexcludeat all, 56 tests in a siblingtest/tree@objectstack/metadata-fsinclude: ["src/**/*"], all 6 tests intest/@objectstack/example-showcaseincludenamessrc/test; thee2e/Playwright tree beside it is unreadA TEST_DEBT entry is the correct holding position — it freezes the number and makes the layer ratchet — but it is not the destination. The supported repair is the #5286 route: widen
includeto reach the test tree, or add a siblingtsconfig.test.jsonand name it in thetypecheckscript, then delete the ledger entry in the same PR (RECONCILED forces the pair).Why two of these look cheap
@objectstack/metadata-fs— 6 errors. TS6133 x5 (declared-never-read, from the root config'snoUnusedLocals) and one TS2349, across 2 files. Five of the six are lint-grade.@objectstack/example-showcase— 4 errors. TS2339 x4 across three Playwright specs.Both are plausibly one sitting each, and both would graduate a package out of the ledger rather than move a number inside it.
"rootDir": "src". Wideningincludepast it makes tsc answer with one TS6059 per added file and nothing else —packages/climeasured 56 TS6059 that way versus 188 real errors withrootDirneutralised. So the repair is not a one-lineincludeedit; it needsrootDirhandled too, which is part of why the sibling-tsconfig.test.jsonroute exists.@objectstack/cliis a different size188 raw errors, and not a sitting. But it is also less bad than it reads: 159 of the 188 are TS2835 (NodeNext extension specifiers) plus the TS7006 implicit-any cascade it causes — the pair the top-of-ledger note describes as one repair, not 159. The remainder is concentrated:
test/i18n-coverage.test.tsx35,test/data-model-rules.test.tsx26,test/i18n-declared-surface-gate.test.tsx19,test/i18n-section-coverage.test.tsx18,test/commands.test.tsx15 account for 113 of the 188.Worth knowing before anyone sizes it: this layer has never been read by any gate, ledger or CI job, so the 188 is a first measurement rather than a drift.
Not urgent
Nothing is red and nothing regressed — after #7353 all three are frozen at their exact measured counts with no bootstrap margin, so the next new error in any of them goes red immediately. This is a "these should graduate" note, not a defect.
Related: #7353 (PR #7921) · #5286 · #7312 (the same repair, done for app-crm / app-todo) · #4311.