Repository navigation
fix(benchmark): harden task-scoped integrity evidence - #6333
Conversation
Signed-off-by: huangruiteng <huangrt01@163.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=xhigh
Exact head: ed25833534f1515e5daa843a895f2d40277c3f3a; base: 509c38c502d3d0b4eafb01550efcdc4b5b5a1d17.
[P2] 允许只有最后一次提交的零反馈收尾。 integrity.py:950–954 强制 deliveries 非空,:1018–1023 又强制 intent/ack 正数。实际 CLI 输入:只提交一次,capture=290、evaluation-start=295、completion=310、solver-end=300,deliveries=[],request/response-ack=1、intent/ack=0,政策/完整轨迹/收发记录摘要全部匹配。此时没有任何反馈流入求解,正是 PR 声明允许的最后一次评估收尾,却得到 deliveries_invalid、transport_invalid,--require-qualified exit1。现有测试包含一次早期反馈后再收尾,所以151测试通过仍漏掉它。
最小修复:期望反馈为空时允许真实空 deliveries 和非负 intent/ack=0,仍要求提交与 response-ack/完整记录/摘要匹配;有求解中已完成提交时空反馈必须拒绝,停止后反馈回流、未确认 transport、非最终收尾仍拒绝。不要凭空添加早期反馈记录,也不要放宽盲评和隔离。
动机
使用已有 integrity-qualification 分析任务提交及声明反馈证据的 benchmark runner 和维护者。
声明允许任务提交凭据或求解中评估的 benchmark runner,原资格检查只有盲评要求,无法表达受限例外。 当前 CLI 可资格化精确 task typed-read 和完整声明反馈;但只有最后一次提交在停止后完成且零反馈回流的合法收尾仍被错误拒绝。
本次只验证既有资格 reducer 的扩展,不授任务凭据、网络、runner、评分、发布或合并权限;不将 fixture 转成真实研究完成证据。
最终独次提交的零反馈收尾被拒绝,需在现有 validator 修复;真实 runner 收集、任务权限 provenance、模型执行、官方分数和完整研究收益均未由本轮合成资格输入证明。
精确任务提交权限确有区别于探测 provider 凭据的意义,声明评估反馈也应有专门证据。但资格 reducer 必须接受其真正允许的完整证据;错误要求早期反馈会让正常最终结果无法进入后续资格流程,不能以“fail-closed”将不存在的记录当作缺失。
改动思路
复用现有 owner 的内聚增量,避免另建缓存、权限或通用执行框架;当前行为缺陷在原 validator 内修复。 限定现有 benchmark 资格输入与公开摘要,不实现 runner 或独立读取能力,不增加研究里程碑门。
复用现有 benchmark_toolkit 的 Python 专用 provider/资格入口。权限 declaration 只准 exact runner-owned typed read;shell env/printenv,包括 command/exec/xargs 包裹,仍被归为凭据探测。敏感值与 provider isolation 检查独立保留。反馈 opt-in 更换盲评相关 attestations,并核对政策、轨迹、提交时序、声明 channel 与 ACK transport。它不实现或授权 runner 读环境工具,不新增独立 capability/前端设置。
预改动规范为 loopx/capabilities/benchmark_toolkit/README.md,版本 509c38c502d3d0b4eafb01550efcdc4b5b5a1d17:
- Integrity qualification:implemented;保留私有输入、凭据隔离与独立限制检查,公开只输出计数、类别和 digest。新的例外是本 PR 要评估的扩展,不将修改后的 README 当作已接受的授权证明。
- Runner attestation:implemented;真实 runner 仍独立负责隔离与实际收集,一个 clean scanner、标签或 digest 不能证明权限。默认盲评与三种网络边界逐项对照。
当前 PR 的“最多最后一次评估可在 solver 结束后完成且不能反馈到求解”承诺由上面的实际 CLI 反例推翻;这里要求的是修复该扩展本身,不增加完整研究里程碑或付费模型门。经验建议仅采用其有用结果/用户路径视角,没有继承案例批准。
具体改动
全六文件 +1668/-21:README 说明权限/反馈、__init__.py 导出四 schema、catalog 注册和说明、environment_access 扩展 wrapper 与 exact typed-read、integrity 资格验证和摘要、单一 test 模块补正反例。特殊 benchmark provider 运算留 Python 合理,没有复制通用 Goal/控制面决策 owner。
关键代码讲解
environment_access.py:613authorized_task_environment_probe_count:严格 tool 名称、schema、authorization id/hash、非空同一名称子集和 result keys;从不为 shell 开例外。integrity.py:283_validated_policy:验证单一 task namespace/有界变量名;资格期权限不改已冻结的评估政策 digest。未知 task authority 不能仅靠形状被证明。integrity.py:824_validated_declared_feedback_runtime:提交 strictly ordered、仅 final 可 post-solver;delivery 要属于声明 channel,且在 evaluation 完成后和 solver 结束前;transport 验 ACK 与绑定。零反馈错误在 :953/:1021–1022。integrity.py:1071build_benchmark_integrity_qualification:原凭据值、来源、结构、runner checks 不被例外遮蔽;新 receipt 是输入派生,不是权限授予。
独立运行151 toolkit +21 registry tests通过。实际 CLI 的18个当前合成证据例验证精确读取、越界 result、错误授权、tool 大小写、包裹 env、未确认 ACK、错误 policy/trajectory、未知 channel、停止后反馈等;最后一个合法单提交反例确实失败,而“已有早期反馈 +final drain”通过。另三种网络模式九组完整 B/H CLI JSON和退出码相等。这里真实的是 CLI/reducer,runner/提交/transport 是声明清楚的合成输入,没有模拟真实执行或评分成功。
对主干的风险
默认盲评、普通 receipt 与 isolation/network 边界保持;command/exec/xargs 的默认探测硬化是有意行为变化,不能声称所有旧 shell 输入 feature-off 等价。shell parser 是有界语法分析,未知 wrapper/动态构造的误判仍是限制,不可当作 OS containment。四新 schema 已进 catalog,derived declared/authorized/rejected 不是额外持久权威。
Ruff、targeted mypy、开发期 advisory 后的全 semantic 和公开边界检查通过。原生 premerge 五 direct 通过,十九 selected 中十八通过;ratchet 仍红且 benchmark maintainer hold 保留。immutable B 的同命令输出与当前完整失败信息相同,frontier/ratchet/budget 源字节均一致;现有 native advisory 判断因 changed __init__.py basename 出现在 frontier 报错而保留 failed,未改检查、预算或状态来做绿。它是独立基线归因,P2 是当前真实行为问题。未查或等待 CI。
代码增加主要用于界定不可宽免的例外;无需新 runner 或通用框架。未来整理已考虑:任务读取在已有 parser owner,反馈作为一个内聚 validator;可用小型 typed state seam 局部明确零反馈/最终收尾,避免散落额外布尔值。修复不需扩大 PR 或全量语言迁移。新增政策可退回原 blind contract,无存量运行重写。
我的整体评价
REQUEST_CHANGES。精确 task read、隐私与显式 feedback 方向有价值,整 PR 的正例/负例和原边界已独立核验;当前单提交零反馈收尾却无法达到声明的有效最终结果,影响持续结果流和用户操作,须修复再在新 exact head 复核。真实 collector/任务授权 provenance、模型/官方分数、完整研究收益以及安装/Lark 使用仍未验,151或172测试不证明这些。没有运行 benchmark job、合并或改全局配置。
English verdict: REQUEST_CHANGES — ed25833. The real integrity CLI rejects an otherwise complete single final submission that drains after solver termination with no in-solving feedback, because deliveries and intent/ack counts must be positive.172 tests and bounded CLI positive/negative/parity probes pass around this uncovered case; fix zero-delivery validation without weakening binding, isolation or the blind default. Native premerge baseline debt and maintainer hold remain separate.
…-drain-fix-20261014 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
修复了当前评审指出的零反馈最终收尾问题,当前 head 仅最终一次提交在 solver 结束后完成时,显式空 验证:先加入真实 CLI 反例,修复前正例确实失败;修复后 toolkit+capability registry 共189测试通过,包括17个新正反例。36个三网络模式的默认盲评完整 receipt 与原 head 相等;Ruff、两文件 strict targeted mypy、semantic advisory/full-tree drift、公开边界和 diff checks 通过。premerge 五项 direct+十九项 selected 全部通过;其总门仍为 此处证明真实 CLI 对合成证据的判定,未证明真实 runner 采集、实际研究收益或完整 checkpoint restore。未启动额外实验、修改运行中源码/反馈机会、晋升历史结果或合并。请在当前 head 独立复核;原 REQUEST_CHANGES 保留到新 head 评审完成。 |
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; runtime_reported; reasoning_effort=xhigh
Exact head: f49b28aae157949a9617ba435d99c46cedc93a1f; merge base: 3dd3c550afecfa0c525a34e8744a3cf06774ac94.
没有发现当前 head 的阻塞性代码问题;上一轮 P2 已修复。 真实 CLI 现在接受仅最后一次提交在求解停止后完成、没有任何反馈流回求解的完整证据:capture=290、evaluation-start=295、completion=310、solver-end=300,显式 deliveries=[],request/response-ack=1、intent/ack=0。缺失列表、求解中完成却不交付反馈、非法或凭空增加的计数仍拒绝。
动机
已有 benchmark runner 和维护者需要区分任务明确允许的提交值、声明评估反馈,与 provider 凭据探测或未声明反馈。此前只有盲评资格,不能表达受限例外;原提案又误拒合法的零反馈最终收尾。当前实现消除了这个具体结果路径缺口,操作方不用伪造早期反馈记录。
这是现有资格 reducer 的有界前置能力。它不实现环境读取工具、认证外部任务权限或 runner,也不证明真实模型、官方分数、checkpoint restore 或研究收益。真实 CLI 对合成证据的正确判定不能替代真实采集与隔离。
改动思路
复用 benchmark_toolkit 的现有专用 Python parser 与 integrity owner,不另建通用权限或 Goal 决策源。精确 typed-read 必须绑定授权 id/digest、声明名称子集和实际结果;shell env/printenv 及 command/exec/xargs 包裹继续拒绝。反馈 opt-in 必须绑定政策、完整轨迹、提交顺序、channel 和 acknowledged transport;默认盲评保留。
判断依据是预改动 loopx/capabilities/benchmark_toolkit/README.md,版本 509c38c502d3d0b4eafb01550efcdc4b5b5a1d17:Integrity qualification 的私有输入、敏感值和独立边界检查已保留;Runner attestation 的 runner 责任、三种网络模式和隔离证明仍独立。新例外是本 PR 经验证的扩展,修改后的 README 不被当作授权 oracle。真实 runner 收集及授权 provenance 留给其既有 owner,不增加付费实验门。
具体改动
全六路径 +1777/-21:README、exports、catalog 四 schema、environment_access、integrity 和测试。三个未变 runtime/catalog/export blob 与上一轮独立全文审查源完全相同;当前全部差异和接受规范已重读,全部验证针对当前 head。
authorized_task_environment_probe_count校验大小写精确的 tool/schema、授权绑定、request subset 和 result keys;不为 shell 开例外。_validated_policy保持有界 namespace/变量名和 feedback policy digest;任务权限不是运行中改写已冻结政策的理由。_validated_declared_feedback_runtime保留 ordered submissions、仅 final 可 post-solver、完整 delivery/transport 的核对。新_nonnegative_int排除 bool,允许实际应有的整数零;required-delivery 集合仍精确匹配,不把缺失列表当作空列表。build_benchmark_integrity_qualification保留来源、结构、敏感值与独立隔离 blocker,公开输出只含有界标签、计数和 digest。
独立执行168 toolkit +21 registry 共189测试通过。18项实际 CLI 正反例验证授权/name/tool-case、wrapper、ACK、政策/轨迹、channel、停止后反馈和最终收尾;36组三网络模式与隔离负例的完整 baseline/head receipt 和退出码完全相等,无归一化。新的17项真实 CLI 回归覆盖合法零反馈和其反向边界。
对主干的风险
Ruff、两文件 strict targeted mypy、开发期 semantic advisory 后的 full-tree semantic、公开边界和 diff 检查通过。原生 premerge 五 direct、十九 selected 全通过;总门仍为 benchmark-sensitive manual_review_required,这是独立维护者门。未查询或等待 CI。
command/exec/xargs 的默认探测硬化是有意行为变化,不能宣称所有旧 shell 输入 feature-off 等价。普通盲评完整 receipt 的兼容性已验证。parser 是有界静态分析,动态 shell 和外部授权真实性仍有明确限制,不能当作 containment。
未来维护 pass 已应用:在最近的 validator 内复用非负整数判断,保留凝聚的反馈核验与既有 owner;不需要新 runner、框架或语言迁移。移除可选声明可退回原盲评协议,存量运行未重写。此次已有 CLI/Python qualifier 扩展,没有新增独立前端操作或配置;App/Lark、安装采用和真实 collector 未资格化。
我的整体评价
APPROVE。当前完整有界 reducer 增量和原 P2 修复有真实 CLI、正反例、全模块及完整 receipt 对照支持。批准不证明外部权限/采集、研究收益,也不授合并或撤销其他评审权限;旧阻塞 review 和维护者门需单独回读处理。
English verdict: APPROVE — f49b28a. The real integrity CLI now accepts a complete zero-feedback final drain while retaining delivery, ACK, binding, privacy and isolation rejection boundaries.189 tests,18 independent CLI cases and36 complete baseline/head receipt-and-exit pairs pass; native5 direct/19 selected checks pass. Real runner provenance and the benchmark maintainer hold remain separate.
Some benchmark tasks expose case-scoped submission values and intentionally return declared evaluation feedback while solving continues. The integrity qualifier previously treated those contracts as credential probing or undeclared official feedback. This proposal accepts only runner-owned typed task reads bound to immutable task authorization, and declared feedback bound to the admitted policy, complete trajectory, ordered captured submissions, exact channels and acknowledged transport. Shell environment probes and missing isolation remain disqualifying; the blind protocol remains the default.
A single final submission may drain after solver termination without delivering feedback into solving. The repaired validator accepts an explicit empty delivery list with integer zero feedback intent/ack counts for that case, while still requiring complete submission request/response evidence. It rejects missing delivery evidence, withholding feedback for an evaluation completed during solving, invalid or invented counters, undeclared channels and incomplete transport. Public receipts retain only bounded identifiers, counts and digests.
Validation:
Validation executes the real CLI/reducer with explicitly synthetic evidence. It does not establish real runner collection, actual task-authorization provenance, checkpoint restoration, benchmark score eligibility or research benefit. No jobs are launched or existing runs rewritten. Latest main was incorporated through a signed merge; the PR remains based on main and needs independent exact-head review and maintainer authorization before merge.