Skip to content

[finding] The 3 test layers #7353 made visible are repair candidates, not permanent debt — metadata-fs (6) and example-showcase (4) look like same-day graduations #7923

Description

@os-zhuang

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:

packagefiles hiddenraw errorswhy hidden
@objectstack/cli56188include: ["src"], no exclude at all, 56 tests in a sibling test/ tree
@objectstack/metadata-fs66include: ["src/**/*"], all 6 tests in test/
@objectstack/example-showcase34include 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 elsepackages/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.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions