fix(spec): #3207 收尾 — 补上 enable.trash/mru 退役缺失的 ADR-0087 迁移面,墓碑改指 #3146 - #4734
Merged
Merged
Conversation
…h/mru removal + repoint tombstones at #3146 (#3207) The 16.x removal of the dead object capability flags (PR #3414) tombstoned enable.trash / enable.mru in the .strict() capabilities block but registered no ADR-0087 D2 conversion, and its prescriptions pointed at #1893 — closed 2026-07-24. Per the #3207 ruling (2026-08-02): soft delete is parked at #3146, and the retirement follows the full spec-property-retirement kit. - New conversion `object-enable-trash-mru-removed` (protocol 17, retiredFromLoadPath): stored 16.x rows replay clean through applyConversionsToStoredItem instead of flagging metadata_spec_invalid on every rehydration (#3903 invariant — chain-owned history is not a current-contract violation), and `os migrate meta --from 16` rewrites authored sources. Wired into MIGRATIONS_BY_MAJOR[17] with rationale; fixture proves the strip is surgical (surviving `searchable` untouched). - Tombstones now name #3146 (trash) and the `os migrate meta --from 16` rewrite (both); the restore legacy-apiMethod guidance and the api-derivation note drop the dead #1893 pointer. - remove-enable-trash-mru changeset flipped minor -> major: v17 is the breaking window and the guard stands aside in pre-mode; a breaking removal listed under "Minor Changes" in the compiled CHANGELOG would mislead upgrading agents. - Pin tests: prescription must name #3146 + the migrate command and must not resurrect #1893; stored-row replay strips exactly the two keys. Gates: spec build green; check:generated all 8 green after gen:spec-changes/gen:upgrade-guide; liveness/empty-state/strictness-ledger/ skill gates green; spec 7400, cli 581, metadata-protocol 231 tests pass; check:i18n 9/9 in sync (zero drift). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 107 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
os-zhuang
marked this pull request as ready for review
August 3, 2026 01:08
os-zhuang
enabled auto-merge
August 3, 2026 01:09
This was referenced Aug 3, 2026
Closed
os-zhuang
pushed a commit
that referenced
this pull request
Aug 3, 2026
…零运行时读者 (#4579) 按 2026-08-02 委托裁决(remove)整块删除 OpenApi31ExtensionsSchema / CallbackSchema / OpenApiWebhookEventSchema + RestServerConfig.openApi31 键: normalizeConfig 只读 api/crud/metadata/batch/routes,/openapi.json 由预生成 契约 enrich 而来,gen:openapi 零 webhook/callback 引用 —— 作者写进 openApi31.webhooks 的定义从未出现在任何服务出的文档里(ADR-0049 假合规)。 三仓(objectstack / cloud@5df2c699b / objectui@785b8a5d4)import 级零消费者。 - rest-server.zod.ts:三 schema 删除留指路注释;openApi31 走 retiredKey() 墓碑(非 strict schema,裸删会静默剥离 —— requireAuth #3963 同款) - conversion 评估(#4734 先例):RestServerConfig 是插件 TS 配置面, stack 树的 api 块只声明四个 scoping/auth 键,sys_metadata 不可能携带 openApi31,无源可改写 ⇒ 不登记 D2 conversion,登记 D3 semantic migration rest-server-openapi31-block-removed(validateOnly 先例) - authorable-surface:14 行随三个整 def 出账(#4650 门禁判定 def no longer emitted,输出见 PR);api/RestServerConfig:openApi31 → [RETIRED] - json-schema.manifest.json:三 def 删行(#2978 蓄意移除通道) - api-surface.json:./api 六行删除(3 const + 3 type) - 回归 pin(rest-server.test.ts):compiler-API 断言全入口不再命名六个 导出名(防空转守卫)+ 运行时命名空间一致性;墓碑 sabotage(authored openApi31 → 拒绝且文案指向本单;正常键仍过);S1 sabotage 实测两 pin 红 - changeset:@objectstack/spec major(删已发布导出名 + 键,TS2305); 同 major 内吸收 #4572 的 WebhookEvent→OpenApiWebhookEvent 改名 (webhook-dual-source-api-side.md 的 TO 指引同步更正) - 严格性台账:check:strictness-ledger 实跑 PASS,api/ 行属 coarse 汇总 层(非门禁校验面),不动 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
os-zhuang
pushed a commit
that referenced
this pull request
Aug 3, 2026
…re 形,./cloud re-export (#4740) `EnvironmentArtifact(Input|Schema)` 曾由 `./cloud` 与 `./system` 各自导出一个 声明:cloud 侧是活的 wire 形(checksum 为 64 位 hex 字符串、metadata = ObjectStackDefinitionSchema),全仓唯一 runtime Zod parse (packages/metadata/src/plugin.ts `_parseAndRegisterArtifact`)与 cloud 仓 3 处 type import 都用它;system 侧是文档化「v0」(checksum 对象、分类袋 metadata、内联 functions[]、必填 manifest、payloadRef 保留位),三仓 (objectstack / cloud / objectui)import 级实测零代码消费者、从未有 producer 产出过。两侧互相解析不过。按维护者裁决(#4740,路线 A′)收敛: - system/environment-artifact.zod.ts 重写为活 wire 形(唯一声明); Sha256Digest(Schema) 随声明搬入 ./system(./cloud 仍导出) - cloud/environment-artifact.zod.ts 改为纯 re-export(同一符号,两个入口) - 从未实现的 functions / manifest / payloadRef 走 retiredKey() tombstone 退役(ADR-0049):tsc 处 never、parse 处 prescription;无 ADR-0087 conversion —— 信封是传输形状,不落 sys_metadata、不在 conversion walker 的 stack 树上,存量行不可能携带(#4734 先例逐条评估,论证见 PR) - v0 家族 16 个导出名(8 const + 8 type)自 ./system 移除;9 个 system/EnvironmentArtifact* def 停止发布(json-schema.manifest.json #2978 蓄意删键;authorable-surface 46 行经 #4650 门禁 7 组「def no longer emitted」自证删除) - 符号身份 pin(compiler API,exports-map 枚举 16 入口 + 防空转守卫): 三名字全入口唯一解析到 src/system/environment-artifact.zod.ts;S1 (重加被删名)/ S2(cloud 侧新声明的禁止路线)sabotage 均红 - #4666 盲区:checksum 对象→字符串是 key 级门禁不可见的类型变更,parse pin 钉住(旧对象形 → 拒;64 位 hex 字符串 → 过),changeset 显式警示 - packages/metadata runtime parse 一字未动(收敛目标即其已解析形状), 14 文件 290 测试全绿 - north-star.mdx §6.3 锚点同步(单一声明 + re-export;字段清单改为 wire 形) - 基线 6 → 3(dual-source-exports.baseline.json 删 3 行) - changeset:@objectstack/spec major(移除 16 个已发布导出名,TS2305), 零元数据迁移;strictness-ledger 实跑零变化 Fixes #4740 Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com>
os-zhuang
pushed a commit
that referenced
this pull request
Aug 3, 2026
…re 形,./cloud re-export (#4740) `EnvironmentArtifact(Input|Schema)` 曾由 `./cloud` 与 `./system` 各自导出一个 声明:cloud 侧是活的 wire 形(checksum 为 64 位 hex 字符串、metadata = ObjectStackDefinitionSchema),全仓唯一 runtime Zod parse (packages/metadata/src/plugin.ts `_parseAndRegisterArtifact`)与 cloud 仓 3 处 type import 都用它;system 侧是文档化「v0」(checksum 对象、分类袋 metadata、内联 functions[]、必填 manifest、payloadRef 保留位),三仓 (objectstack / cloud / objectui)import 级实测零代码消费者、从未有 producer 产出过。两侧互相解析不过。按维护者裁决(#4740,路线 A′)收敛: - system/environment-artifact.zod.ts 重写为活 wire 形(唯一声明); Sha256Digest(Schema) 随声明搬入 ./system(./cloud 仍导出) - cloud/environment-artifact.zod.ts 改为纯 re-export(同一符号,两个入口) - 从未实现的 functions / manifest / payloadRef 走 retiredKey() tombstone 退役(ADR-0049):tsc 处 never、parse 处 prescription;无 ADR-0087 conversion —— 信封是传输形状,不落 sys_metadata、不在 conversion walker 的 stack 树上,存量行不可能携带(#4734 先例逐条评估,论证见 PR) - v0 家族 16 个导出名(8 const + 8 type)自 ./system 移除;9 个 system/EnvironmentArtifact* def 停止发布(json-schema.manifest.json #2978 蓄意删键;authorable-surface 46 行经 #4650 门禁 7 组「def no longer emitted」自证删除) - 符号身份 pin(compiler API,exports-map 枚举 16 入口 + 防空转守卫): 三名字全入口唯一解析到 src/system/environment-artifact.zod.ts;S1 (重加被删名)/ S2(cloud 侧新声明的禁止路线)sabotage 均红 - #4666 盲区:checksum 对象→字符串是 key 级门禁不可见的类型变更,parse pin 钉住(旧对象形 → 拒;64 位 hex 字符串 → 过),changeset 显式警示 - packages/metadata runtime parse 一字未动(收敛目标即其已解析形状), 14 文件 290 测试全绿 - north-star.mdx §6.3 锚点同步(单一声明 + re-export;字段清单改为 wire 形) - 基线 6 → 3(dual-source-exports.baseline.json 删 3 行) - changeset:@objectstack/spec major(移除 16 个已发布导出名,TS2305), 零元数据迁移;strictness-ledger 实跑零变化 Fixes #4740 Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal
pushed a commit
to akarma-synetal/framework
that referenced
this pull request
Aug 3, 2026
…零运行时读者 (objectstack-ai#4579) (objectstack-ai#4764) 按 2026-08-02 委托裁决(remove)整块删除 OpenApi31ExtensionsSchema / CallbackSchema / OpenApiWebhookEventSchema + RestServerConfig.openApi31 键: normalizeConfig 只读 api/crud/metadata/batch/routes,/openapi.json 由预生成 契约 enrich 而来,gen:openapi 零 webhook/callback 引用 —— 作者写进 openApi31.webhooks 的定义从未出现在任何服务出的文档里(ADR-0049 假合规)。 三仓(objectstack / cloud@5df2c699b / objectui@785b8a5d4)import 级零消费者。 - rest-server.zod.ts:三 schema 删除留指路注释;openApi31 走 retiredKey() 墓碑(非 strict schema,裸删会静默剥离 —— requireAuth objectstack-ai#3963 同款) - conversion 评估(objectstack-ai#4734 先例):RestServerConfig 是插件 TS 配置面, stack 树的 api 块只声明四个 scoping/auth 键,sys_metadata 不可能携带 openApi31,无源可改写 ⇒ 不登记 D2 conversion,登记 D3 semantic migration rest-server-openapi31-block-removed(validateOnly 先例) - authorable-surface:14 行随三个整 def 出账(objectstack-ai#4650 门禁判定 def no longer emitted,输出见 PR);api/RestServerConfig:openApi31 → [RETIRED] - json-schema.manifest.json:三 def 删行(objectstack-ai#2978 蓄意移除通道) - api-surface.json:./api 六行删除(3 const + 3 type) - 回归 pin(rest-server.test.ts):compiler-API 断言全入口不再命名六个 导出名(防空转守卫)+ 运行时命名空间一致性;墓碑 sabotage(authored openApi31 → 拒绝且文案指向本单;正常键仍过);S1 sabotage 实测两 pin 红 - changeset:@objectstack/spec major(删已发布导出名 + 键,TS2305); 同 major 内吸收 objectstack-ai#4572 的 WebhookEvent→OpenApiWebhookEvent 改名 (webhook-dual-source-api-side.md 的 TO 指引同步更正) - 严格性台账:check:strictness-ledger 实跑 PASS,api/ 行属 coarse 汇总 层(非门禁校验面),不动 Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal
pushed a commit
to akarma-synetal/framework
that referenced
this pull request
Aug 3, 2026
…re 形,./cloud re-export (objectstack-ai#4740) (objectstack-ai#4767) * feat(spec)!: EnvironmentArtifact 信封收敛为单一声明 —— C10 双源清账,./system 持活 wire 形,./cloud re-export (objectstack-ai#4740) `EnvironmentArtifact(Input|Schema)` 曾由 `./cloud` 与 `./system` 各自导出一个 声明:cloud 侧是活的 wire 形(checksum 为 64 位 hex 字符串、metadata = ObjectStackDefinitionSchema),全仓唯一 runtime Zod parse (packages/metadata/src/plugin.ts `_parseAndRegisterArtifact`)与 cloud 仓 3 处 type import 都用它;system 侧是文档化「v0」(checksum 对象、分类袋 metadata、内联 functions[]、必填 manifest、payloadRef 保留位),三仓 (objectstack / cloud / objectui)import 级实测零代码消费者、从未有 producer 产出过。两侧互相解析不过。按维护者裁决(objectstack-ai#4740,路线 A′)收敛: - system/environment-artifact.zod.ts 重写为活 wire 形(唯一声明); Sha256Digest(Schema) 随声明搬入 ./system(./cloud 仍导出) - cloud/environment-artifact.zod.ts 改为纯 re-export(同一符号,两个入口) - 从未实现的 functions / manifest / payloadRef 走 retiredKey() tombstone 退役(ADR-0049):tsc 处 never、parse 处 prescription;无 ADR-0087 conversion —— 信封是传输形状,不落 sys_metadata、不在 conversion walker 的 stack 树上,存量行不可能携带(objectstack-ai#4734 先例逐条评估,论证见 PR) - v0 家族 16 个导出名(8 const + 8 type)自 ./system 移除;9 个 system/EnvironmentArtifact* def 停止发布(json-schema.manifest.json objectstack-ai#2978 蓄意删键;authorable-surface 46 行经 objectstack-ai#4650 门禁 7 组「def no longer emitted」自证删除) - 符号身份 pin(compiler API,exports-map 枚举 16 入口 + 防空转守卫): 三名字全入口唯一解析到 src/system/environment-artifact.zod.ts;S1 (重加被删名)/ S2(cloud 侧新声明的禁止路线)sabotage 均红 - objectstack-ai#4666 盲区:checksum 对象→字符串是 key 级门禁不可见的类型变更,parse pin 钉住(旧对象形 → 拒;64 位 hex 字符串 → 过),changeset 显式警示 - packages/metadata runtime parse 一字未动(收敛目标即其已解析形状), 14 文件 290 测试全绿 - north-star.mdx §6.3 锚点同步(单一声明 + re-export;字段清单改为 wire 形) - 基线 6 → 3(dual-source-exports.baseline.json 删 3 行) - changeset:@objectstack/spec major(移除 16 个已发布导出名,TS2305), 零元数据迁移;strictness-ledger 实跑零变化 Fixes objectstack-ai#4740 Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com> * fix(docs): 头注措辞避开行首 `import` —— 生成器按行成段,MDX 把该行当 ESM 解析(Build Docs 红) build-docs.ts 把 docblock 按行拆成独立段落,`system/environment-artifact.zod.ts` 头注中断行后有一行以 `import ` 开头,MDX/acorn 将其解析为 ESM import 语句, `content/docs/references/system/environment-artifact.mdx` SyntaxError。改写措辞 (「so the chosen entry point can never change the shape a consumer gets」), 重生成后两个 environment-artifact.mdx 均无行首 `import `/`export `(代码围栏内 的 TypeScript Usage 示例不受影响),`pnpm --filter @objectstack/docs build` exit 0,`check:docs` 248 文件同步。 生成器坑本体(docblock 行成段 + 行首 import 炸 MDX,objectstack-ai#4696 家族)记入 PR 顺带 发现,不在本 PR 修生成器。 Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com> * chore(spec): rebase 到含 objectstack-ai#4764 的 main 后全量重生成 —— 蓄意删键重放 + 生成物从新基重算(objectstack-ai#4535 §7) os-regen merge driver 对 json-schema.manifest.json / authorable-surface.json / api-surface.json 不做文本合并,rebase 回退了蓄意手删;本 commit 重放:manifest 删 system/EnvironmentArtifact* 9 键 + system/Sha256Digest 在列,authorable-surface 删 46 行(objectstack-ai#4650 门禁以新 merge-base 695cfbd 重新自证,7 组「def no longer emitted」),api-surface / spec-changes / upgrade-guide / docs 全量重生成。 复验:check:generated 8/8、check:dual-source-exports(基线 6 → 3)、 strictness-ledger / variant-docs / liveness / empty-state 全绿;spec 测试 292 文件 / 7348 全过;全仓 typecheck 122/122;docs 产物无行首 import/export (Build Docs 措辞修复在 rebase 后仍生效)。 Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #3207
现场核实:退役主体已由 PR #3414 落地(2026-07-24 合入)
动手前按纪律重验现场,发现 issue 的 7 步主体工作已在 PR #3414(commit
88346ba58)合入 main:schema 移除 +.strict()化、CAPABILITIES_RETIRED_KEY_GUIDANCE墓碑、~45 处 setter 删除、liveness ledger 两行删除 + README 计数表、object.form.ts两行删除 + 4 locale i18n 再生、docs/skills 清理、changeset(remove-enable-trash-mru,已被 rc 消费)。issue 未随之关闭,PM 派单时未察觉。但对照 2026-08-02 裁决与
spec-property-retirement清单,已落地实现存在两处实质缺口,本 PR 只做这两件事(不重复 #3414 的工作):缺口一:未登记 ADR-0087 D2 conversion(存量数据被误伤)
ObjectCapabilities已.strict(),而退役时没有登记任何 conversion。后果:sys_metadata行永久报警。带enable.trash的旧行经applyConversionsToStoredItem重放后键仍在,registry 的 spec 一致性诊断每次 rehydration 都记metadata_spec_invalid—— 违反 [P2] The spec contract stops at authored source — stored metadata is rehydrated unparsed, unconverted, and ungated #3903 的不变式(该诊断的前提是「链已收编全部历史形状,报警即真实的现行契约违规」);os migrate meta --from 16无法改写作者源码,与墓碑处方的 house style(第 5 条:仅当 conversion 改写源码时才引用该命令)无法闭环。本 PR 新增
object-enable-trash-mru-removed(protocol 17,retiredFromLoadPath: true,stripKeys嵌套下钻,照datasource-inert-blocks-removed先例),接入CONVERSIONS_BY_MAJOR[17]与MIGRATIONS_BY_MAJOR[17].conversionIds+ rationale;fixture 证明剥离是外科式的(同块存活键searchable原样保留),expectedNotices: 2(按键计数)。缺口二:墓碑指向已关闭的 #1893(违背 2026-08-02 裁决)
裁决原文:「
UNKNOWN_KEY_GUIDANCE墓碑指向 #3146 作为立项位」。而 #3414 落地的墓碑指向 #1893 —— 该 issue 已于 2026-07-24 关闭,作者撞上墓碑后顺着指针只能找到一个已完结的审计杂务单,而非软删除的立项位。本 PR 修正:trash墓碑 → 指向 Implement soft delete (recycle bin):enable.trash/softDeleteare spec-only with zero runtime readers #3146(parked)+os migrate meta --from 16处方;mru墓碑 → 去掉死指针(MRU 无立项单,保留「若实现则以 live enforced flag 回归,ADR-0049」)+ migrate 处方;restorelegacy-apiMethod guidance 与api-derivation.ts注释中的 [P2] Aspirational config — prune or mark experimental #1893 → Implement soft delete (recycle bin):enable.trash/softDeleteare spec-only with zero runtime readers #3146(同一退役面上的两处死指针,一并修正)。证据
1. 三处零 reader 重验(不引立单结论,2026-08-03 实跑)
宽松
\b(trash|mru)\b的其余命中逐一核过:全是 icon 名(icon: 'trash-2')、注释、与本键无关的保留权限位allowRestore。objectui/cloud 兄弟仓本容器无检出;键已删除 10 天且 main 全绿,若有消费者早已显形。2. 墓碑 sabotage(dist 实跑)
作者写
enable: { trash: false, mru: true }→ 解析拒绝,全文:存活键防「拒绝一切」:
{ searchable: true, trackHistory: true, apiEnabled: true, activities: false }→ 正常通过。链路行为(dist 实跑):
applyConversionsToStoredItem('object', {…enable: {trash:false, mru:false, searchable:true}})→enable: {"searchable":true},notices =object-enable-trash-mru-removed @ objects[0].enable.trash / .mru(2 条);3. Retirement 路径门禁(全部实跑捕获退出码,无 tail 掩码)
#4650 门禁说明(PM 现势修正一的核实结论):
authorable-surface.json对嵌套enable块只记 一行不透明的data/Object:enable,不逐键展开 —— 两键从未有过基线行,本次 diff 里authorable-surface.json零变更,#4650 检查 (c) 不涉及、[RETIRED]转换不适用(该机制属retiredKey()墓碑路线;本键走的是.strict()+ guidance map 路线,skill §2 判则下 ledger 行删除与基线行不存在均为正确形状)。check:authorable-surface实跑 PASS 为准。4. 测试与类型
新增 pin:处方必须含
#3146与os migrate meta --from 16、必须不再含#1893;stored 行重放恰剥两键。未做全仓 typecheck:本 PR 未删任何 setter(#3414 已删完,上文 grep 证零残留),spec 导出面零变化(check:api-surfacePASS),全仓扫描无增量信息,按资源纪律 scoped。5. i18n 逐行证明
本 PR 不触
object.form.ts(#3414 已删两行并再生 4 locale)。pnpm check:i18n实跑:9 包全部 in sync,diff 为空 —— 「只含目标键」在此退化为「零 diff」,严格满足。6. Changeset 定级(issue 旧第 7 步的纠正)
issue 第 7 步的「minor(launch-window 政策,check-changeset-no-major)」已过时:现处 v17 pre/rc 窗口(
.changeset/pre.jsonmode: "pre"实测),check-changeset-no-major.mjs在 pre-mode 自动让行(脚本内注明 RC EXEMPTION,无需allow-major标签)。据此:remove-enable-trash-mru.md由 minor 翻正为 major:破坏纯在作者侧(ObjectSchema.create()手写对象),运行时对存量元数据经链路重放为无损剥离;但它就是 v17 窗口内的 breaking 移除(裁决原文「v17 major 窗口内落地」,C9/C12/C14/app.areas[] 的 visible / requiredPermissions 是 fail-open 的访问闸门 —— 服务端从不走 areas(ADR-0049,v17 限时) #4651 同窗先例均 major),编译 CHANGELOG 时列在 Minor Changes 会误导升级 agent。pre-mode 下改动已消费 changeset 的定级仅影响pre exit后的终版计算(lockstep 取最高级,已有其他 major,机械上无副作用),语义上归位。migration 段同步补上os migrate meta --from 16与 Implement soft delete (recycle bin):enable.trash/softDeleteare spec-only with zero runtime readers #3146 指针。notify-source-shape-conversion先例定 patch(object-enable-trash-mru-migration-surface)。7. 裁决引用
#3146 本 PR 未触碰(维持 parked,仅在墓碑/注释中引用)。
content/docs/releases/未触碰。🤖 Generated with Claude Code
https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
Generated by Claude Code