Skip to content

deleteMetaItem 的四句回执一律说 "customization overlay … reset to artifact default",包括根本没有 artifact 可回退的 runtime-only 项 #5927

Description

@baozhoutao

观察类发现,在修 #5265(保存回执一律自称 "customization overlay")时于同一文件的 delete 侧看到。纯文案,不影响持久化或枚举行为,所以单独记录、不搭车。

事实

packages/metadata-protocol/src/protocol.ts(内容定位,行号会漂)的 deleteMetaItem 有四句回执,全部无条件把这次删除叙述成"移除一层 overlay、回到 artifact 默认值":

10213:  `No customization overlay found for ${request.type}/${request.name} — already at artifact default.`
10286:  `Customization overlay deleted — ${request.type}/${request.name} reset to artifact default. [seq=${result.seq}]`
10343:  `No customization overlay found for ${request.type}/${request.name} — already at artifact default.`
10363:  `Customization overlay deleted — ${request.type}/${request.name} reset to artifact default.`

但对一个 runtime-only(无 artifact 背书)的项 —— 例如一次全新创建的 object / flow / hook —— 删除后并不存在什么 "artifact default" 可以回退:那一行就是这个项的全部,删掉之后它不复存在。回执却告诉调用方"已重置为 artifact 默认值",这与 #5265 在 save 侧修掉的是同一类问题(回执可以说真话但没说),只是换到了 reset 路径。

事实是现成的,不需要新查询

同一个方法里已经算过这条事实 —— delete 的 repo 路径就用它决定 intent:

intent: this.isArtifactBacked(singularTypeForRepo, request.name)
    ? 'override-artifact'
    : ...

所以分句的成本和 #5265 一样:改 message 模板 + 对应断言,零新增读路径。

与 #5079 的关系(不是它的子问题)

#5079(deleted overlay 仍在 /meta listing)碰的是同一条 DELETE 的用户可见面,但它的完成判据是"list / get / dispatch 三者立即一致",与这句措辞无关 —— 修完 #5079 这四句仍然会对 runtime-only 项说假话,修完这个也不会让 #5079 少做一件事。故按独立 issue 记录,不作为 #5079 的 sub-issue。两者若被同一个人接走,可以一并处理。

未做判断

严重性留给 triage:今天没有用户因此丢数据(删除本身是对的,#5079 那条 listing 不一致才是行为问题),但 "reset to artifact default" 是一句会被 Studio toast 原样展示的话,一个刚删掉自己新建对象的管理员会据此以为还有个默认值在。

参考:#5265(save 侧同族,已修)/ PR #5926 / #5079。

Activity

  1. claude commented on Aug 6, 2026

    @claude
    Contributor

    发现分诊轮(#4949 纪律):晋级 pm:queue,摘 finding。域维持 domain:engine-core(落 packages/metadata-protocol,按域表归 engine-core 家族)。

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


    Generated by Claude Code

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

    @baozhoutao
    ContributorAuthor
  4. baozhoutao commented on Aug 7, 2026

    @baozhoutao
    ContributorAuthor

    ACCEPT(执行席 PM 验收,第 12 轮)

    PR #6336 验收通过,已翻 ready + auto-merge(CI 21 项全绿)。记档:① 四句回执按 isArtifactBacked 分句说真话,#5926 先例口径;实现形态是方法级 hoist 而非直接复用(两处既有计算分别块作用域受限/inline 于实参,均不可达回执点)—— 净 registry 调用数减一,issue 的零新增读路径判断成立;② 反向验证 6 红/9 绿逐条命中,绿半边(artifact-backed 逐字节不变 + 草稿两句 + envelope pin)是「分句而非一刀切」的判据本体;③ toast 前提据实证伪:objectui 全部路径丢弃该 message,唯一活体读者是 REST 信封直连客户端;④ 给 #5079 接手人的交底:其 repro transcript 里逐字记录的 DELETE 回执(rg_clean 为 runtime-only)合入后将读作 Deleted action 'rg_clean' — it no longer exists. —— 不改其任何判据,派发 #5079 时须一并告知(本条即记录点)。


    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