Skip to content

POST /packages/:id/duplicate 对一个启动中的代码包返回 success:false, copiedCount:0, failedCount:0(空 base)—— ADR-0070 D4「复制成可写 base」对代码包是否本就该拷贝其对象? #14451

Description

@hotlong

两次独立的真实进程取证(PM 会话与 objectui#7177 的 dev,各自的 os dev 启动)都撞到同一现象,先记录待 triage,不预设修法。

实测

examples/app-todoos dev --seed-admin,登录后:

POST /api/v1/packages/com.example.todo/duplicate  {"targetPackageId":"com.acme.dupbase","targetName":"Dup Base"}
→ HTTP 200
  {"success":true,"data":{"success":false,"copiedCount":0,"failedCount":0,"targetPackageId":"com.acme.dupbase","copied":[],"failed":[]}}

为什么值得一张卡

packages/rest/src/package-routes.ts:816-818 与 objectui packages-io.ts 的注释都把 duplicate 描述为 ADR-0070 D4 的「duplicate base」手势:只读的代码包由此变成可定制的起点,对象重命名空间、包内引用服务端重写。如果对代码包的对象本就不拷(只拷 sys_metadata 里的 DB 行),那这条手势对它的主要用例是空的,文档与实现至少有一方不对;如果本该拷,那就是缺陷。两种结论都需要一个 pin:对一个启动中的代码包 duplicate 后 copiedCount 等于其对象数(或明确的 422 拒绝,说明该手势只适用于 DB base)。

不做的事

不在 objectui 侧绕:客户端已经按 EMPTY 臂正确报错,问题在服务端语义。

Activity

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