在 #5286 为新的 `PINS_CHECKED` 不变式做全仓扫描时发现,记录备查,未认领。基线 `origin/main` @ `01c0baef9`。 ## 事实 `packages/metadata-core/test/types.test.ts` 含 `@ts-expect-error` 指令,而该文件**不在该包 tsc program 里**: ``` packages/metadata-core/tsconfig.json "include": ["src/**/*"] "exclude": ["node_modules", "dist"] package.json "typecheck": "tsc --noEmit" ``` 用 `tsc --showConfig` 解析实际 program,`test/` 树整体不在其中(program 里只有 `src/**`,例如 `./src/protocol-handshake.test.ts`、`./src/objects/sys-view-definition.object.test.ts`)。 成因和 #5286 那一例**不同**,这一点是本单的要点:#5286 里 `packages/spec` 是被 `exclude: ["**/*.test.ts"]` 显式排除的;这里没有任何 exclude 指向它,它只是**落在 include 根之外**。后果是 `check:type-check-coverage` 的 `TESTS_COVERED` 也看不见它——那条不变式只统计 include 根之下的测试文件,所以这个包的 `testFiles` 计数是 0,既不报警也不进 `TEST_DEBT`。两种「未检查」形态,一种检测手段抓不住另一种。 ## 后果 和 #5286 的结论一样:指令**从不被求值**。删掉那一行 `@ts-expect-error`,`pnpm typecheck`、`pnpm test`、`check:type-check-coverage` 全部照绿。它看起来像一条被钉住的契约,实际什么也没钉住。 ## 现状(已被记账,非未知) #5286 的 PR 新增了全仓不变式 `PINS_CHECKED`(`scripts/check-type-check-coverage.mjs`):带 `@ts-expect-error` 的测试文件不得落在任何 tsc program 之外。本文件作为 seed 之一登记在 `PHANTOM_PIN_DEBT` 里,该台账**只减不增、对新条目关闭**,条目一旦不再成立(文件进 program / 指令消失 / 文件移动)RECONCILED 方向会强制删除。也就是说这条已经是「可数」的了,本单是给它一个可认领的修复入口。 ## 建议修复 任选其一,都能让 `PHANTOM_PIN_DEBT` 的这条自动变红并被删除: 1. 把 `include` 扩到 `["src/**/*", "test/**/*"]`(最直接;需先看 `test/` 下还有多少现存类型错误);或 2. 按 #5286 的路子加一份 sibling `tsconfig.test.json` 并在 `typecheck` 脚本里指名(#5286 已让 `TESTS_COVERED` 识别被脚本链指名的 sibling 配置)。 修完记得在同一个 PR 里删掉 `scripts/check-type-check-coverage.mjs` 中 `PHANTOM_PIN_DEBT` 的对应条目——不删会红。 关联:#5286(不变式与台账来源)、#4311(typecheck 覆盖棘轮)、#5449(`packages/client` 那一例,另一种成因:exclude 显式排除)。
Activity
docs(spec): explain the tsconfig.test.json boundary and point the pha…
os-zhuang commentedon Aug 5, 2026
发现分诊轮判级:晋级
pm:queue(域维持domain:engine-core)。理由:缺陷具体、落点单包(
packages/metadata-core的 tsconfig / typecheck 链),两条候选修法均是机械路子(#5286 已铺好 sibling tsconfig 的识别机制),且PHANTOM_PIN_DEBT台账只减不增 —— 本单正是它设计上等待的那个「可认领修复入口」,持有没有任何增值。过时前提检查(origin/main @ b4cdc58):metadata-core的 tsconfig 与test/树自立单基线后零变更,check-type-check-coverage.mjs中 metadata-core 条目仍在(3 处命中)。给认领方:验收 =test/types.test.ts进 tsc program + 同 PR 删除PHANTOM_PIN_DEBT对应条目(不删会红);路线 1 需先量test/下现存类型错误再定。本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-zhuang commentedon Aug 5, 2026
认领:PM 循环第 1 轮(engine-core 车道)
会话:
session_01V7WetGmnfoXNn8cLieKKmx分支:
claude/issue-5476-metadata-core-test-tscWorktree:
objectstack-issue-5476域:
domain:engine-core文件面:
packages/metadata-core/tsconfig.json(或新增tsconfig.test.json+package.jsontypecheck 链)、scripts/check-type-check-coverage.mjs(仅删PHANTOM_PIN_DEBT对应条目)、.changeset/*.md。Generated by Claude Code
os-zhuang commentedon Aug 5, 2026
复核通过,ACCEPT(engine-core 车道 PM,第 1 轮):PR #5592。
交付:路线 2(sibling
tsconfig.test.json,typecheck脚本链指名),test/六文件进 tsc program;路线 1 先量后否(TS6059 ×6,build config 带 emit 约束不可放宽rootDir)。与两先例的实质差异有据:本包"type": "module",NodeNext 语义刻意不动、strictness 全继承;test 层 0 error,故裸tsc -p即门、不接空转台账。PHANTOM_PIN_DEBT条目已删,台账清空(后续入口是PINS_CHECKED变红,不是新增条目)。承重性已反证:typecheck 还原成裸tsc --noEmit后门立即变红。CI 全绿(Check Changeset 走skip-changeset标签,同 #5478/#5546 先例)。转 ready 入队,跟到 MERGED。Generated by Claude Code
fix(spec): 让 spec 测试层真的进 tsc,`@ts-expect-error` 退役 pin 不再是幽灵检查 (objec…
fix(client): compile `tests/integration/` and point its discovery ass…
fix(metadata-core): 让 test/ 层真的进 tsc,`@ts-expect-error` 不再是幽灵检查 (obje…