Skip to content

finding: strictness 台账分类表的 no gate 两个范例都已改判,但表里仍写成该类的现役人口(全树 no gate = 0) #6161

Description

@qq9340100

范围外发现,记录于 #5249(新增第九判定词 covered)的既有行复核过程中。不夹带修复 —— 该单的边界是词表新增,这条属于另一处散文漂移。

现象

docs/audits/2026-07-unknown-key-strictness-ledger.md 的「Classification rule」表里,no gate 那一行用两个范例来定义这个类:

  • 「Added at 批 15 on ChartAggregateSchema(ObjectChart aggregate={…})」
  • 「批 17 then found the same shape at scale — all 29 sites of ui/component.zod.ts, behind PageComponentSchema.properties, making this the largest class in ui/

两个范例现在都已经不在 no gate 里了,而表里没有任何「已改判」的标注:

范例 表里的说法 该文件 strip 行的实际判定
ui/chart.zod.ts ChartAggregateSchema no gate 的首个实例 authorable —— 行内写明「was no gate until #5020」,#5020 接通了 parse(packages/lint/src/validate-react-page-props.tsChartAggregateSchema.safeParse()),hold 结束
ui/component.zod.ts 全部站点 「the largest class in ui/ authorable (gate wired at #5068) —— 行内的 Class 单元格是 ~~authorable (p)~~ ~~no gate~~ **authorable (gate wired at #5068)**

生成物 …counts.md 同意后者:no gate 桶在全局和五个目录里全部是 0

| no gate — carrier live, no parse | 0 |      ← Global
| no gate — carrier live, no parse | 0 |      ← ui/
| no gate — carrier live, no parse | 0 |      ← data/ automation/ security/

为什么值得记一笔

台账自己写着这套词汇是给后续 agent 读的路标,而 no door / no gate 规定的后续动作相反,读错方向的代价是破坏性的。分类表是这套词汇的定义处,一个 agent 读到「ui/ 里最大的一类是 no gate」会得出两个与现实相反的结论:

  1. 以为 ui/ 还有一大批「carrier 活着但没 parse」的待接线站点 —— 实际上一个都没有,两批都已接通 parse 并转为 authorable(ChartAggregateSchema 有活的承载键却没有任何 parse:react 页发布闸门手写重推了它的规则,未知键从不检查(#4001 批 15 的 no gate 首例) #5020 / SDUI 组件 props 没有解析闸门:PageComponent.properties 是开放 record,ComponentPropsMap 的 29 个站点从不被 parse(#4001 批 17 的 no gate 判定) #5068);
  2. 以为 no gate 是个高频判定 —— 实际上它当前人口为零,是个空类(词本身仍应保留:它是机读契约的一部分,且下一个同形站点还会用到)。

各文件的 strip 行本身是准确的,历史也完整记录在行内证据里(这是台账「一个单元格只放一个判定、历史放证据」的设计,工作正常)。漂移只在分类表这一处 —— 它引用范例时是现在时,而范例后来动了。

定级理由

按第十条军规归为 observation-class:纯散文漂移,用户今天碰不到,不影响任何门或生成物(check:strictness-ledger 只校验 Class 单元格的形式与算术,不校验分类表散文里的举例)。故打 finding,不打 pm:queue,不认领,交 PM 分诊定级 —— #4949 也写明「小」的自评在两个方向上都不可靠。

建议的修法(供分诊参考,未实施)

最小改动是在两个范例后各补一句改判出处,让这个类的**当前人口(零)**在定义处就可见,例如「both exemplars have since had their parse wired and left the class (#5020 / #5068); the bucket is currently empty — the verdict stays in the vocabulary for the next site that measures this way」。不建议删掉 no gate 这个词 —— 它是机读契约的一部分,而且空类本身不是缺陷:一个判定词的价值在于下次测到同形站点时能正确命名它,#5249 刚刚为 covered 确立了同样的道理。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions