Skip to content

DATA_ACTION_TO_API_OPERATIONbatch: 'bulk' 行在 #5856 之后没有生产者了 —— spec 注释仍称其为「runtime callData action」 #6259

Description

@qq9340100

发现于 #5856 的实施(PR #6244)。观察类:今天没有任何用户路径受影响,故标 finding、不排队、未认领。基线 origin/main @ 8e2bbba24 + PR #6244

事实

packages/spec/src/data/api-derivation.ts:150 的注释把该别名表描述为两套运行时词汇的归一:

 * - runtime `callData` actions (`query`/`find`→`list`, `batch`→`bulk`);
 * - REST operation literals (already canonical, listed for completeness).

表体 packages/spec/src/data/api-derivation.ts:157 里对应有一行 batch: 'bulk'

该表只有两个消费者,两边都送不进 batch:

消费者 送进来的 operation
packages/runtime/src/api-exposure.ts:131(checkApiExposure,唯一调用方是 callData) #5856 删掉 batch 分支后,callData全部入口都只送字面量 query/find/get/create/update/delete/aggregate(枚举见 PR #6244 第 2 节)
packages/rest/src/rest-server.ts:1282(apiAccessDenialFromEnable) enforceApiAccess 的调用点逐个数过:import×4、bulk×4、create×3、update×2、list×2、delete×2、getexport;跨对象 /batch 那条(rest-server.ts:8300)送的也是 'bulk',不是 'batch'

也就是说 batch 这个拼写在归一表里只剩自己:没有任何生产者会把它送进来,而注释仍然告诉读者它是一个「runtime callData action」。同一句陈述还长在 packages/runtime/src/api-exposure.ts:104@param action 里(create/get/query/find/aggregate/batch/…)。

为什么只是观察类

为什么仍值得记

这是 #5856 家族的下一层:一个词汇条目留在归一表里,读者(尤其 AI 作者)会据此认为 batch 是运行时支持的 action 拼写,从而在消费侧写出对它的宽容处理 —— 而 PD #12 正是禁止这种「消费侧兼容一个没有生产者的拼写」。

建议处置(不猜,列选项)

  1. 只改注释:把 batchbulk 从「runtime callData actions」那一档挪走或删除该行文,api-exposure.ts:104@param 同步;表体是否保留 batch: 'bulk' 作为外部调用者的宽容归一,单独判断。
  2. 连表体一起删:按 ADR-0049 enforce-or-remove,batch 既无生产者也无消费者,删掉该行;需要确认没有仓外调用者依赖 DATA_ACTION_TO_API_OPERATION['batch'](它是 spec 的 public export,故这一步须过 check:api-surface 与导出面判断,不是纯注释改动)。

两条的差别在于「这张表是内部归一表,还是给外部调用者的公开归一入口」—— 这是个契约问题,建议由分诊决定,不要顺手删。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions