Skip to content

[spec] DataProtocol 新增 validate-only 数据校验操作 —— #4633 裁 D 的契约半边(spec 先行) #6037

Description

@qq9340100

Part of #4633(维护者 2026-08-06 批复裁 D;contract-first 拆分由 cli 车道牵头,本单即 spec 半边,spec 先行)。

背景(压缩自 #4633 的裁决链,完整论证见该单 08-05 决策评论)

import dry run 的手抄预检镜像(packages/rest/src/import-coerce.ts)结构性预测不了写侧判决的整个家族:value shapes(ADR-0104 姿态相关)、format 检查、对象级 validations、状态机。裁 D = 新增 validate-only 协议操作,dry run 直接跑引擎自己的 validateRecord(validate-only,不落盘),预测=判决由构造保证;import-coerce.ts 的手抄镜像随之退役(消费半边在 #4633 本单)。

本单范围(spec 半边)

  • DataProtocol 新增 validate-only 操作的契约声明。形态(独立操作如 validateData vs createData 的 dryRun 旗标)由 spec 座位按契约惯例定夺并留档理由 —— 裁决记录两种形态皆提及,未钉死。
  • ADR-0104 姿态语义要在契约上说清:validate-only 的判决按目标部署的真实姿态(strict / warn-first)给出,与真实写入一致 —— 裁决否决了「无条件 strict」(B 案)。A 案(姿态探针)可作实现内部垫脚石,由承接 dev 自定。

⚠️ 验收硬条款(裁决明令写入)

  • 声明与执行必须同 PR 落地(BatchOptions.validateOnly 声明了 dry-run 但从不实现 —— "预演"会真实落库(PD #10) #4052 镜鉴:batch.zod.tsvalidateOnly 刚作为「承诺了从未实现」被退役,现有 retiredKey 拦截 —— 本次绝不再造同款)。执行半边落在引擎侧(objectql / metadata-protocol),跨域面由 spec 座位与分诊座位按跨域例外路径或再拆分处置 —— 本单如实声明这一点,不预设拆法。
  • 新操作名避开 retiredKey 词表冲突(validateOnly 已在退役词表)。

时序与量级

登记注记

  • 查重:已搜 validate-only / validateData,无同题单(2026-08-06)。
  • 域标签留分诊座位定(预计 domain:spec,「shared contract surfaces have one owner」);本单立单者为 cli 车道 PM(session_01Wbxm29qPKnLf44AbSxizqW),按裁决「拆分由 cli 车道牵头定」执行,不构成认领。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions