观察类发现,记录在案,今天没有任何东西会因此判红。发现于 #4593 的别名补齐。
packages/spec/src/type-alias-convention.pin.test.ts 里 Iso 块开头的分节注释是:
// ---------------------------------------------------------------------------
// 717 isomorphic aliases: `z.input` === `z.infer`, so no `XParsed` is declared.
// ---------------------------------------------------------------------------
这个 717 在 #4593 之前就已经和事实脱节(当时文件里是 748 条 pin),#4593 补到 822 之后差得更远。
为什么它会漂而没人发现
同一个文件里 pin 的数量被一条计数断言盯着,并且盯得很紧 —— 断言旁边整段收据注释逐笔记着每次加减的来源和算法("Recompute from the file; never from the changelog")。但那条断言读的是 /^export type Iso\d+ = Assert</gm 的匹配数,不读这行分节注释。 于是文件里两个陈述同一个量的地方,一个每次改动都被 tsc + vitest 复核,另一个是纯散文,谁也不读 —— 它就是那个没被盖住的数字。
这正是本仓反复付账的 "declared ≠ enforced" 形状的小型版本:一个断言不到的计数,注定会说谎。
可选处置
- A(最省): 把这行改成不带数字的措辞(
// Isomorphic aliases: z.input === z.infer, so no XParsed is declared.),数量交给下面那条断言唯一负责。一个量只在一处陈述,就不会有第二处漂。
- B: 保留数字,并把这行也纳入那条计数断言(断言同时校验注释里的数字与 pin 数相等)。多一处需要维护,但保住了"读注释就知道规模"。
倾向 A:收据注释已经把规模和每次变动讲得比一个数字清楚得多,再留一个必须手工同步的副本只是多一个说谎的位置。
影响
没有。它误导的是读者对规模的第一印象,不影响任何门、任何运行时、任何发布物。故按观察类归档,不进队列。
观察类发现,记录在案,今天没有任何东西会因此判红。发现于 #4593 的别名补齐。
packages/spec/src/type-alias-convention.pin.test.ts里 Iso 块开头的分节注释是:这个 717 在 #4593 之前就已经和事实脱节(当时文件里是 748 条 pin),#4593 补到 822 之后差得更远。
为什么它会漂而没人发现
同一个文件里 pin 的数量被一条计数断言盯着,并且盯得很紧 —— 断言旁边整段收据注释逐笔记着每次加减的来源和算法("Recompute from the file; never from the changelog")。但那条断言读的是
/^export type Iso\d+ = Assert</gm的匹配数,不读这行分节注释。 于是文件里两个陈述同一个量的地方,一个每次改动都被 tsc + vitest 复核,另一个是纯散文,谁也不读 —— 它就是那个没被盖住的数字。这正是本仓反复付账的 "declared ≠ enforced" 形状的小型版本:一个断言不到的计数,注定会说谎。
可选处置
// Isomorphic aliases: z.input === z.infer, so no XParsed is declared.),数量交给下面那条断言唯一负责。一个量只在一处陈述,就不会有第二处漂。倾向 A:收据注释已经把规模和每次变动讲得比一个数字清楚得多,再留一个必须手工同步的副本只是多一个说谎的位置。
影响
没有。它误导的是读者对规模的第一印象,不影响任何门、任何运行时、任何发布物。故按观察类归档,不进队列。