一句话说明
@objectstack/driver-memory 没有任何行级租户隔离 —— 读路径不加租户谓词,写路径不打租户戳,distinct() 甚至不接受 options。这与 #3724(driver-mongodb,同为"整个能力根本不存在")是同一类,而 #3724 已经 closed as completed。
在 #6792(PR #6908,SQL 家族读侧收口点闸门)的范围审计中测得。发现者当时判断"姊妹卡已关闭,新卡只会被以冻结为由关掉",因而没有开卡;PM 复核时发现该前提反了 —— 见下。
事实(#6908 分支基线 6595262 上实测)
$ grep -c "tenantId\|organization_id" packages/drivers/driver-memory/src/memory-driver.ts
0
零匹配。另外 distinct(object, field, query?) 的签名里没有 options 参数,所以调用方即便想传 tenantId 也无处可传。
对照 #6908 刚刚在 SQL 家族上做的事:applyTenantScope 是读侧唯一收口点,getBuilder 构造的每个读 builder 都必须路由过去,并由 scripts/check-tenant-chokepoint.mjs 从 AST 逐次重新推导。driver-memory 不在该闸门的扫描集内,而且这不是因为 #5499 冻结 —— 是因为它根本不使用这套机制(文件里 getBuilder / applyTenantScope 均为零匹配)。闸门因此对它不产生任何判定,也就没有 DEBT 行可记:是一个真实的缺席,而不是被静默豁免。
为什么"姊妹卡已关闭"不是不开卡的理由
#3724 的关闭状态是 state_reason: completed,它自己给的处置是二选一:
- A. 实现行级租户隔离 —— 对齐 SQL driver 的租户列解析 / 读谓词 / 写打戳;
- B. 显式声明不支持多租户 —— 检测到多租户模式就启动时硬失败,而不是静默地不隔离(原卡倾向 B)。
packages/drivers/driver-mongodb 现有的 mongodb-tenancy-guard.ts 正是处置 B。也就是说 #3724 是被"修好"关掉的,不是被"不修"关掉的,先例指向与"不必开卡"相反的方向。
冻结的理由独立成立(且 #5704 已把它从测试后端迁走),但 #3724-B 恰好是能穿过冻结的那种形状:启动期拒绝不是对该 driver 能力的投资,而是消除一个静默失败模式。#3724 原文的判断在这里同样适用:
当前状态——能在多租户下启动、且不隔离——都不该保留。
是否值得动、以及走 A 还是 B,是分诊/维护者的定级问题,不是本卡替谁作的决定。本卡只负责把这个面记录下来,并纠正那条会让它被静默丢弃的前提。
关联
未认领,仅作记录。
一句话说明
@objectstack/driver-memory没有任何行级租户隔离 —— 读路径不加租户谓词,写路径不打租户戳,distinct()甚至不接受options。这与 #3724(driver-mongodb,同为"整个能力根本不存在")是同一类,而 #3724 已经 closed as completed。在 #6792(PR #6908,SQL 家族读侧收口点闸门)的范围审计中测得。发现者当时判断"姊妹卡已关闭,新卡只会被以冻结为由关掉",因而没有开卡;PM 复核时发现该前提反了 —— 见下。
事实(#6908 分支基线
6595262上实测)零匹配。另外
distinct(object, field, query?)的签名里没有options参数,所以调用方即便想传tenantId也无处可传。对照 #6908 刚刚在 SQL 家族上做的事:
applyTenantScope是读侧唯一收口点,getBuilder构造的每个读 builder 都必须路由过去,并由scripts/check-tenant-chokepoint.mjs从 AST 逐次重新推导。driver-memory不在该闸门的扫描集内,而且这不是因为 #5499 冻结 —— 是因为它根本不使用这套机制(文件里getBuilder/applyTenantScope均为零匹配)。闸门因此对它不产生任何判定,也就没有 DEBT 行可记:是一个真实的缺席,而不是被静默豁免。为什么"姊妹卡已关闭"不是不开卡的理由
#3724 的关闭状态是
state_reason: completed,它自己给的处置是二选一:packages/drivers/driver-mongodb现有的mongodb-tenancy-guard.ts正是处置 B。也就是说 #3724 是被"修好"关掉的,不是被"不修"关掉的,先例指向与"不必开卡"相反的方向。与 #5499 冻结的关系
冻结的理由独立成立(且 #5704 已把它从测试后端迁走),但 #3724-B 恰好是能穿过冻结的那种形状:启动期拒绝不是对该 driver 能力的投资,而是消除一个静默失败模式。#3724 原文的判断在这里同样适用:
是否值得动、以及走 A 还是 B,是分诊/维护者的定级问题,不是本卡替谁作的决定。本卡只负责把这个面记录下来,并纠正那条会让它被静默丢弃的前提。
关联
mongodb-tenancy-guard.tsSqlDriver.findWithWindowFunctionsandanalyzeQueryskipapplyTenantScope— a row-returning read door outside the driver's "single chokepoint" for tenant isolation #6792 / PR fix(driver-sql): route every read door through the tenant chokepoint (#6792) #6908 —— 发现处;SQL 家族读侧收口点 + AST 闸门driver-memory/driver-mongodb投资冻结:memory:(#5499 重启条件 · memory 半边,维护者 2026-08-06 立项) #5704 —— 已将driver-memory迁出测试后端未认领,仅作记录。