Skip to content

Question: 边界设计问题-Archive 发现本机 Runtime overlay 在归档边界不可复用,因此 Comet 按规则把状态退回 Verify,要求对同一候选重新生成 Runtime receipts。 #313

Description

@LDmoxeii

❓ Question

Archive 发现本机 Runtime overlay 在归档边界不可复用,因此 Comet 按规则把状态退回 Verify,要求对同一候选重新生成 Runtime receipts。

🎯 Topic

None

🔍 What you tried

这是 Comet 的可移植状态与本机执行状态没有对齐导致的安全回退,不是代码或测试失败。

Comet Native 同时维护两层状态:

  • Portable statedocs/comet/changes/.../comet-state.yaml,记录 Change 阶段、验收结果和 Verifier 结论,可以进入 Git。
  • Local Runtime overlay.comet/runtime/native/.../state.json,记录本机实际执行过的检查、进程和 receipts,不进入 Git,也不能跨设备直接信任。

这次过程是:

  1. Verifier 通过时,portable state 与本机 receipts 是对齐的。
  2. 执行 archive --dry-run --finish pull-request 后,Comet 持久化了 finish=pull-request,portable stateVersion 随之增加。
  3. 随后正式 Archive 时,本机 overlay 仍绑定旧的 stateVersion,因此被判定为 stale
  4. Comet 无法证明“当前 Archive 状态对应的仍是刚才验证过的本机候选”,于是采取保守策略:
    • 不复用之前的 Runtime receipts;
    • 不直接 Archive;
    • 把同一候选退回 Verify;
    • 要求重新生成 receipts。

所以准确地说:

  • 候选代码没有变化
  • 先前的验收没有发现新问题
  • 与不执行下游项目验证无关
  • --finish 预览改变 portable state 后,本机 overlay 没有同步更新导致的状态版本失配。

从行为上看,这里很可能是 Comet Runtime 的一个边界设计缺陷:finish 选择只是归档收尾配置,不应自动使已经通过的候选验证失效。更合理的实现应当是同步更新 overlay 的 basedOnStateVersion,或者明确允许仅 workspace.finish 变化时复用原验证结果。当前版本选择了最保守的重新验证策略。

🖥️ Environment

- OS:Windows
- Shell:powershell
- Node:22
- Install scope: global
- Skill language: zh
- Target AI platform(s): codex

🧩 Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    Status
    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions