在 #6212 批 C(PR #6356 )实施期间实测发现,记录备查。观察类,不挂 pm:queue,请分诊轮定级。
现象
scripts/check-type-check-coverage.mjs 的 DEBT / TEST_DEBT 是只减不增的棘轮,但记录值低于实测值时它不报错 ,只打一条 ℹ 提示:
ℹ @objectstack/rest: TEST_DEBT records 163, tsc now reports 144 (-19) -- the entry can be lowered. Not an error: an improvement must not have to pay a bookkeeping toll to land.
这条设计本身是对的(改进不该为记账付过路费)。但那段差额是实打实的许可额度 :在被抹平之前,任何新增的、数量不超过余量的错误都不会让门禁变红。
为什么单独记一笔:它能让一条新写的 pin 完全失效
不是理论推演,是 PR #6356 实测撞上的:
也就是说:ledger 的余量不只是"记账不准",它会让这个包唯一能钉住该签名的门禁 变成哑的。PR #6356 因此在同 PR 内把该条目降到实测的 10,降完之后同一反转实测报 records 10 … now reports 12 (+2),门禁才真的红。
当前还带余量的条目(在 d8e8d9cbc 实测)
条目
ledger
实测
余量
@objectstack/service-storage(DEBT)
52
42
-10
@objectstack/objectql(TEST_DEBT)
355
350
-5
@objectstack/runtime(TEST_DEBT)
227
223
-4
@objectstack/rest(TEST_DEBT)
163
144
-19
@objectstack/mcp(TEST_DEBT)
63
53
-10
(driver-mongodb 已由 PR #6356 抹平,不在表内。数字会随 main 漂,以 re-measure 为准。)
其中 objectql / runtime / rest 三个包同样排除测试层 ,和 mongodb 是同一形态 —— 它们的测试层同样只由这条 ledger 看着。
不是缺陷,别当缺陷派
今天没有人踩:门禁在"高于记录值"时照常变红,余量只是削弱 灵敏度而非关闭它,而且 ℹ 提示每次 re-measure 都会打出来、不会静默。所以这是被削弱的检查 ,不是活体缺陷,判级请按观察类走。
如果要做
几个方向,各有取舍,未预断:
逐条抹平 (PR refactor(drivers)!: memory / mongodb 的 aggregate / distinct 收进 DriverQuery (#6212 批 C) #6356 对 mongodb 做的那样)—— 最直接,但每条都要重写 note 的组成描述,且 objectql / rest 这类活跃包很容易在评审期间再次漂移([finding] DEBT ledger counts in check-type-check-coverage.mjs drift silently — @objectstack/metadata-protocol records 28, actually reports 63 #5278 记过这个 race,option D 输了五次)。
给"余量超过阈值"加一条会红的判据 —— 比如余量超过记录值的某个比例、或某个绝对值就失败,逼作者当场抹平。风险是把 [finding] DEBT ledger counts in check-type-check-coverage.mjs drift silently — @objectstack/metadata-protocol records 28, actually reports 63 #5278 明确不想要的"记账过路费"又加回来。
只对排除测试层的包收紧 —— 那些包的 ledger 是唯一的看门人,余量的代价最高;不排除测试层的包有 pnpm typecheck 兜底,余量无害。这一条的信噪比看起来最好,但需要先确认 TESTS_COVERED 那批的实际分布。
会话:session_01WyvqvKMG6asi9aXjKE6xtx(#6212 批 C 实施期间发现,未认领)
在 #6212 批 C(PR #6356)实施期间实测发现,记录备查。观察类,不挂
pm:queue,请分诊轮定级。现象
scripts/check-type-check-coverage.mjs的DEBT/TEST_DEBT是只减不增的棘轮,但记录值低于实测值时它不报错,只打一条 ℹ 提示:这条设计本身是对的(改进不该为记账付过路费)。但那段差额是实打实的许可额度:在被抹平之前,任何新增的、数量不超过余量的错误都不会让门禁变红。
为什么单独记一笔:它能让一条新写的 pin 完全失效
不是理论推演,是 PR #6356 实测撞上的:
driver-mongodb的TEST_DEBT记 43,实测只有 10(TS1309x7 +TS2550x3);d367f03d6^(PR refactor(drivers)!: 五个驱动的 query 参数跟进 DriverQuery,休眠的类型谎言没有藏身处 (#6075) #6210 前一刻)实测正好 43,组成TS2345x33 + 上述 10,与 ledger 里 note 的文字逐字吻合。那 33 条是 refactor(drivers)!: 五个驱动的 query 参数跟进 DriverQuery,休眠的类型谎言没有藏身处 (#6075) #6210 收窄六个契约方法时消掉的,ledger 一直没跟着降;tsconfig.json排除*.test.ts,所以pnpm typecheck看不见它的测试层,而aggregate这类驱动自有方法的唯一消费者恰恰就在那些被排除的测试里。把aggregate的签名从DriverQuery改回QueryAST,实测测试层报 12 条 ——12 < 43,旧天花板会把这次回退整个吞掉,门禁全绿。也就是说:ledger 的余量不只是"记账不准",它会让这个包唯一能钉住该签名的门禁变成哑的。PR #6356 因此在同 PR 内把该条目降到实测的 10,降完之后同一反转实测报
records 10 … now reports 12 (+2),门禁才真的红。当前还带余量的条目(在
d8e8d9cbc实测)@objectstack/service-storage(DEBT)@objectstack/objectql(TEST_DEBT)@objectstack/runtime(TEST_DEBT)@objectstack/rest(TEST_DEBT)@objectstack/mcp(TEST_DEBT)(
driver-mongodb已由 PR #6356 抹平,不在表内。数字会随main漂,以 re-measure 为准。)其中
objectql/runtime/rest三个包同样排除测试层,和 mongodb 是同一形态 —— 它们的测试层同样只由这条 ledger 看着。不是缺陷,别当缺陷派
今天没有人踩:门禁在"高于记录值"时照常变红,余量只是削弱灵敏度而非关闭它,而且 ℹ 提示每次 re-measure 都会打出来、不会静默。所以这是被削弱的检查,不是活体缺陷,判级请按观察类走。
如果要做
几个方向,各有取舍,未预断:
aggregate/distinct收进DriverQuery(#6212 批 C) #6356 对 mongodb 做的那样)—— 最直接,但每条都要重写note的组成描述,且objectql/rest这类活跃包很容易在评审期间再次漂移([finding] DEBT ledger counts in check-type-check-coverage.mjs drift silently — @objectstack/metadata-protocol records 28, actually reports 63 #5278 记过这个 race,option D 输了五次)。pnpm typecheck兜底,余量无害。这一条的信噪比看起来最好,但需要先确认TESTS_COVERED那批的实际分布。会话:
session_01WyvqvKMG6asi9aXjKE6xtx(#6212 批 C 实施期间发现,未认领)