Skip to content

Commit 7e1b480

Browse files
baozhoutaoclaude
andauthored
fix(metadata-protocol): 删除回执按 isArtifactBacked 分句,不再对 runtime-only 项谎称回退默认值 (#6336)
deleteMetaItem 的四句成功回执(repository 路径两句 + legacy raw-engine 路径两句) 原本无条件把每一次删除叙述成"摘掉一层 overlay、回落到 artifact 默认值"。对一个 runtime-only 项 —— 管理员新建的 object / flow / hook,没有任何 code package 提供 同名 artifact —— 底下没有默认值可回落:那一行就是这个项的全部,删完它不复存在。 判据沿用 #5265 / PR #5926 在 save 侧的同一个事实:isArtifactBacked,也就是 intent: 'override-artifact' | 'runtime-only' 的来源。新增的方法级绑定替换了 intent 原来那次 inline 调用,分句后 registry 读取次数不增反减。 artifact-backed 两句逐字不变;草稿两句本就没声称过 overlay 或 reset,对两类项都 为真,同样逐字保留。success / reset / seq 一字未动。 反向验证(方向先于运行预测):还原无条件模板 → 预测 6 红 / 9 绿,实测 6 红 / 9 绿。 Fixes #5927 Claude-Session: https://claude.ai/code/session_019Q7oc7ASjh8yxyS3Yz78We Co-authored-by: Claude <noreply@anthropic.com>
1 parent 67e935c commit 7e1b480

4 files changed

Lines changed: 468 additions & 5 deletions

File tree

.changeset/olive-hounds-repeat.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
"@objectstack/metadata-protocol": patch
3+
---
4+
5+
fix(metadata-protocol): 删除回执不再对 runtime-only 项谎称"已重置为 artifact 默认值"
6+
7+
`deleteMetaItem` 的四句成功回执(repository 路径两句 + legacy raw-engine 路径两
8+
句)原本无条件把每一次删除都叙述成"摘掉一层 overlay、回落到 artifact 默认值"。
9+
但对一个 **runtime-only** 项 —— 管理员在 Studio 里新建的 `object` / `flow` /
10+
`hook`,没有任何 code package 提供同名 artifact —— 底下根本没有默认值可回落:那
11+
一行就是这个项的全部,删掉之后它在任何层都不复存在。回执却把管理员指向一个从未
12+
存在过的基线。
13+
14+
判据与 #5265 / PR #5926 在 save 侧用的是同一个:`isArtifactBacked` —— 也就是
15+
`intent: 'override-artifact' | 'runtime-only'` 的来源,本方法内早已算出。新增的
16+
方法级绑定**替换**`intent` 原来的那次 inline 调用,所以分句后 registry 读取次
17+
数不增反减。
18+
19+
| | FROM | TO |
20+
|:---|:---|:---|
21+
| 覆盖了 artifact,删除即回落 | `Customization overlay deleted — <t>/<n> reset to artifact default. [seq=N]` | 逐字不变 |
22+
| runtime-only,删除即消失 | 同上 | `Deleted <type> '<name>' — it no longer exists. [seq=N]` |
23+
| 覆盖了 artifact,本就没有 overlay 行 | `No customization overlay found for <t>/<n> — already at artifact default.` | 逐字不变 |
24+
| runtime-only,本就不存在 | 同上 | `No <type> '<name>' found — nothing to delete.` |
25+
26+
`success` / `reset` / `seq` 三个字段一字未动 —— `message` 没有任何消费方解析,仅
27+
作展示。草稿两句(`Draft discarded — …` / `No pending draft for …`)本来就没有声
28+
称过 overlay 或 reset,对两类项都为真,故逐字保留。legacy raw-engine 路径不写
29+
history、不发 watch 事件,两句因此本就不带 `[seq=…]`,该差异为既有设计,分句未
30+
触碰。

0 commit comments

Comments
 (0)