Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

*Validation 五件套:注释冒领 Spec v2.0.1、condition 形状已漂移——对照 spec 17 triage + 派生/闸门(objectstack#4115) #3103

Closed

Description

@os-zhuang

背景

objectstack#4115 台账 5 条:ScriptValidation / StateMachineValidation / CrossFieldValidation / ConditionalValidation / FormatValidation(data-protocol.ts:862-1006 + union)。三个已核实的事实:

  1. 注释冒领:每个接口都标着 "(ObjectStack Spec v2.0.1)",而装的 spec 是 17.0.0-rc.0 —— 15 个大版本的漂移空间,注释还在替它作保。test(plugin-charts): serve ObjectChart's option-color probe from a double, not the network #4115 的核心论点:错误的 canonicity 注释不是过期文档,是给下一个 agent 埋的错误前提(planted premise)。
  2. spec 17 五个全有活的对应物:@objectstack/spec/data 导出全套 *ValidationSchema(外加 DocumentSchemaValidationSchema / JSONValidationSchema / ValidationRuleSchema —— 本地没有的三个,盘点时一并对照)。
  3. 已确认一处实质漂移:ConditionalValidation.condition: string,spec 是 ExpressionInput envelope({dialect, source})。这与既往「condition 对象当 React child 渲染白屏」是同一缺陷家族。
  4. 有真实运行时消费者:packages/core/src/validation/validators/object-validation-engine.ts —— 不是死类型。引擎若按旧形状评估,spec 17 写法的规则会静默 no-op 或崩:用户要么失去客户端预检(提交后才吃服务端拒绝),要么客户端拦了服务端允许的操作。

开发计划(一个 PR,分步验收)

验收标准

  • 台账 -5(或个别条目转 ALLOW 带理由,总数不变则说明原因)
  • 引擎对 envelope condition 的行为有测试钉住(从静默 no-op → 正确评估或响亮报错)
  • grep "Spec v2\.0\.1" packages/types/src/data-protocol.ts 为空

关联:objectstack#4115(台账)、#3090(判别法与 playbook)、后继 #3104(列身份双读家族 —— 本件是它的热身)。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions