Skip to content

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

Closed

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. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 6, 2026
  2. 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

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 6, 2026
  4. self-assigned this
    on Aug 7, 2026
  5. baozhoutao commented on Aug 7, 2026

    @baozhoutao
    ContributorAuthor
  6. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 7, 2026
  7. 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

Labels

pm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions