Skip to main content
comet archive 是归档阶段的稳定、确定性入口。真实归档会把通过验证且已获最终确认的 change 合并 delta spec 到主 spec,并移入 OpenSpec archive 目录;--dry-run 可以在最终确认前安全预览。 下文用 <classic-root> 表示当前 Classic OpenSpec 根目录:新项目默认是 docs/openspec/,保留旧布局的项目是 openspec/。实际位置由 classic.artifact_layout 决定,详见项目文件结构

基本形式

预览(不真正执行 OpenSpec):

它会做什么

按顺序执行:
  1. 校验 change 名(kebab-case)。
  2. 定位 change 目录,如果已被之前的归档移走,扫描 archive 目录恢复。
  3. 校验共同入口状态phase 必须是 archiveverify_result 必须是 pass
  4. 检查归档目标可用<classic-root>/changes/archive/YYYY-MM-DD-<name> 不能已存在。
  5. 处理执行模式--dry-run 到此只报告预览,不要求最终确认、不写 pending action;真实归档要求 archive_confirmation: confirmed
  6. 写 pending action checkpoint,支持真实归档中断后恢复。
  7. 调用 OpenSpec archiveopenspec archive <change> --yes,执行 delta→主 spec 合并(按 ADDED/MODIFIED/REMOVED/RENAMED 语义)并移动 change 目录。
  8. 解析归档目录:重新定位 OpenSpec 实际放的位置(日期前缀可能变化)。
  9. 校验主 spec 干净:扫描 <classic-root>/specs/*/spec.md,残留 delta-only 标题就 FATAL。
  10. 标注并完成状态:幂等标注 design doc/plan,设置 archived: true,Run 转为 completed,清除 pending action。
Design Doc 和 Plan 的归档注释可以安全重复执行,不会重复追加字段,并会保留正常的 Markdown 文件结尾,避免产生 git diff --check 格式错误。

不自动提交

脚本执行完只移动文件、合并 spec、标注 frontmatter——不调用 git。完成后工作树里会留下这些未提交变更:
  • <classic-root>/changes/<name>/<classic-root>/changes/archive/YYYY-MM-DD-<name>/ 的目录移动
  • 主 spec 的 delta 合并结果
  • Design Doc / Plan frontmatter 的归档标注
需要你手动提交,否则归档结果悬在工作树:
归档命令本身不提交或推送。Archive Skill 会在执行前确认立即推送或推送并创建 PR,并在归档后先写入 branch_status: handled、通过 archive guard,再创建并推送唯一完整提交。

归档目录结构

日期取 UTC,保证跨时区一致。

delta spec 合并语义

delta spec 的 ADDED/MODIFIED/REMOVED/RENAMED 是 OpenSpec 原生概念。实际的 delta→主 spec 合并由 OpenSpec CLI 执行,Comet 只负责:
  • 调用 openspec archive --yes
  • 事后检查主 spec 里没有残留 delta-only 标题(防止 ## ADDED/MODIFIED/REMOVED/RENAMED Requirements 泄漏到稳定 spec)

重要边界

  • 不要手工把 change 标记为 archived。手工 transition 容易造成状态和文件位置不一致。
  • 用户确认通过 comet state transition <name> archive-confirm 写入 machine-owned 确认状态;重新打开会清除旧确认。不要直接编辑字段伪造批准。
  • 归档成功后不要再跑 comet guard <name> archive——活跃目录已不存在,guard 会报错。归档完整性由退出码和归档目录状态判断。
已归档的 Design Doc、Plan 和验证报告仍从项目根的 docs/superpowers/ 解析,因此可以继续在 Dashboard 中查看。安装包保留 comet-archive.mjs 兼容 launcher,但普通使用应优先采用 comet archive

下一步

最后修改于 2026年7月29日