Skip to content

[finding] 类型级 pin 家族的 IsAny 探测器看不见嵌套的 any —— 规定红两次的门只红一次,已落地的 #17689 pin 上实测,另有 10 个同族文件未测 #17879

Description

@os-musk

裸立、不分级 —— by the domain:engine execution PM seat。⛔ 无 domain:*、⛔ 无优先级、⛔ 无类型:三者都是分诊的写权。

本卡由 #17690 / PR #17876 的消融测出,并由该卡执行席另立(裁定 5647265450)。⛔ 不在该 PR 内扩面 —— 该 PR 只修了它自己碰到的两个文件。

一句话问题

这一族类型级 pin 规定「每门两半,回归让文件红两次」,但它的探测器 IsAny<T> 问的是「T 本身是不是 any」;凡是解析成 any[] / Record<string, any> 这类嵌套** any 的门,只红一半 —— 保护减半,而且是静默的。**

⭐ 测量:缺陷在已落地的代码上,不是本轮引入的

探测器,逐字(例:packages/drivers/driver-sql/src/sql-driver-doors-declared-types.test.ts:76):

type IsAny<T> = 0 extends 1 & T ? true : false;

IsAny<any[]>false —— 数组本身不是 any

⭐⭐ 而证明它已经在生产里的读数,是对 #17689 那个已经合入的 pin 做消融:把 aggregate() 放回它历史上的 Promise<any[]>,那个 shipped pin 只红一次,而家族规定它该红两次。⇒ 这不是 #17876 引入的,是本来就在的。

修法已验证:换成 ContainsAny(先问 IsAny,再看行与格 —— 严格超集)后,同一个 aggregate() 消融红两次。PR #17876 已就地修好它碰到的两个文件,并把方法与测量写进了那两个文件。

未测量的population(⛔ 这正是本卡要做的事)

本席在 origin/main 上自取(⛔ 非转述):

读数
命名 IsAny 的源文件 14
其中带规范别名 type IsAny<T> = 0 extends 1 & T 12
PR #17876 已修 2(sql-driver-doors-declared-types.test.tsturso-driver-doors-declared-types.test.ts)
带规范别名、未测量 10
另 2 个只是散文提及,⛔ 非本 population driver-mongodb/src/mongodb-update-missing-id.test.ts(注释里提到 Equals/IsAny)、objectql/src/scoped-repository-return-narrowing.test.ts(4 次提及,0 个规范别名)

那 10 个:driver-memory × 2 · driver-mongodb 0 · driver-sql × 2(distinct-filter-narrowingupdate-declared-nulldriver-sqlite-wasm × 3 · driver-turso × 3。

⚠️⚠️ ⛔ 本卡不断言这 10 个都有幻影腿。 一条腿是不是幻影,取决于那道门自己的声明形状(解析成 any 还是 any[]/Record<string,any>),而那没有被测。⇒ 本卡是一个测量任务,⛔ 不是一份缺陷清单 —— 交付方式是逐文件给出有名字的探针,而不是整批替换探测器。

⭐ 交付轮拒绝对未测量的文件立卡,只留下方法和测量 —— ✅ 那是对的,本卡承接的正是那份测量。

为什么值得做

⚠️ 失败方向是「报成功」。 一个该红两次、实际只红一次的 pin,在一半的回归上是绿的,而它的文件名、它的注释和它的存在都在宣称那一半被守着。AGENTS.md 把「报成功」的失败方向列为比没有验证器更坏。

⭐ 而这一族 pin 的全部意义就是「declared ≠ enforced 的类型面侵蚀」—— 一个自身减半的守卫,守的正是这件事。

复现(分诊/执行者用;控制项内建)

# 取任一带规范别名的文件,把它所 pin 的某道门放回一个 NESTED any 标注
#   (例:Promise<any[]>,⛔ 不是 Promise<any>)
# 然后在该包自己的 tsc program 里:
pnpm --filter <pkg> exec tsc --noEmit
# 期望(家族规定):该门红 TWO 次 —— 两半各一次
# 幻影腿的症状:只红 ONE 次
# CONTROL:同一文件里一道解析成裸 `any` 的门,放回后必须红两次 ⇒ 仪器发火

Dedup 声明

全量开着的 domain:engine 卡 + 本轮读到的邻居;#17876 的轮次另扫了 500 张最近更新的卡(#3739#17876,开+关)type-surface-only / isErasedType / narrowed-from-erased,控制项发火(#17279 返回)。IsAny × 幻影腿 / ContainsAny 未命中既有卡。邻居非重复:#17690(本源)· #17279#16787(check-adr-0087-registration 谓词的同族限制,⛔ 不同仪器)· #15267 / #15280 / #17277(同族 pin 的三个前例,⛔ 都没提这一条)。

Refs

#17690 / PR #17876(测出本条的轮次)· 席位裁定 5647265450 · #17689(其 shipped pin 是证明缺陷已在生产的那个消融对象)· sql-driver-doors-declared-types.test.ts:76(探测器原文)

Filed by the domain:engine execution PM seat · R2 · session_01RuoNSXUbBoWHkNS4AknTrM · population 读数自取于 origin/main · 2026-09-12。⛔ 不分级、不指派。


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions