feat(spec)!: 退役 DriverCapabilities 31 个零读者能力位 —— 全表活性审计,3 活 31 死(#4634,ADR-0049) - #4783
Merged
Merged
Conversation
#4484 findStream 收尾发现 streaming 位指向已删除的契约方法;按 issue 自述倾向对 DriverCapabilitiesSchema 全部 34 位做两仓活性审计(objectstack + cloud,objectui 零引用确认):仅 queryDateGranularity(engine 聚合分派 + date-bucket parity)、 autonumber(engine 让渡自增生成)、batchSchemaSync(engine 与方法存在性 AND) 三位有决策读者;其余 31 位人人写、无人读,describe 承诺的引擎降级路径从未存在, 且零读者让写错的值(SqlDriver streaming:false 却实现 findStream;InMemoryDriver streaming:true 却全表物化)三个版本无人发现 —— ADR-0078 假可供性。 - driver.zod.ts:31 位 retiredKey() 墓碑(非 strict schema,裸删会被静默剥离; DriverConfigSchema.capabilities 及 SQL/NoSQL 扩展确有 parse 路径),逐位 prescription 指明真实机制(方法存在性门控:beginTransaction / aggregate / syncSchema;#4001 教训);batchSchemaSync .default(false) → .optional() (两处读者本就按缺省=false 消费) - ADR-0087 评估(#4484/#4764 先例):driver 是代码不是 stack 树元数据, supports 字面量在 driver 类里、DriverConfig 是插件 TS 配置,均非 sys_metadata 形态(stack 树近邻 datasource.capabilities 已于 #4583 单独退役)⇒ 不登记 D2 conversion,登记 D3 semantic migration driver-capabilities-inert-bits-removed - driver 字面量同步:memory {} / mongodb { batchSchemaSync: true } / sql { queryDateGranularity, autonumber, batchSchemaSync: false } - 回归 pin(driver.test.ts):31 位逐位 parse 拒绝 + prescription 断言; compiler-API 断言 34 键形状且退役位类型坍缩为 undefined、活位可写(反空转 守卫);S1(schema 复活 streaming)5 pin 红、S2(driver 字面量复活)TS2416 红,均实跑验证后还原 - 生成物:authorable-surface 31 行 [RETIRED]、spec-changes / upgrade-guide / references docs 全量再生成;14 项 spec 门禁全绿,全仓 typecheck 122 任务绿 - changeset:spec + 三 driver 包 major,FROM→TO 映射与一行修复齐备 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
…ver-capabilities-liveness
json-schema.manifest.json / authorable-surface.json / dual-source-exports.baseline.json 一律先取 origin/main 版本(避免静默复活 C10 蓄意删除的 system/EnvironmentArtifact* 键),再以合并后源码全量重跑 gen:schema/check:generated:DriverCapabilities 31 行 [RETIRED] 由生成器重新写入,manifest 与 authorable-surface 中 C10 删键保持已删 (实测两文件 system/EnvironmentArtifact 零残留)。8/8 生成物门禁 + 8 项源码审计 全 PASS,spec 292 文件 7374 测试全绿。 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Contributor
📓 Docs Drift CheckThis PR changes 4 package(s): 111 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
…ver-capabilities-liveness
This was referenced Aug 3, 2026
os-zhuang
marked this pull request as ready for review
August 3, 2026 06:42
os-zhuang
enabled auto-merge
August 3, 2026 06:42
os-zhuang
pushed a commit
that referenced
this pull request
Aug 3, 2026
合并 #4768(C17)/ #4786 / #4780 / #4783(#4634,31 位能力位退役)后重生成。 按 #4535 §7 与「rebase/merge 静默回退」纪律处理三张 ratchet: `dual-source-exports.baseline.json` / `authorable-surface.json` / `json-schema.manifest.json`(+ `api-surface.json`)一律 `git checkout origin/main --` 取 main 版本后全量重跑生成器,只重施本 PR 的一处改动。 其中 json-schema.manifest.json 与 authorable-surface.json 归 os-regen merge driver 管、合并不产生冲突标记,最易静默回退,故以 gen:schema 实跑 输出为准。 逐项确认他人蓄意变更未被回滚(regen 后实测): - #4783 `data/DriverCapabilities:*` 31 行 [RETIRED] + 3 行存活 —— 均在 - C10 `system/EnvironmentArtifact*` 删除 —— 仍为 0 - C17 `studio/ActionLocation` → `studio/ActionContributionLocation` —— 旧 0 新 1 - 本 PR `kernel/PackageDependency` → `kernel/ResolvedPackageDependency` —— 旧 0 新 1 `renamed-defs.ts` 冲突为两条独立改名条目并存(C17 与本簇),按时序保留两条。 dual-source 基线 2 → **0**(entries: []),#4535 第二批收官、双源账目归零。 Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com>
os-zhuang
pushed a commit
that referenced
this pull request
Aug 3, 2026
…rename must not ride out on this branch `git merge origin/main` brought in #4789 (kernel PackageDependencySchema -> ResolvedPackageDependencySchema, dual-source C7), which touches the same three generated artifacts this branch does. The merge reported NO conflicts and left NO conflict markers, and it was wrong in all three: api-surface.json re-added `PackageDependency (type)` + `PackageDependencySchema (const)` and dropped `ResolvedPackageDependency(Schema)` authorable-surface.json re-added the 4 `kernel/PackageDependency:*` lines and dropped the 4 `kernel/ResolvedPackageDependency:*` ones json-schema.manifest.json re-added `kernel/PackageDependency` and dropped `kernel/ResolvedPackageDependency` json-schema.manifest.json is routed to the `merge=os-regen` driver, which defers rather than regenerates, so nothing textual signals this — the C17/C10 silent revert, reproduced. `git merge-tree` does not run external merge drivers and so cannot see it either. Resolved the way #4783 did, without any textual merge: reset all three (plus api-surface-signatures.json) to origin/main, re-applied ONLY this PR's own deletion to the two hand-ratcheted files, then re-ran the generators over the merged source. The 22 authorable-surface lines and 4 manifest keys are once again deliberate deletions, now anchored at merge base ffab803, which gen:schema re-proved under #4650 route 3 ("def no longer emitted by this build"). Delta vs origin/main is now pure deletion in all three, with #4789's rename intact: api-surface.json -8 (4 const + 4 type), 0 insertions authorable-surface.json -22 lines, 0 insertions json-schema.manifest.json -4 keys, 0 insertions check:dual-source-exports reports 0 accepted dual-source (#4789's shrink to [] survives; this branch does not carry it back to 2). renamed-defs.ts is byte-identical to main and keeps all 6 entries including #4789's. Co-Authored-By: Claude <noreply@anthropic.com>
This was referenced Aug 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #4634
按 issue 自述倾向(路线 2,PM 派发批准):先对
DriverCapabilitiesSchema全部 34 个能力位做一次两仓活性审计,再按结果一次性处置。结论:3 位有决策读者(保留),31 位零读者(全部retiredKey()墓碑退役)。审计方法
三仓实测(objectstack 本分支基线 / cloud@5df2c69 / objectui@origin/main ca58e45),检索模式覆盖:
.supports.位名直读、supports?.位名可选链、supports[括号访问、= driver.supports别名后再读、capabilities.位名(DriverConfig 侧)、31 个位名逐个裸名交叉扫。对每个疑似读者按「声明 → 注册 → 访问器 → 调用方」闭合调用图;对最可能有隐藏读者的位(transactions/queryAggregations/schemaSync/fullTextSearch)额外验证了引擎的真实门控机制(见表)。objectui 对.supports/DriverCapabilities/ 各位名零引用。审计表(位 → 读者站点 / 零读者 → 处置)
活位(3)——方法存在性无法携带信号的位,保留:
queryDateGranularitypackages/objectql/src/engine.ts:5053(聚合分派:native date bucketing vs in-memory 回退)、packages/verify/src/date-bucket-parity.ts:193(parity 探针);clouddriver-turso在 remote 模式覆写它修假能力,正是该位的类型场景autonumberpackages/objectql/src/engine.ts:4182(引擎让渡自增生成给 driver,免预填)batchSchemaSyncpackages/objectql/src/engine.ts:5334、packages/objectql/src/plugin.ts:1023(两处均与typeof driver.syncSchemasBatch === 'function'AND:基类可继承方法而传输层不真能批量).default(false)→.optional()(两处读者本就按 truthy 消费,缺省=false 语义不变,空对象{}成为合法最小广告)死位(31)——两仓零读者,全部墓碑退役;prescription 逐位指明真实机制(#4001 教训):
create/read/update/deletebulkCreate/bulkUpdate/bulkDeletetransactionalBatch,rest-server.ts:2461-2479),从不读此 recordtransactionsdriver?.beginTransaction(engine.ts:5187,5672);无方法走非事务回退,位说什么都不改变行为savepointsisolationLevelsbeginTransaction({ isolationLevel })传入;无规划器读此列表queryFilters/querySorting/queryPaginationfind()收到完整 QueryAST 且必须全量执行;describe 承诺的「ObjectQL will … in memory」回退从未存在queryAggregationstypeof drv.aggregate === 'function'+queryDateGranularity决定(engine.ts:5069),从不看此位queryWindowFunctions/querySubqueries/queryCTE/joinsfullTextSearch$search由引擎编译为 searchable 字段的$or+$contains并在 driver 之前从 AST 删除(ADR-0061);无 driver 侧全文路径jsonQuery/geospatialQuery/vectorSearchvectorSearch的 RAG 场景不经 IDataDriver。未来能力按 enforce-or-remove 的诚实顺序「随调用方一起来」streamingfindStream已删(#4484);且零读者让写错的值三个版本无人发现:SqlDriver 声明 false 却实现了 findStream,InMemoryDriver 声明 true 却全表物化find()分页替代)jsonFields/arrayFieldssyncSchema时自行协商(如 SqlDriver 逐对象 JSON/date 列跟踪);引擎不读位schemaSynctypeof driver.syncSchema === 'function'(engine.ts:5337,5387、plugin.ts:1000)migrationsindexesSqlDriver.syncDeclaredIndexes)connectionPooling/preparedStatements/queryCachepoolConfig;参数化执行是execute(command, parameters)的实现细节;无查询缓存层;DriverOptions.skipCache是逐调用提示,与位无关存续契约(已写进 schema 头注):能力位只在方法存在性无法携带信号时存在;其余「支持什么」由实现哪些方法表达。这就是 31 个死位积累的机理——每个位都是给「方法本身已是信号」或「调用方根本不存在」的行为发的布尔。
issue 证据更正
issue 写站证据里的
packages/spec/src/api/registry.example.ts:219与packages/core/API_REGISTRY.md:306实为 gRPCprotocolConfig.streaming(api/registry.zod.ts自由格式协议元数据,见其 :481-488 的 gRPC 示例),与DriverCapabilities.streaming同名不同键,本 PR 不触碰(亦符合区域约束:api 域不动)。DriverCapabilities.streaming的真实写站只有三个 driver 字面量。路线与 ADR-0087 论证(#4734 / #4767 两种先例逐条对照)
.strict(),裸删会被 Zod 静默剥离(把 public 从"全局开关的副产品"升级为声明式能力,然后删掉 api.requireAuth 开关 #3963 requireAuth 同款),且check:authorable-surface门禁 (a) 直接拒绝键消失。与 IDataDriver.findStream 没有任何调用方,两个 driver 的实现还正好做了它承诺要避免的事(ADR-0049 enforce-or-remove) #4484(findStream 不设墓碑)的关键区别:DriverInterfaceSchema从未被 parse,而DriverCapabilitiesSchema有真实 parse 路径(DriverConfigSchema.capabilities及 SQL/NoSQL 两个 extend),prescription 有人接收;tsc 通道同样成立(位在IDataDriver.supports处变never,S2 实证)。driver-capabilities-inert-bits-removed(31 个 surface 子句,每句以裸键结尾满足门禁 (b)):driver 是代码不是 stack 树元数据——supports字面量在 driver 类里,DriverConfig是插件 TS 配置面,均不可能落sys_metadata,无源可改写(IDataDriver.findStream 没有任何调用方,两个 driver 的实现还正好做了它承诺要避免的事(ADR-0049 enforce-or-remove) #4484/feat(spec)!: 退役RestServerConfig.openApi31整块 —— declared ≠ enforced,零运行时读者 (#4579) #4764 同理)。stack 树上的近邻datasource.capabilities已于 datasource 账本判定的 20 条死键至今无人处置:三个块整块无人读,其中 readOnly 让一个 shipped 示例的「只读副本」可写(ADR-0049 enforce-or-remove) #4583 单独退役,其 prescription(「pushdown 由 runtime driver 的 supports.* 决定」)在本 PR 后依然成立——现在 supports.* 只剩真话。实施清单
data/driver.zod.ts:31 位retiredKey()+ 头注契约声明;batchSchemaSyncoptional 化data/driver-sql.zod.ts/driver-nosql.zod.ts:TSDoc @example 的 capabilities 块收敛为活位migrations/registry.ts:step17.semantic 追加 D3 条目{}/ mongodb{ batchSchemaSync: true }/ sql{ queryDateGranularity, autonumber: true, batchSchemaSync: false }(sqlite-wasm 继承 sql)data/driver.test.ts重写(31 位逐位 parse 拒绝 pin + prescription 断言 + compiler-API 反空转 pin:34 键形状、退役位类型坍缩为undefined、活位可写);driver-sql/nosql.test.ts、contracts/data-driver/data-engine.test.ts、driver-memory/sql/sqlite-wasm 三包测试同步[RETIRED];spec-changes / upgrade-guide / references(driver、driver-sql、driver-nosql)再生成;api-surface / json-schema.manifest 无键级变化(manifest 只记 def 清单)query-syntax.mdx全文检索节的supports.fullTextSearch旁注改指本次退役;releases/ 未触碰Sabotage(均实跑后还原)
S1 —— schema 复活死位(
streaming改回z.boolean().default(false)):S2 —— driver 字面量复活死位(memory
supports = { streaming: true }):验证(基线 main@e6ac4bdac,含 C10 #4767 与 C17 #4768,合并后全量复验)
check:generated8/8 ✓check:authorable-surface✓(31 行 live→[RETIRED],门禁 (b) 由 D3 semantic 满足;无删行,不触发 authorable-surface 的 tombstone 门禁可被手编基线绕过 —— 删掉基线行就删掉了证据(#4638 / #4643 已两次这样过绿) #4650 三证)check:api-surface✓(导出集合不变——本次是键级收窄,快照对其天然盲,故 compiler-API pin 补位)authorable-surface.json/json-schema.manifest.json/dual-source-exports.baseline.json/docs-import-surface.baseline.json一律先取 main 版再以合并后源码重生成,绝不文本合并。C10 那轮实测确曾被 auto-merge 静默复活 46 行已删基线(修正 commit91130a16即证据);C17 这轮重放后与 main 逐字节一致,C10 的system/EnvironmentArtifact*与 C17 的studio/Actiondef 删键零残留,相对 main 的生成物差异仅剩authorable-surface.json的 31 行(live→[RETIRED],无键增删)与spec-changes.json的本单条目跨仓影响
...super.supports展开 + getter 覆写,多余属性不违反结构子型,继续编译;其显式覆写的 5 个死位与 ControlPlaneProxyDriver 的 off-spec fallback 属清理项 → cloud#1028(未认领)随手发现(Prime Directive #10,均未认领)
runtime-capabilities.mdx整页描述已于 feat(spec)!: remove the dead static capabilities-descriptor cluster #3605 删除的ObjectStackCapabilitiessupports写满 off-spec 键(aggregations/nestedObjects/geoQueries/changeStreams…)—— 从未与 DriverCapabilities 对上 #4782 ——database-loader.test.tsmock 的supports写满 off-spec 键