Repository navigation
chore(benchmark): compose optional native collaboration parity - #8230
huangruiteng wants to merge 2 commits into
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…hmark cohorts 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
[P1] 在原生激活前核对封存的子代理上限。 WarmStart.verify 验证了 checkpoint 及其配置摘要,CLI 随后把本次上限交给 worker,缺少两者的比对。独立复现中,封存值 3 后漏传、3 改成 2、原先省略而本次加 3,都走到了 checkpoint_controller.restore。通过原生激活后会预留恢复目的地并启动剩余时间的计时,接收端的配置一致性检查发生得更晚。应在现有 seal 校验之后、原生激活之前比较两边的可选值,并保留 worker 的一致性检查。 封存预检 · 激活调用
[P2] 拼接授权前检查原始 workspace instructions。 传入只含空白的工作区说明,以及以这段空白开头的 native task wrapper 时,默认调用会拒绝。传入上限 3 后,新增授权段使工作区说明通过原有非空检查,原始任务策略因此缺失。请将现有非空、前缀匹配和 native feedback 校验应用到拼接前的输入。 直接 API
动机 / Motivation
管理匹配实验的操作者需要给各组同一份子代理权限,也需要用原条件接续已经封存的运行。
以前要逐组配置宿主容量和任务说明。现在新实验可以统一传入上限 3,但拿这份 checkpoint 接续时漏传或改值,当前 launcher 仍会进入原生激活。
新实验的设置、任务说明和 Goal 读回已接通。接续入口还需在启动原生计时前拒绝与封存配置冲突的请求。
本切片的验收范围是运行器配置、授权和恢复顺序。真实模型采用、子会话联合恢复、成绩和完整成本收益需另有运行证据。
改动思路 / Approach
用同一个参数驱动宿主设置和任务授权有必要。设置管容量,任务说明管工作边界,已封存的配置负责判断接续能否沿用原条件。
本次修复应在现有恢复入口比对封存上限,并在 SForge 拼接授权前校验原任务说明。两处都可以复用现有 owner。
新实验在 SForge 的任务正文和工作区说明放入同一授权段,Codex 配置上限约束宿主子会话容量,LoopX 启动沿用既有 Goal policy 并由 agent-context 读回。原生子会话的完成和父任务采纳各有证据,配置上限只提供声明值。恢复时保留原始预算和已有 Goal,先校验本次选择,再进入原生注册与计时。 宿主回执契约
Git 复核显示候选 c4536ec439fa7480bbfc76d7e26a96ac956fbf2f 的第一父提交为 r33 528c7f1b1071323d7fbc56c7aa535741955a1c2b,第二父提交为 #8229 ce8baf0478e24bf26843c58e6d727138c3b61c8f。两者 tree 均为 34fc0a6af3d43816ed43862c842275ed4fa159ec,相对 r33 的全量 diff 一致,两条提交均有 DCO。候选完整继承了 #8229 的恢复问题。
具体改动 / Changes
采用改动前的 docs/architecture/rfcs/long-horizon-harness-benchmark-research-program-v0.md,版本 528c7f1b1071323d7fbc56c7aa535741955a1c2b。评审定位标签 5.3-fixed-treatment 对应运行中配置固定,三个接续反例尚未满足。 5.3-authority-envelope 对应各组获得同一权限约束,合法包装的接通已验证,直接 API 的空白输入仍需修复。 5.3-treatment-receipt 的实际触发和采纳待运行证据。 C2 的匹配效果和完整成本属于实验验收。 研究方案 5.3 和 C2
关键代码讲解
native_child_instructions在显式开启时生成公共授权段,要求委派可选,沿用父任务的时间、评价和 Stop 边界。codex_settings将同一值写入宿主设置。 授权文本 · 设置渲染_verify_native_child_configuration核对已有 Goal 的 mode、spawn_allowed 和 max_children。覆盖启用后写任务正文前的 Goal 读回。独立的 CLI 暖启动还有原生激活这道更早的边界。 Goal 校验run.main读封存配置并构造 worker,再启动原生恢复。选项在构造时已可读取,可直接用已核验配置中的上限比较。 选项传递SForgeWorker.__init__目前先加授权段,再检查工作区说明。后续接收者会照常安装这份包装,因此要在原始输入上维持既有校验。 包装入口
完整 diff 为 10 个文件,新增 299 行、删除 12 行,覆盖五个运行时文件、一份运行说明和四个测试文件。配置、恢复、Goal 和回执复用既有 owner。变化集中在 runner 内一个可选整数的生产、校验和消费。
对主干的风险 / Risks
基于同一个隔离 Python 3.12、Harbor 0.20.0 和固定 SForge 源版本,候选 31 项定向测试通过,基线对应 8 项通过,均无跳过。定向测试覆盖配置、真实 CLI/bootstrap、Goal 和 agent-context、Stop、封存配置以及部分 warm gateway 路径。quick premerge 的四项直接检查、Python 编译和三项 catalog canary 通过,整体仍是 benchmark-sensitive 人工门。
独立入口探针得到 4 失败 / 2 通过。三个不匹配的 CLI 请求到达激活调用,第四个失败是开启后空白 workspace policy 被接受。两项合法匹配分别覆盖省略和显式上限 3。探针使用真实 CLI 参数处理、SForge 任务读取、checkpoint 摘要与参与者验证,并在原生激活调用前拦截。实际注册和计时变化属于该调用的生产效果,测试保留在隔离边界。基线的手工注入 3 封存配置也到达该旧边界。该版本的公开 runner 尚无参数生成这种 opt-in 封存;本次增加了正常到达这条路径的输入。
语义与 CI 对齐
配对探针比较四种执行模式的设置和截止回执,以及五个 SForge profile 的完整默认包装。环境仅多出文档披露的空 LOOPX_NATIVE_CHILD_LIMIT。同一 registry 读取断开时,基线先写两个任务文档,当前 head 在写入前失败,故默认失败路径还有一处顺序差异。请把预读限定在启用分支,或披露有意的失败语义并保留相应回归。
最小回归应从公开 CLI 覆盖 3→省略、3→2、省略→3 和两项合法匹配,并验证前三项在恢复调用前停止。直接 SForge API 应分别覆盖空白、有效 workspace instructions 和受限反馈。测试启动时的依赖锁定与独立探针导入问题已在隔离环境纠正,判断来自上述完整复跑。远端 CI 状态按当前队列政策保留为未知。
我的整体评价 / Verdict
配对选项能减少新实验的逐组配置工作。现有预检仍可能让不匹配的恢复进入激活并占用后续工作时间,直接 API 也需要恢复原任务说明的校验。当前 候选集成提交 的合入条件是这两项边界得到修复,并在更新后的 head 重新走实际入口。界面核验范围为 EdgeBench CLI、任务文本和运行器回执。本次改动集中在这些入口。真实安装采用、活跃子会话联合恢复及模型收益仍需单独验证。 模型采用、分数与完整成本仍须由单独获准的匹配运行验证。
English verdict: REQUEST_CHANGES
| warm_start=warm_start, research_sidecar=research_sidecar, | ||
| timeout_seconds=args.timeout, feedback_prompt=feedback_prompt, feedback=args.feedback, | ||
| workspace_instructions=workspace_instructions, | ||
| native_child_limit=args.native_child_limit, |
There was a problem hiding this comment.
[P1] 请在原生激活前比对请求上限与已验证的封存配置。实际 CLI 从封存 3 恢复时漏传或传 2,以及从省略恢复时传 3,三项都到达 checkpoint_controller.restore。成功激活会建立目的地及其剩余时间,后续 worker 一致性检查已经太晚。请在当前 WarmStart/config owner 比较可选值,测试两项合法匹配能通过、三项不匹配在激活前拒绝。
| self.turn_envelope = turn_envelope | ||
| self.native_child_limit = Execution(mode="plain", native_child_limit=native_child_limit).native_child_limit | ||
| if native_child_limit is not None: | ||
| if not feedback_prompt or not workspace_instructions: |
There was a problem hiding this comment.
[P2] 请先校验原始工作区说明与任务包装,再拼接授权。实际 SForgeWorker 对只含空白的原说明在省略选项时拒绝,显式上限 3 时接受。新增前缀替原始输入通过了非空校验。把现有 native feedback、非空和前缀校验移到拼接之前,并覆盖空白反例。
Compose #8229 on the existing r33 research integration branch for a new matched cohort. The entire candidate Git tree equals exact author head
ce8baf0478e24bf26843c58e6d727138c3b61c8f; the signed merge is clean, and r33 remains unchanged. Independent source readback confirms both parents, DCO, tree identity and the published head.The opt-in gives every arm the same optional authorization and three open native child slots in addition to the parent. It reuses existing Goal, host configuration and checkpoint owners, preserves parent-only evaluation opportunities and shared Stop/time limits, and adds no persistent child Agents or delegation-depth change. Relative to previous cohorts this is another protocol factor, not evidence of improved outcomes.
Validation:
Incoming exact-head independent review is complete: review of #8229. The integration has separate whole-tree source acceptance. Neither grants merge-to-main or live-deployment authority.
Checkpoint qualification remains scoped to the parent session/configuration. Retaining a complete session store does not prove continuation of children that were still active at capture.
Base
528c7f1b1071323d7fbc56c7aa535741955a1c2b; candidatec4536ec439fa7480bbfc76d7e26a96ac956fbf2f. Roll back by retaining r33 and omitting the option in a new cohort; do not alter a continuing session.Main delivery
The native child authorization proposal now targets
mainin the original component PR. Follow its existing warm-start and input-validation findings there. #8229