Repository navigation
fix(benchmark): validate install archives before checkpoint activation - #8085
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | max
Approval conclusion
Exact head: dbb9164; base/spec revision: 92294e7.
动机 / Motivation
没有发现阻塞本切片的缺陷。执行 warm checkpoint 恢复的 benchmark 操作者,需要在激活保留的 native capsule 前确认接收端实际可安装的源码包。
已固定 Git revision 的 checkout 仍可能带有过期或损坏的忽略目录 Chat bundle;旧 launcher 到 worker 安装才发现,候选先实际归档校验,再进入 task 与 native 准备。
真实 Git/文件系统用例证明,过期 bundle、损坏资产及缺失 runner overlay 在 task materialization 前拒绝;合法 warm 和普通 cold 路径仍能到达原准备边界。
本切片不证明 live capsule、完整容器安装、模型续跑、评分结果或整轮性能收益,也不改变原 phase 时钟、预算和恢复权限。
预检后的并发文件变化继续由既有 staging 重验处理;完整 native/Docker 恢复资格仍沿现有独立验证边界推进。
改动思路 / Approach
源码归档及资产完整性已经由 archive_source 统一负责;在原 launcher 增加 warm 专属调用,直接复用同一 product/runner pin 和 staging 规则,没有第二套校验器或状态 authority。
当前 PR 交付恢复前的源码准备拒绝,保留 worker 安装时的再次检查;不把一次预检提升为整个 checkpoint 已可用的证明。
已比较不改动、只检查 Git pin、另写资产 validator 和复用实际 archive owner:干净的 Git 状态无法证明忽略目录中的产物仍匹配源码,现有归档函数已经能检查这一点。提前归档增加一次 product tar 和可选 runner tar 的临时磁盘 I/O;安装时保留重验,可捕获预检后发生的变化。这是有用且可逆的局部修复,完整开销与 native 续跑资格继续按原边界验证。
| 输入 | base | 当前 head |
|---|---|---|
| 过期 bundle、损坏资产、缺失 runner 子树 | 仍到达 task 准备,拒绝 oracle 失败 | 原归档错误提前拒绝 |
| 合法 warm、合法 split runner | 到达 task 准备 | 同样到达 |
| cold + 损坏的忽略目录 bundle | 原有准备路径 | 原有路径保持 |
具体改动 / Changes
依据 benchmark/README.md,规范版本 92294e7。Explicit warm worker composition 的完整输入与既有 owner 组合保持;receiver installation 的原绝对 deadline 和安装计时计算未改;new isolated receiver 的失败保留规则保持:预检失败仍保留既有 attempt reservation,修复输入后使用新的隔离 receiver。没有改写活动运行、已结算 Turn 或额度。
关键代码讲解
main先取得同一 product/runner pins,仅在完整 warm 参数已通过检查时进入临时目录,实际生成 product archive 和独立 runner 的benchmark/runtimeoverlay,然后才调用make_task_spec。cold 路径跳过新增归档,原 parser、默认参数及准备顺序保留。archive_source的实现未变。它执行真正的git archive,核对 prepared bundle 的源码、manifest 和内容摘要,拒绝 symlink、额外或未提交输入;partial overlay 继续使用已有范围规则。BenchmarkCodex._stage_source保留安装前的同一校验。预检结果没有被缓存为恢复许可;稍后真正的 nativerestore仍由原 owner 在 launcher 第 411 行执行,原 phase extension 参数和 epoch 处理均未改变。
完整差异为两个 Python 文件,+88/−2;六个新增案例放入既有 source-bundle 套件,未引入协议、设置、持久状态或另一个执行器。Python 位于现有 benchmark provider I/O 层,符合已有放置边界。
对主干的风险 / Risks
独立验证使用 macOS、Python 3.13.16 和实际安装的 SForge/Harbor 依赖;LoopX import 指向精确 checkout。源码仓库、忽略资产、manifest、tar 和错误都是实际文件操作。测试在 task materialization 处放置停止标记,以隔离 archive-before-native 的先后关系;这个标记不提供源码有效性,也不模拟一次成功的 native 恢复。
| 验证 | 结果 |
|---|---|
| source-bundle 全套 | PASS:14 passed,无 skip |
| warm-start / checkpoint-storage | PASS:89 passed,1 skipped |
| 同一份六案例在不可变 base 重放 | 3 个预期拒绝失败、3 个对照通过 |
| 相同六案例在当前 head 重放 | PASS:6 passed;是敏感性复测,未重复计入 103 项 |
| 两个改动 Python 的 Ruff、双语 diff、diff hygiene | PASS |
Goal-scoped standard premerge 的 5 项 direct checks 通过,10 项 selected checks 中 9 项通过。余下 quota-plan smoke 在不可变 base 与当前 head 都于原 quota_plan_fixtures.py:700 报 KeyError: quota,完整 stderr 无须归一化即逐字相同,相关 smoke/CLI/projection 代码也完全相同;这项旧失败保留,当前源码归档行为已有独立通过证据。严格质量回执仍为 stale,benchmark manual hold 与整体 merge gate 未通过,不能把代码批准当作已就绪。
103 项通过与 1 项跳过是本轮实际结果;跳过项需要单独的 isolated Docker writer-barrier qualification。CI 按配置未查询或等待。预检只消除当时已存在的无效输入;之后的并发变化仍可能令 staging 拒绝,这正是保留第二次检查的原因。临时归档成本没有独立性能测量,不能推断整轮提速或更多模型工作。
我的整体评价 / Verdict
APPROVE,限这个精确 head 的源码准备切片。 实际 base/head 反例建立了旧缺口与新拒绝顺序的联系,合法 warm 和 cold 对照保持,既有 source owner 与 native 时钟/权限 owner 的分工清楚。代码批准与独立合并资格分别处理。
已检查 benchmark/edgebench/run.py 的 CLI 和 benchmark/runtime/harbor.py 的 staging 调用;没有浏览器或桌面渲染页面变更,viewport 证据不适用。
未验证范围是 live native capsule、Docker writer barrier、实际安装后的模型接续和完整 setup 成本;本地通过不替这些范围签收。失败后仍沿原隔离 receiver 路径恢复,无新增确认或人工输入轮次。
English verdict: APPROVE — dbb9164 rejects invalid warm install archives before task/native setup using the existing archive owner; 103 tests passed with one disclosed Docker qualification skip, and live/model/full-cost qualification remains separate.
Warm checkpoint 恢复会先激活 native capsule、启动剩余 phase 时钟,之后才在 worker 安装阶段发现准备好的 Chat bundle 已过期或损坏,导致模型尚未运行就损失接续时间。现在先复用现有
archive_source实际归档并验证产品源码与可选 runner overlay,再进行 task/native 准备;worker staging 仍再次检查,普通冷启动保持原路径。验证:同一组真实临时 Git 仓库/文件系统用例,在基线
92294e7245cb3ad50119c6b817667410a4517c2f上 3 个拒绝用例失败、3 个对照通过;修复后 6 个全部通过。Linux Python 3.12、Node 24、安装了 SForge/Harbor 的环境运行 source bundle、warm start、checkpoint storage 套件:103 passed,1 skipped(需要单独的 isolated Docker writer-barrier qualification)。Ruff、diff check、RFC bilingual diff check 通过。未运行付费模型或新原生评分;完整 CI 和独立评审待运行。范围:现有 benchmark adapter 的源码归档 I/O,不新增设置、协议或控制平面 owner。恢复前会多一次临时归档 I/O,保留 staging 重验以覆盖期间变化;这项开销不延长原有预算。复用了现有归档 owner,无需额外抽象。