Skip to content

保存成功的回执一律自称 "customization overlay",包括注册表声明 supportsOverlay:false 的类型(object / flow / action / seed / hook) #5265

Closed

Description

@os-zhuang

观察类发现,由 #5086 的正文点出、在修 #5086(PR #5263)时确认。纯文案,不影响持久化行为,所以单独记录而不搭车。

事实

packages/metadata-protocol/src/protocol.ts 的 saveMetaItem 成功回执只有两种句式,都写死了 "customization overlay":

Saved customization overlay (org=<id>, state=active) — type=…, name=… [seq=N]
Saved customization overlay (env-wide, state=active) — type=…, name=… [seq=N]

而 DEFAULT_METADATA_TYPE_REGISTRY 里有一批类型明确声明 supportsOverlay: false,却按设计可以运行时写入:object、field、hook、seed、mapping、flow、action。对这些类型,一次全新创建(不是任何东西的 overlay)也会被回执成 "saved a customization overlay"。

真实 boot 实测(showcase,pnpm dev -- --fresh):

PUT /api/v1/meta/view/rc3_probe_view
→ 200 {"success":true,…,"message":"Saved customization overlay (env-wide, state=active) — type=view, name=rc3_probe_view [seq=1]"}

view 恰好是 supportsOverlay: true,回执没问题;把同一句话发给 object / flow 的新建就不成立了。

为什么不是"顺手改一下"

supportsOverlay 与 allowOrgOverride 在 spec 的 TSDoc 里是两件事:前者描述 loader 的合并能力,后者是运行时写入的许可,而且只有后者被明确指定为 403 not_overridable 的判据。所以这句回执要说清楚的是三件事之一 —— 覆盖了一个 artifact / 新建了一条 DB-only 记录 / 写了一条 per-org 行 —— 而这三者在写路径里是能分辨的(isArtifactBacked + organizationId 已经算过)。也就是说这是"回执可以说真话但没说"的问题,不是术语挑刺。

#5086 关心的那一半(job / agent 根本不该写成功)已由 PR #5263 修掉;剩下的就是这句措辞。

建议(留给 triage)

按已算出的事实分句:artifact-backed ⇒ Saved customization overlay;无 artifact 的新建 ⇒ Created <type> '<name>';org 维度照旧附在括号里。改动面是 2 处 message 模板 + 对应断言。

参考:#5086 / PR #5263。

Activity

  1. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    ContributorAuthor

    发现分诊轮:晋级 pm:queue + domain:engine(摘 finding)。理由:「回执可以说真话但没说」—— 三种事实(overlay / 新建 DB-only / per-org 行)在写路径里已被算出(isArtifactBacked + organizationId),按正文建议分句即可,改动面 2 处 message 模板 + 断言,无契约变更、无拍板点。

    ⚠️ 同文件串行提醒:与 #5264(不可达分支)、#5532(overlay 读裸 catch)同落 packages/metadata-protocol/src/protocol.ts,派发须跨轮串行;若与 #5264 同一 dev 顺序消化更省(相邻代码)。

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. self-assigned this
    on Aug 6, 2026
  3. baozhoutao commented on Aug 6, 2026

    @baozhoutao
    Contributor

    认领:PM 循环第 4 轮追加(engine-core 车道;同文件前序 #5264/#5532/#5841 均已合入,protocol.ts 当前无在飞)
    会话:session_019Q7oc7ASjh8yxyS3Yz78We
    分支:claude/issue-5265-save-receipt-truthful-wording
    Worktree:objectstack-issue-5265
    域:domain:engine-core
    文件面:packages/metadata-protocol/src/protocol.ts(saveMetaItem 两处成功 message 模板)+ 既有断言翻面(全仓扫 "Saved customization overlay" 同语义 pin)+ .changeset/*.md。⛔ 不碰 loadMetaFromDb(object 分支 #4636 决策箱在途)与 getMetaItemLayered 区域。

    前提复核:今晨 07:1xZ 实测两处模板仍无条件写 "Saved customization overlay"(当时位于 :7852-7853,protocol.ts 今日已 6 合并,行号必漂,内容定位)。


    Generated by Claude Code

  4. baozhoutao commented on Aug 6, 2026

    @baozhoutao
    Contributor

    复核通过,ACCEPT(engine-core 车道 PM,第 4 轮):交付于 PR #5926,CI 23 项全绿,转 ready 入合并队列。

    验收要点:


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions