Blocked-by: objectstack-ai/objectstack#4463(PR #4715 合并前不要派发)
#4463 P1 把作者时规则接上了运行时写入闸门(saveMetaItem 的 active 保存 + promoteDraftForPublish),但只挡 flow 类型,且只跑不需要全栈快照的规则族。这是 PM 在派发时刻意收窄的,不是遗漏 —— 本单是它记账下来的下一步。
为什么 P1 停在 flow(裁定理由,接手前先读)
object 写入是产品里最热的元数据路径(Studio 每次改字段都走它),一个误判 422 的爆炸半径是租户唯一的编辑面 —— 严格劣于暂时留一个覆盖缺口。#4463 的全部验收标准也都是 flow。所以 P1 的选择是:先上 flow,等闸门跑过真实流量、有了误报预算再放宽。
本单要付的代价就是那份误报预算。 不要把它当成「把 runtimeTypes 多写一个值」的一行改动交付。
范围
明确不在本单
- advisory findings 进响应 + objectui 渲染 —— 见另一单
validateSecurityPosture 合进统一表(它在 object 上已经被 plugin-security 的 registerAuthoringGate 挡着,是合并不是缺口)
关联
#4463(P1 本体)、PR #4715、#4409 / #4445(CLI 三命令 registry)、ADR-0033、ADR-0087
Blocked-by: objectstack-ai/objectstack#4463(PR #4715 合并前不要派发)#4463 P1 把作者时规则接上了运行时写入闸门(
saveMetaItem的active保存 +promoteDraftForPublish),但只挡flow类型,且只跑不需要全栈快照的规则族。这是 PM 在派发时刻意收窄的,不是遗漏 —— 本单是它记账下来的下一步。为什么 P1 停在 flow(裁定理由,接手前先读)
object 写入是产品里最热的元数据路径(Studio 每次改字段都走它),一个误判 422 的爆炸半径是租户唯一的编辑面 —— 严格劣于暂时留一个覆盖缺口。#4463 的全部验收标准也都是 flow。所以 P1 的选择是:先上 flow,等闸门跑过真实流量、有了误报预算再放宽。
本单要付的代价就是那份误报预算。 不要把它当成「把
runtimeTypes多写一个值」的一行改动交付。范围
object类型上门:RUNTIME_OBJECT_WRITES_P2标注的那批规则接进运行时 surfaceRUNTIME_NEEDS_FULL_SNAPSHOT那批:构造完整 registry 快照([runtime/metadata] 作者时规则只存在于 CLI:Studio/REST/MCP 的运行时授权面是第四扇门,26 条规则一条不跑——#4409 修完后最大的敞口 #4463 D2 的选项 a),让读全栈集合(pages / dashboards / nav / translations / seeds)的规则也能在运行时门上跑。注意 [runtime/metadata] 作者时规则只存在于 CLI:Studio/REST/MCP 的运行时授权面是第四扇门,26 条规则一条不跑——#4409 修完后最大的敞口 #4463 正文记的那个反直觉红利:运行时宇宙比 CLI 的单包视图更全,validateCapabilityReferences那类「可能由别的包提供」的 advisory 对冲在活的 registry 面前是可判定的 —— 但把 advisory 升级成 gating 是严重性变更,要单独一个 PR,不要搭本单顺风车明确不在本单
validateSecurityPosture合进统一表(它在 object 上已经被 plugin-security 的registerAuthoringGate挡着,是合并不是缺口)关联
#4463(P1 本体)、PR #4715、#4409 / #4445(CLI 三命令 registry)、ADR-0033、ADR-0087