Repository navigation
Verify native benchmark candidate identity before pairing measurements - #8390
loopx-agent wants to merge 5 commits into
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…gebench-native-candidate-binding-20261109 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
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
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
[P2] 用提交文件集指纹配对上传前测量。 同一文件集用两种 tar 成员顺序打包。两次 submitted_file_set_ref 都匹配原测量,candidate_ref 则随归档变化。实际 worker 指引指定了后者。 worker 指引
动机 / Motivation
用本机探针先记录一份测量、随后才提交原生归档的 EdgeBench worker。
上传前记录只有路径及字节指纹。候选 CLI 可以验证这一文件集,worker 提示却要求两次测量都用上传后生成的归档标识,导致原测量无法按记录时的身份接续。
同一文件集用两种 tar 成员顺序打包。两次 submitted_file_set_ref 都匹配原测量,candidate_ref 则随归档变化。实际 worker 指引指定了后者。 独立验证覆盖实际本机 probe、绑定 CLI 和生成的 worker 指引。原生回执与归档使用合成数据。
改动思路 / Approach
让上传前的本机测量和后到的原生结果沿用同一个已验证的文件集身份,保留各自的评测依据。 CLI 本身已经能核对上传前的身份,只需让现有 worker 指引使用它,并在不等时保持两份测量独立。
同一个绑定 CLI 已能提供三种各有用途的身份。实际 worker 提示需要消费文件集身份,才能复用既有测量。 保留现有 probe、归档验证和三种引用,把修复限在 native opt-in 指引的字段及相等性条件。
具体改动 / Changes
评审提交 b5e873f84d8d5fbabbbecb84fda0b1c9bbff63ef 对照主干 71190b6b4ef4e146f3bf4a10d31ce61ac42fd021。核对了 GitHub 和本地的全部 8 个改动路径。基线规范为 loopx/capabilities/explore/README.md。 基线规范
preserve-evaluated-candidate。原测量继续指向当时实测的文件集,worker 只能在精确相等时配对。 候选生成的 worker 指引要求把 candidate_ref 给两次测量,而这个字段是上传归档哈希。按指引要么改写上传前的记录,要么用不同身份重新测量,无法复用原记录。bounded-native-file-proof。验证原生回执、完整提交文件集与修改后的拒绝。 真实 probe 先测量 solver 与输出。两份重排的归档返回相同的提交文件集引用,修改输出后的归档被拒绝。unselected-probe-parity。普通和 checkpoint 未选探针时沿用原指引。 未选择 local_probe 时,普通和 checkpoint 两种实际生成的 worker 指引与主干逐字节一致。
关键代码讲解
research_artifact_instructions。在 native_probe 指引中让两份测量使用归档引用。 上传前已存在的测量只能与相同的文件集指纹配对。 源码main。按既有原生和探针选择生成提示。 best-only/blind 不使用此提示,未选 probe 保留旧文。 源码verify_binding。分开输出 archive、submitted file set 及 probe candidate 三种引用。 归档路径字节与回执均须匹配。 源码
对主干的风险 / Risks
原生非游戏 heartbeat worker 选择 local_probe,且上传前已记录包含全部提交文件的测量。 候选生成的 worker 指引要求把 candidate_ref 给两次测量,而这个字段是上传归档哈希。按指引要么改写上传前的记录,要么用不同身份重新测量,无法复用原记录。 把 worker 指引改为只在原测量的候选引用等于 submitted_file_set_ref 时,把该文件集引用用于原生测量。归档保留自己的 candidate_ref,probe 子集保持独立。 用同一实际 probe、两种 tar 封装和改变输出的反例核对实际发给 worker 的字段。
本机候选 22 项通过,主干 10 项通过。两边各有 320 项可选运行时测试跳过。预合并保留 benchmark 人工门。 快速预合并的 5 项直接及 4 项所选检查通过。CI 未查询。
语义与 CI 对齐
现有原生 probe 的安装与指引由 native、local_probe 和 worker 类型选择。CLI 只读已给出的本地文件。 使用原 probe observation、原生提交回执及三个只读身份。现有评分、写回、提交与授权由原 owner 决定。
我的整体评价 / Verdict
目前匹配工具能减少重复测量,但实际发给 worker 的引用会破坏同一候选的连续证据。 操作方照 worker 指引无法直接配对已保存的上传前测量。
变更位于 EdgeBench worker 文本、验证 CLI 与文档,未改图形界面。 独立测量只运行隔离本机 probe 和 CLI。标准环境跳过可选 SForge/Harbor 用例,未验证真实上传、模型采用或测量成本收益。
English verdict: REQUEST_CHANGES at b5e873f. The native worker instructs agents to use the later archive hash for an existing pre-upload measurement, whose verified file-set identity is already available.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gemini-4-argon-high · Google · runtime_reported · high
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
[P1] 需与 loopx explore / loopx yardstick 写时增量反馈及节点一致性改造协同收敛,避免在 runner 指引中固化手工双记录配对。 本 PR(b5e873f84d8d5fbabbbecb84fda0b1c9bbff63ef)是 #8422 的前置分支。虽然 benchmark/runtime/sforge_candidate_binding.py 对提交包与文件集的只读哈希校验本身有价值,但 benchmark/edgebench/prompts.py 的 worker 指引要求 Agent 围绕 runner 特有流程手工管理上传前与上传后的两次 finding 身份,且尚未接入统一的 loopx explore finding 写时即时增量反馈与 canonical question 节点自动挂载机制。在 #8422 与 loopx explore / loopx yardstick 统一架构收口前,需阻断本 PR 单独合入,防止主干 worker 指引与后续原生写时配对契约冲突。 源码
[P2] 用提交文件集指纹配对上传前测量。 同一文件集用两种 tar 成员顺序打包时,两次 submitted_file_set_ref 都匹配原测量,而 candidate_ref 随归档字节变化。当前 benchmark/edgebench/prompts.py 的 worker 指引仍指定两项测量共用 candidate_ref,导致上传前已记录的测量无法按原文件集身份直接复用。 源码
动机 / Motivation
受影响的是先运行本机探针记录测量、随后提交原生评测归档的 EdgeBench Explore worker。负责人在审视 #8422 及其关联 PR 链(含本 PR #8390)时指出:不应把测量配对重心放在 benchmark runner 的固定外围机制上,而应打通 loopx explore 与 loopx yardstick 的原生能力——保证中途写入节点与回合末 writeback 的 question 节点一致,并在写入原生反馈 finding 的瞬间(下次 quota 决策前)直接返回增量高价值对比。本 PR 作为该链路的前置提交,必须与 loopx explore 写时增量反馈及文件集指纹规则一并对齐后再合入。
改动思路 / Approach
保留 benchmark/runtime/sforge_candidate_binding.py 中对归档、已提交文件集(submitted_file_set_ref)与探针文件集的只读校验能力,使其仅作为向 loopx explore finding 提供已核验候选身份的事实源;同时修正 benchmark/edgebench/prompts.py 中的候选身份字段(当上传前测量覆盖完整提交文件集时使用 submitted_file_set_ref 配对),并与 loopx explore 统一 question 节点挂载及写时即时返回 measurement_feedback / proxy_order_reversed 的主干契约同步收口。
具体改动 / Changes
审查精确提交 b5e873f84d8d5fbabbbecb84fda0b1c9bbff63ef,对照基线 71190b6b4ef4e146f3bf4a10d31ce61ac42fd021,覆盖全部 8 个变更路径。
benchmark/runtime/sforge_candidate_binding.py:verify_binding核对原生提交回执 SHA、压缩包成员路径与字节,分别输出candidate_ref(归档哈希)、submitted_file_set_ref(提交文件集指纹)与probe_candidate_ref(探针完整文件集指纹)。 源码benchmark/edgebench/prompts.py与benchmark/edgebench/run.py:在research_artifact_instructions中生成native_probe指引,但要求本地与原生两次测量都使用上传后生成的归档candidate_ref,且未对接loopx explore统一节点与写时增量反馈能力。 源码
对主干的风险 / Risks
若在统一 loopx explore / loopx yardstick 节点一致性与写时增量返回设计落地前单独合入 b5e873f84d8d5fbabbbecb84fda0b1c9bbff63ef:
- 文件集身份错配风险:相同提交文件集在不同 tar 打包顺序下生成不同
candidate_ref,worker 按当前提示词无法复用上传前已保存的本机测量记录。 - 与中途写入节点契约脱节风险:worker 按提示词中途执行
loopx explore写入时,若未绑定当前 Todo 的 canonicalquestion节点,仍会与回合末refresh-statewriteback节点分裂,无法在写入瞬间及下一轮首读形成闭环对比。
我的整体评价 / Verdict
本 PR b5e873f84d8d5fbabbbecb84fda0b1c9bbff63ef 的候选文件集只读校验方向合理,但需先修正 submitted_file_set_ref 配对指引,并与 loopx explore / loopx yardstick 的节点对齐及写时即时增量反馈改造一起验证后再行合入,防止中途误合并。
English verdict: REQUEST_CHANGES at b5e873f. Align worker candidate identity guidance on submitted_file_set_ref and reconcile with the unified loopx explore write-time incremental Yardstick feedback and canonical question node contract before merging.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ance 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, reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
先用本机探针记录测量、随后提交原生归档的 EdgeBench heartbeat worker。上传前记录以完整文件集为候选;相同文件改换 tar 顺序会改变归档哈希。旧提示要求把归档引用用于两项测量,迫使重写原记录或重复测量。当前工具保留三种引用,worker 只有在既有候选引用精确等于已验证完整文件集引用时才复用,改变输出或仅测子集时保持分离。本 PR 交付只读文件身份核对和实际 worker 指引;自动 intake、canonical question、写时即时比较与模型收益继续由已有整合边界验收。canonical question、写时即时反馈与真实模型采用仍由既有 #8422 整合验收,本 PR 没有把它们标为已完成。
改动思路 / Approach
完整文件集哈希复用原 probe owner,原生回执和 tar 核对留在 provider,指引只消费事实,不新增通用决策或人工同步状态。当前范围是只读的 provider 文件身份核对、复用的 probe 指纹及可选 worker 指引。不做这个修复会让工具返回正确身份而实际Agent仍按错误字段行动;只把字段名换掉也不足以说明既有测量何时可复用。因此本轮保留原记录,在原native指引加入精确相等和完整性条件,而不是让Agent把原测量改成另一个candidate。原评审中的共享写时反馈诉求仍属于既有#8422整合;本工具只提供该消费者可使用的文件事实,不扩展通用finding或决策owner。
具体改动 / Changes
关键代码讲解
- research_artifact_instructions 的实际native_probe文本只允许既有candidate ref等于
submitted_file_set_ref时用于native测量;含生成输出,明确archive与probe ref独立,不改旧测量、原evaluator/input revision或禁止补证重提的条款。 - verify_binding 核对原probe pins、封闭manifest、显式生成输出、原生回执和完整tar集合,再输出三个不同身份;不是从归档存在推断评测真实性。旧回执、缺输出、内容/路径/成员冲突均非零且不给ref。
- candidate_manifest_sha256 复用原排序路径与SHA256的canonical recipe。相同内容不同包装保留同file-set身份;probe选集不同则保持独立。
- 原隔离安装 helper 复用
-I和固定source运行方式;run.main、SForge worker只在原native/local_probe选择下交付工具和相同prompt/AGENTS。提取原probe launcher避免复制,未增加新的执行策略。
规范为修改前Explore合同,spec_revision 4f3158bc6bf6dcf3ed7ddc1844ece08ce1c87bab。preserve-evaluated-candidate 对应实际候选与历史来源,bounded-native-file-proof 对应缺证据未知和生产者证据限制,unselected-probe-parity 对应可选输入省略的旧行为;均有实际路径验证。shared-write-time-feedback 保留在原Explore/#8422边界,不能用provider helper冒充已经交付。整个main三点diff为10文件、+627/-18;本轮相对b5e仅4文件、+158/-3,生产改变只有原指引八行,其余是决定性回归及原安装测试fixture补齐,没有父整合历史。
对主干的风险 / Risks
原b5e的新反例明确2 FAIL/5 PASS:工具路径正确,但native两种heartbeat worker实际收到的文本缺少完整集相等条件。当前精确c417913e61fe27f3008fd4a6f9ed8853e048df41的10个决定路径通过,包含真正本机probe、两种tar、生成输出变更、subset/extra fixture、缺输出不发ref、原观察字节不变,以及两个worker的native、blind、best-only实际送达文本和run.main安装选择。普通/checkpoint未选probe的文本与main逐字节一致;原native-goal拒绝、禁用安装与原输入/调度保持。native回执是明确的合成fixture,formatter/文件和本机执行是真实路径,未运行模型或远端grader。
Python使用provider支持范围内的3.13.16,SForge与Harbor可选依赖实际可用。相关516项通过;扩展probe/entrypoint套件118 PASS、2个Linux-only资源场景skip、1项规划deadline失败。相同[850] selector在独立clean main和本head均为DID NOT RAISE TimeoutError,未改的规划交接因果路径不受本PR的文件证明/指引影响,原失败保留,未声称整套全绿。精确head的quick预合并5项direct及4项所选检查通过,包括完整已提交diff、双语、semantic和public boundary;benchmark人工merge门仍保留。按配置未查询CI。
保留的归档与内容hash只核对给定材料,不能独立认证成绩、评测条件或代理方法。每项测量仍保留原input/evaluator/evidence,不能为了凑比较捏造共同条件。真实模型采用、完整成本及长期收益未由此PR验证;自动intake和即时反馈继续在既有整合验收。
我的整体评价 / Verdict
对完整 c417913e61fe27f3008fd4a6f9ed8853e048df41 的结论为APPROVE。可复用的原文件身份已穿过真实工具和实际worker文本,原CR的本体缺陷得到修复;当前交付是只读的 provider 文件身份核对、复用的 probe 指纹及可选 worker 指引。这是有消费者、可单独验收和回滚的增量,既不重复测量也不要求额外人工确认。原线程的reply/resolve与merge gate会分别回读,不以新评审或canary的源码检查代替实际thread状态。
视觉复核不适用:检查了worker prompt、AGENTS、CLI stdout与launcher;没有渲染组件或页面改动。未运行付费模型、真实上传或已安装App;这里验证的是本机执行、源绑定和实际worker文本交付。
English verdict: APPROVE c417913. The original full-file-set pairing defect is fixed through the actual probe and worker paths; the reproduced main planning failure and benchmark merge hold remain separate.
An execution probe can record a measurement before the native upload exists. An archive hash is known only after packaging and changes with tar member order, so using it for that earlier measurement would require rewriting the record or repeating the execution.
The optional
loopx-bind-native-candidatecommand verifies the original probe pins, sealed manifest, separately retained generated outputs, native source receipt and exact archive. It returns separate archive, complete submitted-file-set and probe-file-set references. It reads local artifacts and grants no scoring, writeback or execution authority.The actual native worker guidance now reuses
submitted_file_set_refonly when the existing measurement's candidate reference already equals that complete file set, including generated outputs. Archive and probe references stay independent; earlier measurements and each measurement's evaluation/input revision remain unchanged. Missing proof keeps measurements separate and does not authorize a new submission.Validation
Reviewed source:
c417913e61fe27f3008fd4a6f9ed8853e048df41, targeting main. Fixes the original worker-guidance CR.[850]test fails withDID NOT RAISE TimeoutErroron an independent clean main checkout and this head; the planning methods are unchanged.<3.14range. The real process/files/CLI and worker text paths run locally; native receipt fixtures are explicitly synthetic. No model or remote grader is launched.CI was not consulted. Actual model adoption, automated native intake, shared question/write-time feedback, evaluator-condition authenticity and outcome/cost benefit retain their existing integration qualification boundaries. No new default or historical record is changed.
The original inline worker-guidance request has an exact-head fix/validation reply and is resolved in GitHub. Merge authority remains separate.