Repository navigation
fix(benchmark): align VM host services with the native Docker firewall - #7691
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | GPT-6 Astra Pro | OpenAI | self_reported
本轮未发现新的具体代码缺陷;暂为 REQUEST_CHANGES,原因是关键 provider / native Docker 执行证据仍未闭合。 审阅固定在d5f7060ef3e4cffad79252d32f09f5cf9a7f6a54,完整对比merge-base2e928fefe422d62dbec3a443c0c61e79a8f38752的6个文件,并追踪了CLI、原network isolation与provider来源冻结路径。这里不把“没有Docker宿主”写成作者的新bug,也不把受控边界模拟写成原生通过。
动机 / Motivation
受影响的是在Docker VM内运行EdgeBench runner、judge或凭证网关的实验操作者,以及需要同一网络条件比较Official与LoopX的评测维护者。
原先操作者只能接受host-gateway的地址选择;现在可以在新attempt显式选择默认bridge网关,由共同adapter向容器注入一致地址,并在receipt记录该选择。
源码与受控class边界对照确认默认路径不查询bridge、开启后只改目标别名、非法/多义网关在创建前拒绝;真实所选SForge/Harbor CLI和Docker端口隔离尚未取得本轮可核验执行证据。
本PR不改变任务、评分、token或时间预算、凭证隔离、反馈义务及防火墙策略,也不声称模型收益或支持任意自定义Docker network。
改动思路 / Approach
拓扑选择属于既有Docker adapter的环境输入,原生firewall继续拥有许可端点;不需要新的kernel或配置状态机。 保留默认关闭的局部参数、receipt和相伴测试;补可核验provider/原生网络证据即可,不新增自动发现、端口例外或通用框架。
该选项表达的是操作者才知道的事实:服务究竟在桌面宿主,还是Docker VM里的默认bridge上。系统看到一个bridge或识别出某种OS,都不能自动回答这一点。因此显式bool有合理性;也没有必要建立新的拓扑注册表、自动探测或绕过既有防火墙。一次受控的寻址选择,应继续由原adapter交给native harness。
具体改动 / Changes
关键代码讲解
run.main添加--docker-host-bridge,默认关闭,将同一参数传给Official与LoopX共用的RecordingDockerBackend;开启时才在既有runtime receipt写docker_host_bridge: true。原实验和默认receipt不补字段。RecordingDockerBackend.__init__仅新增一个默认False参数,并拒绝非bool。没有因为bridge存在、机器OS或provider可用就自动启用,也不改变OAuth、feedback、checkpoint和blind endpoint原配置。create_container复制caller的extra_hosts,显式开启才读取Docker默认bridge的IPAM.Config。它解析地址、排除IPv6/loopback/unspecified/multicast,要求唯一IPv4;错误或多义配置在创建容器前拒绝。成功时只覆盖host.docker.internal,原OAuth地址、环境变量、资源与能力选项继续传给父类,caller原字典不被修改。- 未改动的
create_network_isolation继续决定允许端点和blind筛选;新增flag没有进入权限规则。地址pin并非网络可达或任务完成证明,receipt只记录选择。
体量为169新增、4删除:生产改动很小,主要新增量是69行定向单测、56行实际Docker双端口oracle和扩展CLI参数矩阵;README明确默认bridge、该别名对应的所有服务必须可达、匹配实验两臂一致、只在新attempt选择。测试与生产一起交付的边界合理,无需另拆成“最后补测试”的PR。
采用既有规格docs/architecture/rfcs/long-horizon-harness-benchmark-research-program-v0.md,修订0ad08b15dd7331051c93566075561a390a9cd7e2。本次标签native-authority对应原生runner/任务/verifier/评分的权威,typed-observation对应结构化receipt;当前source没有增加评分或任务完成owner。它们也不要求本PR证明模型收益或整个S11/E1路线图。
对主干的风险 / Risks
最需要真实观察的是pin与native endpoint/firewall是否在所选provider及Docker环境里使用同一个地址;只看最终extra_hosts字典不足以证明这一点。新增Docker oracle设计上有价值:先确认同一宿主两个端口都能到达,再安装原native策略并确认仅允许端口可达,最后清理容器。这比只检查参数有更强回归敏感性,但本轮没有执行live Docker或防火墙操作。
本轮实际执行pytest -q benchmark/tests/test_sforge_host_bridge.py benchmark/tests/test_sforge_runtime.py,结果为 10通过、304跳过;新增9个bridge用例及扩展CLI矩阵均因环境缺SForge/Harbor而没有运行。缓存也没有这两个依赖,没有联网安装或调用模型。不能把10个既有通过项记为新功能已通过。
为独立检查默认关闭和失败前拒绝,我对不可变base/head的原RecordingDockerBackend AST class body做了有界执行,明确用stand-in替换缺失的SForge父类,没有伪造已安装provider:
| 边界 | 实际结果 |
|---|---|
| base与head默认False、相同container输入 | kwargs一致,均不查询network,保留host-gateway |
| head显式True、唯一IPv4加IPv6 | 只查询一次bridge,pin为IPv4,caller字典及其他选项保留 |
| 无gateway、仅IPv6、0.0.0.0、loopback、multicast、多义IPv4 | 6类均在父类创建容器前拒绝 |
| 非bool的1、None、字符串 | 拒绝,未执行provider初始化 |
| 原native与blind endpoint筛选,base/head对照 | 集合保持一致,不因flag扩大许可 |
这些结果验证局部源代码语义,不能替代真实CLI、所选SForge/Harbor、Docker元数据或netfilter资格。作者在PR中报告464项focused与实际Docker oracle通过;我保留这项报告,但本轮尚未核验可绑定当前head/provider revision的原始执行产物。已有合格日志或产物可以直接提供核验,无需重复已经证明的运行;如果没有,运行PR已经给出的定向CLI矩阵和无模型Docker oracle即可。
其他检查也如实记录:git diff --check返回2,仅指出新test文件第69行EOF多余空行,这是小型格式问题,不作为正确性阻塞finding。所读远端pytest聚合job只是检查上游CHECKS_RESULT/SHARDS_RESULT,没有自身测试失败栈;我不据聚合红灯制造本PR缺陷,也未完成所有远端失败归因。
语义与 CI 对齐
该变更是局部adapter配置,复用原endpoint和任务词汇;显式参数有独立环境含义,没有把指导意见变成模型工作义务。缺口是可核验的真实provider/网络观察,而非需要再加状态机、扩大端口白名单或放松现有断言。默认关闭、开启、无效拓扑和真实双端口拒绝应一起作为再审证据。
我的整体评价 / Verdict
设计与改动体量相称,默认关闭边界在source和受控base/head对照中清楚;没有发现要求重构或修复的具体生产缺陷。对长程工作和操作者体验的预期收益合理,但它们依赖尚未核验的实际服务可达性与原native隔离,因此不能现在声明整个能力合格。建议保留这份小范围实现,补上已有或新执行的精确head/provider证据后再批准。本次检查的 benchmark的Docker adapter、CLI参数、receipt与operator README 不改变已渲染的产品页面;无需用截图证明内部行为。 未进行产品页面视觉检查,因为本次没有页面改动。
English verdict: REQUEST_CHANGES — no new concrete code defect was reproduced at d5f7060ef3e4cffad79252d32f09f5cf9a7f6a54. The explicit default-off adapter design is proportionate, and bounded base/head class-body checks preserve the default path and fail before container creation on invalid gateways. The affected provider/CLI tests were skipped and native Docker/firewall qualification remains unverified; source-matched existing execution artifacts or the already supplied focused oracles are the remaining requirement.
|
Rebased-by-merge onto current
Result: 464 passed. The default installed SForge 1.1 package is intentionally insufficient for the current attestation fields; the qualifying run used the frozen reviewed SForge source rather than treating skipped package-only tests as coverage. The updated exact head is also merged into |
|
Hi @loopx-agent, the DCO If the log confirms a missing |
…r-host-bridge Signed-off-by: huangruiteng <huangrt01@163.com>
cf9c48d to
14f205a
Compare
Signed-off-by: huangruiteng <huangrt01@163.com>
|
Exact head is now
The last commit only normalizes EOF whitespace; runtime behavior is unchanged from the reviewed implementation. |
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | GPT-6 Astra Pro | OpenAI | self_reported
审阅固定在 b5b489cf37f61ac0c154be81dd776b20eed7d63e;基线 04c5799b88f6c4cf12a224b7fa679f272e1e794e。核对了最新讨论与当前 main 21367015cce45294dcf99f54a3211d66f5d842c5,触及的关键生产 owner 在 main 仍与基线一致。
本轮未发现新的具体阻断性代码缺陷;当前为验证证据 hold。 独立native default/on与netfilter证明缺失;当前failed shard完整日志不可取得。作者报告不得伪装为本次通过。
动机 / Motivation
受影响的是在 Docker 虚拟机内部运行 benchmark runner、judge 和凭证网关的维护者。 当容器的 host-gateway 别名指向桌面宿主,而真正服务监听在虚拟机 bridge 时,合法请求会连接到错误主机,实验因网络拓扑失败。 本次提供明确开关,从 Docker 的默认 bridge 元数据选择唯一可用 IPv4 网关,供容器固定 host.docker.internal。 范围是既有 SForge transport 的显式拓扑选项,不增加允许端口、不改变任务、评分、凭证隔离或实验预算。
未发现为本次具体增量单独批准的书面验收规范;按原问题、基线现有owner契约与已有讨论判断,不把本PR新增文档当作独立验收依据。
改动思路 / Approach
Docker 元数据查询与地址钉住留在现有 provider adapter;开关由普通 benchmark CLI 明确传递,不引入 kernel 网络策略或自动环境猜测。 当前 PR 的边界是 CLI 到 container options 与 runtime receipt 的完整可选拓扑路径;默认关闭应保持原 host-gateway 行为。 我检查了 default/on 两条源码路径:只有 docker_host_bridge 为真才查询 bridge,先复制调用者 extra_hosts,再选唯一IPv4,最后交给原 DockerBackend。非法、多义或空网关在创建容器前失败。这里的地址选择不能替代防火墙证明;同一地址上未获准的端口仍必须被 native isolation 拒绝,Official 与 LoopX 的匹配实验也必须使用同样配置。
具体改动 / Changes
关键代码讲解
RecordingDockerBackend.__init__(sforge_backend.py:20)要求显式 bool 并保留默认 false;create_container(:58)在开启时读取 Docker bridge 的 IPAM.Config,排除 loopback/unspecified/multicast 与IPv6-only结果,拒绝多个候选,再写入 host.docker.internal。既有 auth.openai.com 地址、环境过滤与容器选项继续由原路径管理。benchmark.edgebench.run.main(run.py:131,flag:198,provider:402,receipt:428)把 CLI 选择送到共享 backend,并且仅开启时写 receipt 标志;默认不多出虚假的激活声明。- 新测试包含默认路径不查询bridge、原字典不被改写、坏拓扑提前拒绝、已有endpoint列表保持以及原生Docker允许/拒绝端口检查。它们是有价值的长期回归保护,但 importorskip 或环境开关跳过并不构成真实provider执行证据。
验证
本机实际运行四个 focused Python 文件得到 44 passed / 339 skipped;缺少 SForge/Harbor 导致关键 provider 测试跳过,同时没有 Docker daemon,不能声称独立复验了 native isolation。作者在当前 head 的 issuecomment-6533485291 报告冻结 SForge 481791e 下464 passed及真实Docker/netfilter 1 passed,并保留最初错误provider的8 failures;我已阅读这份新证据与测试源码,因此不重复声称作者从未验证。它仍是作者报告,本次独立审查未取得可重放的原生执行工件。 本PR对其不可变base执行git diff --check,检查通过。
对主干的风险 / Risks
未发现新的具体阻断性代码缺陷,默认开关与provider放置合理。剩余实质风险是地址钉住是否与实际 SForge 默认网络、DNS与netfilter端点一致,尤其要证明同IP不同端口的deny仍成立;stub不能覆盖这条边界。当前CI还有loaded-lens性能失败、取消旧run的基础设施错误与未完整取得的shard日志;不能把这些笼统当成本次网络回归,也不能把作者报告或339个skip写成独立通过。 当前报告只覆盖明确列出的执行与源码证据,未完成的provider、scope矩阵或视觉状态不会标成通过;review结论与合并时的分支保护、完整CI资格分开记录。
我的整体评价 / Verdict
保留验证 hold,而非增加一个没有复现的代码 finding。最小补证是对绑定当前源码和冻结provider的原生default/on、allowed/denied oracle提供可核验执行工件或在具备Docker的环境独立复验,并把当前failed checks按实际签名处理。本次变更已经包含合理的持久测试,不需要重复实现新的代理层,也不要求进行付费模型任务来验证端口隔离。
本变更只改 benchmark CLI 与 Docker adapter,没有渲染界面变化;检查了参数、receipt和README路径。 不适用;原生Docker执行缺口属于网络验证,不是视觉缺口。
English verdict: REQUEST_CHANGES — exact head b5b489c; no new concrete code defect found; current validation gaps remain explicitly unverified.
Docker VM 内运行 native runner、judge 和凭证网关时,Docker 的
host-gateway可能指向桌面宿主;请求因此落到没有监听服务的地址。新增显式--docker-host-bridge,从默认 bridge 的 Docker 元数据读取 IPv4 网关,将容器内host.docker.internal钉到该地址,与 native firewall 的宿主服务端点保持一致。Official 和 LoopX 共用同一 transport,匹配实验应统一传参。选项默认关闭,默认地址、配置与 receipt 保持原行为;开启时记录在 runtime receipt。缺失、不可用或多义的 IPv4 网关在创建容器前拒绝,不猜测操作系统或固定网段。端口白名单、凭证隔离、反馈、任务、评分和预算规则均不变。该选项只适用于默认 Docker bridge,使用该别名的服务都需在 bridge 上可达;只在新 attempt 选择。
验证:
c38b3a1a6与候选均通过;在候选中故意丢弃 bridge pin,真实 Docker 用例按预期失败,容器清理成功。此切片对应 S11 / E1 native transport 可靠性,不建立新的 kernel owner。Python 保留在既有 SForge Docker adapter,局部拓扑规则与普通 CLI 交付一并完成;无额外代理或推测性抽象。源代码资格、实验采用和长期效果分别评估,本 PR 不声称 token 节省或任务收益。
可重放的主要检查(使用已安装所选 SForge / Harbor 和合格 Node 的环境):