Skip to content

[阶段二主 PR] Sandbox Checkpoint 与任务进度恢复 - #60

Merged
PixelCores merged 4 commits into
mainfrom
codex/harbor-runtime-stage2
Sep 24, 2026
Merged

PixelCores merged 4 commits into
mainfrom
codex/harbor-runtime-stage2

Conversation

@PixelCores

@PixelCores PixelCores commented Sep 20, 2026 •

Copy link
Copy Markdown
Owner

实现

为 Harbor 评测增加默认关闭的恢复能力。Runner 或执行基础设施故障后,从最近完整的 Runner 材料和 Sandbox 文件系统快照启动独立执行,保留原 trial/session 身份及原始截止时间,避免从头重跑已完成的 trial。

已纳入阶段一基线并推送实现提交 a88df586eb0f6496f1393bad7bbe2e8ad23c1e5f。PR 保持 Draft;真实 ACS 验收留待维护者后续执行。

主要行为

  • 独立 Job 与 Application 共用 traits.eval.recovery;必须显式设置 replaySafe: true。首批固定 Harbor 0.22.0 + Codex 0.154.0 / Claude Code 2.1.281,其他 Agent/版本拒绝启用。
  • 原生 CLI 停止并确认无剩余写入进程后建立全 Job 屏障,保存 trial 配置、完成结果、采集状态、明确 session ID 和剩余时间。未完成 trial 从克隆环境继续,跳过破坏性 setup。
  • 材料沿用现有制品分块存储;Checkpoint 沿用执行 claim、空间隔离和资源创建预算。只有全部成员快照成功且材料完整时发布 ready。
  • 恢复预留、新 ExecutionKey、旧 token 撤销、原 deadline 与 lineage 持久化。预留正常进入准入调度,Worker 接管继续同一个预留;最多恢复三次,每个源执行最多保留两个完整点,活动引用保护清理。
  • 启动副本前必须确认同一源 Pod UID 的完整容器终止证据,并关闭源 Sandbox。NodeLost、未知终止状态、Pod 消失或替换不能绕过隔离;旧维护操作不能重新延长源运行。
  • 快照未确认 ready 时,Agent 超时、取消和发布失败不能提前触发 verifier、采集或环境清理;等待时间仍消耗原预算。过期执行正常落为 Timeout,并保留 ownership/UID 清理保护。
  • 恢复模式保留 Harbor 的 Mean 和 pass@k 汇总,已完成与恢复后的 trial 一同计入结果。
  • 同步模型注册、JSON schema、protobuf/gRPC、内部 API、RBAC、空间删除保护和使用文档。Worker 仅新增 Sandbox get/patch;Checkpoint 管理由 API/Controller 承担。

验证

  • 最终 go test ./... -race -cover 全仓通过。
  • 最终受影响 Job/Workflow 包 go vet 通过;此前全仓 vet、服务端构建、安装脚本、部署与 Helm 模板检查通过。
  • protobuf 生成一致性、格式、文档链接、敏感内容及 diff 检查通过。
  • Python 完整 114 项测试通过,无跳过;两个固定版本原生 CLI 使用生产 argv 和本地模型模拟服务验证中断及原 session 继续。
  • 真实 Harbor Trial 生命周期 fixture 覆盖删除旧工作目录、新路径恢复、完成 trial 跳过、结果与采集状态。
  • 回归覆盖恢复预留到实际准入/Runner 创建/终态持久化、Worker 接管、组件身份、超时与取消、旧 owner、替换 UID、快照屏障、发布失败、材料与评分汇总。
  • 原生 CLI 测试在本机替换了 Linux /proc 检查;完整 Linux 进程屏障与生产镜像尚未实机验收。
  • 真实 MySQL 引擎并发/迁移验收尚未执行;本地数据库测试使用 SQLite。
  • 未执行真实模型调用、集群部署或云资源操作。

风险与后续真实 ACS 验收

恢复可能重放未确认完成的工具调用,不保证外部副作用 exactly-once,也不回滚外部系统。Checkpoint 间隔不是 RPO 保证;缺乏可信终止证据的节点丢失场景会阻止自动恢复。控制器中断会延迟实际回收。

以下项目由维护者后续专门验证:

  • 固定地域、CRD、ACS 组件及镜像,验证快照/克隆、源模板 spec 与 runtime 注入、文件系统和挂载卷覆盖。
  • 两种 Agent 的多 trial 端到端恢复,原 Runner 工作目录删除后仍保留 session、结果与完整采集。
  • Runner/节点故障、网络分区、旧进程隔离、关闭终态保留、取消/deadline、重复恢复及 Worker/Controller 接管。
  • 部分快照失败、供应商调用超时、材料损坏、凭据轮换、引用保护、过期回收与空间删除。
  • Linux 屏障下后台/脱离进程及工具副作用;任务自身写入敏感文件的快照边界。
  • RPO/RTO、暂停时长、配额、成本与 1 万运行 Job 背景压力,确认阶段一 SLO 不退化。

取得这些证据前,不宣称生产端到端恢复或容量验收通过。

Persist coordinated Sandbox checkpoints and native Codex/Claude Code sessions with fenced recovery reservations and original deadlines.

Preserve admission, timeout cleanup, snapshot barriers and aggregate metrics. Document deferred ACS acceptance.
@PixelCores
PixelCores marked this pull request as ready for review September 24, 2026 11:49
@PixelCores
PixelCores merged commit b7cac95 into main Sep 24, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant