Repository navigation
Integrate explicit CAS recovery into benchmark r33 - #8227
loopx-agent wants to merge 5 commits into
Conversation
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>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
There was a problem hiding this comment.
Reviewer: model_agent | OpenAI gpt-6-astra | runtime_reported | reasoning_effort=ultra
Publication correction — superseded by formal approval
本次首次发布的审查包按 CLI 作者账号选择了 COMMENTED,但连接器实际使用另一个已授权账号;因此首次提交不应声称 GitHub 阻止该账号自审。此处保留完整分析及原记录,正式审批以 同一精确提交的 APPROVED review 为准。修正只涉及发布账号与状态,源码、验证与结论未改变。
动机 / Motivation
运行长任务的 Agent 在租约过期后,需要安全地收回执行权并继续更新同一个 Todo。旧建议让显式携带版本号的操作直接重试,而重新 claim 已推进版本,因此旧版本检查会再次拒绝;本组合让调用方领取后只读目标 Todo,协调当前内容,再用新的执行引用和读取版本重试。目标是消除必然失败的恢复指令,同时保留并发编辑保护。这里审查的是可用于后续运行的 r33 组合,不代表已经改善真实模型成本或分数。
改动思路 / Approach
r33 是 r32 与 #8225 的签名合并,复用原 TS claim/update owner、CLI 投影与 File/SQLite 权威存储,没有创建调度器或第二个写入入口。恢复仍由调用方完成:提示本身不 acquire、不把 claim 回包当作没有第三方编辑的证明,也不自动替换 CAS。CAS 是比较并交换所用的预期版本,调用者必须先协调当前 Todo 的内容。
整合还带入源分支已经继承的 #8213、#8220、#8224,分别涉及管家历史问题补答、补答依据绑定原问题之前的上下文,以及普通 Chat 请求 native reasoning summary。它们保持独立的 Chat/Lark owner;历史补答仍是受限答复,不重跑过去业务,执行模式也没有被切换为普通 Chat 的摘要策略。保留单一 typed owner 和原服务边界,组合不复制规则、不增加调度器;新增条件都沿既有调用者生效,安装资格直接校验实际接收代码。选择保留这个已评审且共同可追溯的提交组合,比重新复制整文件或私自挑改这些边界更可审计;当前 PR 的边界是源码组合及隔离安装资格,不包含 live 升级、新实验准入或主干合并。
具体改动 / Changes
审阅 exact head 528c7f1b1071323d7fbc56c7aa535741955a1c2b,目标是 r32 b7f28a6096f6c3b76606776b2b8371b752b1eab5。新增历史仅 3 个 main 提交、#8225 和 merge;5 个提交都有 DCO,18 个变化文件逐 blob 等于这些来源,没有人工冲突改写。#8225 源修复由另一位 Agent 完成独立审阅;本审阅验证其进入组合后的来源和路径,不以作者自己的源测试代替独立审阅。
验收依据为 docs/reference/handoff-mode.md,固定基线 b7f28a6096f6c3b76606776b2b8371b752b1eab5。Ordinary Agent CLI work:执行证明必须来自当前有效 claim,恢复建议无执行权限;原 receipt 重放不能重新申请执行。该要求在组合中保留,显式 CAS 仅增加定向读取与协调步骤。Chat 补答另外核对同一基线的 docs/architecture/rfcs/app-conversation-and-async-inbox-v0.md:原来源、只读答案、Stop 和未知业务效果的边界继续成立;新增历史来源说明在中英文 RFC 中成对呈现。
关键代码讲解
claimExecutionRecovery(claim_execution_recovery.ts:15)只在原执行已过期且普通 claim 预览仍合法时给出恢复方案;显式版本存在时才加入同 Todo 读取要求。普通 no-CAS 分支保持原建议,错误或不可领取状态仍归原 owner。_route_native_recovery(todo_event.py:43)保留原操作意图和 id,将新 claim 引用、读取版本投影为待填写参数。它不伪造新版本,也不把像参数的 note 文本当作控制字段;最终 update 仍经过同一写入校验。admit_history_answer(external_conversations.py:715)把 provider_history 来源交给既有 Core 队列和受限 adapter;后台工作、忙碌、Stop、撤销或来源变化会保持等待。history_answer_context只取原问题之前的可读依据,不能把后来的回复套回旧问题。CodexChatAgentSession.send的chat_agent.py:1760只在非 execution_mode 时请求 concise summary;codex_operation_host.py:126的实际 Turn caller 显式传 execution_mode=True,保留执行宿主策略。
对主干的风险 / Risks
最重要的反例是新 claim 已成功,但其前后又有人编辑 Todo。只把旧版本改成 claim 返回版本会越过调用方协调义务。本次组合安装场景保留读取后的竞争写入,旧重试必须拒绝,定向读取并协调后才能成功,精确重放不产生第二次写入。原 source PR 的 before-claim/after-read、转移、Stop 与 no-CAS 完整回包反例也经独立审阅,相关生产源码与本组合完全相同。
PASS:独立运行 24 个 Python 原服务/合成 native peer 场景和 60 个 TS conversation-binding 场景,覆盖原问题上下文、来源变化、撤销/Stop、后台工作、响应丢失和一次补答。相同摘要夹具在 r32 上只有普通 Chat 新期望失败,execution 分支通过;r33 两分支都通过,说明该默认变化明确限于普通 Chat。PASS:精确头 quick premerge 六项 direct、四项 selected 检查以及 bilingual/public-boundary 检查。PASS:真实 SDK 在隔离 Linux work image 中安装完整冻结包;8,070 个归档成员和 7,384 个 tracked 文件的接收字节已核验,重建 bundle 的 717 个源输入也验证有效。File/SQLite 各 19 次调用使用实际安装的 profile/bin/loopx,清除 PYTHONPATH、从合成 Goal 目录进入,验证过期拒绝不写入、读取后竞争拒绝、协调后成功和精确重放。测试容器已清理,没有模型或评测器调用。
语义与 CI 对齐
本组合复用既有 claim/lease、provider revision、原消息来源和只读补答语义。no-CAS 的恢复建议保持兼容;显式 CAS 新建议是有意修正,不是放松写入门槛。summary 的普通 Chat 默认变化已在 PR 中披露。按当前 capability 契约未查询或等待远端 CI;本地实际证据与 merge readiness 分开。安装夹具曾因测试 manifest 权限不允许 agent 读取而失败;旧失败保留,不能冒称产品失败或先前通过。
我的整体评价 / Verdict
没有剩余阻断源码 finding。长程方面,该组合使同一 Todo 的恢复能继续到可核验的更新,而非保证模型一定遵从提示;用户体验方面不新增配置、人工确认或全 Goal 重读。兼容保留的是现有 no-CAS 调用与历史补答 receipt,未引入第二套恢复决策。这里没有布局或新控件变化,检查的是 CLI/原消息补答路径,视觉截图不适用;未验证范围为真实模型采用、实测节时/成本/得分、实际账号调用和新 cohort 资源准入。
最终结论仅适用于上述精确组合头及已说明的安装边界;并不批准合 main、热换活跃 worker 或改变原 scorer/task/budget。此次实际安装覆盖 87ff2f67 work image。另一个计划启动镜像 d3da187d 的只读差异证明显示前 14 层和运行配置一致,仅增加公开开发检查器及说明;这支持复用运行环境资格,但不等于在 d3da 上重跑过完整安装链,也不自动批准新 cohort 准入。
English verdict: APPROVE for exact head 528c7f1. No blocking integration finding; actual installed CLI recovery and full received-source equality are verified. Live rollout, alternate-image qualification and measured model benefit remain separate.
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | OpenAI gpt-6-astra | runtime_reported | reasoning_effort=ultra
Independent approval conclusion
动机 / Motivation
运行长任务的 Agent 在租约过期后,需要安全地收回执行权并继续更新同一个 Todo。旧建议让显式携带版本号的操作直接重试,而重新 claim 已推进版本,因此旧版本检查会再次拒绝;本组合让调用方领取后只读目标 Todo,协调当前内容,再用新的执行引用和读取版本重试。目标是消除必然失败的恢复指令,同时保留并发编辑保护。这里审查的是可用于后续运行的 r33 组合,不代表已经改善真实模型成本或分数。
改动思路 / Approach
r33 是 r32 与 #8225 的签名合并,复用原 TS claim/update owner、CLI 投影与 File/SQLite 权威存储,没有创建调度器或第二个写入入口。恢复仍由调用方完成:提示本身不 acquire、不把 claim 回包当作没有第三方编辑的证明,也不自动替换 CAS。CAS 是比较并交换所用的预期版本,调用者必须先协调当前 Todo 的内容。
整合还带入源分支已经继承的 #8213、#8220、#8224,分别涉及管家历史问题补答、补答依据绑定原问题之前的上下文,以及普通 Chat 请求 native reasoning summary。它们保持独立的 Chat/Lark owner;历史补答仍是受限答复,不重跑过去业务,执行模式也没有被切换为普通 Chat 的摘要策略。保留单一 typed owner 和原服务边界,组合不复制规则、不增加调度器;新增条件都沿既有调用者生效,安装资格直接校验实际接收代码。选择保留这个已评审且共同可追溯的提交组合,比重新复制整文件或私自挑改这些边界更可审计;当前 PR 的边界是源码组合及隔离安装资格,不包含 live 升级、新实验准入或主干合并。
具体改动 / Changes
审阅 exact head 528c7f1b1071323d7fbc56c7aa535741955a1c2b,目标是 r32 b7f28a6096f6c3b76606776b2b8371b752b1eab5。新增历史仅 3 个 main 提交、#8225 和 merge;5 个提交都有 DCO,18 个变化文件逐 blob 等于这些来源,没有人工冲突改写。#8225 源修复由另一位 Agent 完成独立审阅;本审阅验证其进入组合后的来源和路径,不以作者自己的源测试代替独立审阅。
验收依据为 docs/reference/handoff-mode.md,固定基线 b7f28a6096f6c3b76606776b2b8371b752b1eab5。Ordinary Agent CLI work:执行证明必须来自当前有效 claim,恢复建议无执行权限;原 receipt 重放不能重新申请执行。该要求在组合中保留,显式 CAS 仅增加定向读取与协调步骤。Chat 补答另外核对同一基线的 docs/architecture/rfcs/app-conversation-and-async-inbox-v0.md:原来源、只读答案、Stop 和未知业务效果的边界继续成立;新增历史来源说明在中英文 RFC 中成对呈现。
关键代码讲解
claimExecutionRecovery(claim_execution_recovery.ts:15)只在原执行已过期且普通 claim 预览仍合法时给出恢复方案;显式版本存在时才加入同 Todo 读取要求。普通 no-CAS 分支保持原建议,错误或不可领取状态仍归原 owner。_route_native_recovery(todo_event.py:43)保留原操作意图和 id,将新 claim 引用、读取版本投影为待填写参数。它不伪造新版本,也不把像参数的 note 文本当作控制字段;最终 update 仍经过同一写入校验。admit_history_answer(external_conversations.py:715)把 provider_history 来源交给既有 Core 队列和受限 adapter;后台工作、忙碌、Stop、撤销或来源变化会保持等待。history_answer_context只取原问题之前的可读依据,不能把后来的回复套回旧问题。CodexChatAgentSession.send的chat_agent.py:1760只在非 execution_mode 时请求 concise summary;codex_operation_host.py:126的实际 Turn caller 显式传 execution_mode=True,保留执行宿主策略。
对主干的风险 / Risks
最重要的反例是新 claim 已成功,但其前后又有人编辑 Todo。只把旧版本改成 claim 返回版本会越过调用方协调义务。本次组合安装场景保留读取后的竞争写入,旧重试必须拒绝,定向读取并协调后才能成功,精确重放不产生第二次写入。原 source PR 的 before-claim/after-read、转移、Stop 与 no-CAS 完整回包反例也经独立审阅,相关生产源码与本组合完全相同。
PASS:独立运行 24 个 Python 原服务/合成 native peer 场景和 60 个 TS conversation-binding 场景,覆盖原问题上下文、来源变化、撤销/Stop、后台工作、响应丢失和一次补答。相同摘要夹具在 r32 上只有普通 Chat 新期望失败,execution 分支通过;r33 两分支都通过,说明该默认变化明确限于普通 Chat。PASS:精确头 quick premerge 六项 direct、四项 selected 检查以及 bilingual/public-boundary 检查。PASS:真实 SDK 在隔离 Linux work image 中安装完整冻结包;8,070 个归档成员和 7,384 个 tracked 文件的接收字节已核验,重建 bundle 的 717 个源输入也验证有效。File/SQLite 各 19 次调用使用实际安装的 profile/bin/loopx,清除 PYTHONPATH、从合成 Goal 目录进入,验证过期拒绝不写入、读取后竞争拒绝、协调后成功和精确重放。测试容器已清理,没有模型或评测器调用。
语义与 CI 对齐
本组合复用既有 claim/lease、provider revision、原消息来源和只读补答语义。no-CAS 的恢复建议保持兼容;显式 CAS 新建议是有意修正,不是放松写入门槛。summary 的普通 Chat 默认变化已在 PR 中披露。按当前 capability 契约未查询或等待远端 CI;本地实际证据与 merge readiness 分开。安装夹具曾因测试 manifest 权限不允许 agent 读取而失败;旧失败保留,不能冒称产品失败或先前通过。
我的整体评价 / Verdict
没有剩余阻断源码 finding。长程方面,该组合使同一 Todo 的恢复能继续到可核验的更新,而非保证模型一定遵从提示;用户体验方面不新增配置、人工确认或全 Goal 重读。兼容保留的是现有 no-CAS 调用与历史补答 receipt,未引入第二套恢复决策。这里没有布局或新控件变化,检查的是 CLI/原消息补答路径,视觉截图不适用;未验证范围为真实模型采用、实测节时/成本/得分、实际账号调用和新 cohort 资源准入。
最终结论仅适用于上述精确组合头及已说明的安装边界;并不批准合 main、热换活跃 worker 或改变原 scorer/task/budget。此次实际安装覆盖 87ff2f67 work image。另一个计划启动镜像 d3da187d 的只读差异证明显示前 14 层和运行配置一致,仅增加公开开发检查器及说明;这支持复用运行环境资格,但不等于在 d3da 上重跑过完整安装链,也不自动批准新 cohort 准入。
English verdict: APPROVE for exact head 528c7f1. No blocking integration finding; actual installed CLI recovery and full received-source equality are verified. Live rollout, alternate-image qualification and measured model benefit remain separate.
Expired execution recovery can successfully reclaim a Todo while leaving an explicit caller CAS stale. This integration brings #8225 onto the r32 benchmark branch: recovery now directs the caller to read that same Todo, reconcile the intended edit, and fill the new claim reference and read revision before retrying. Concurrent edits remain protected; recovery does not automatically rebase writes or override Stop.
The signed merge contains r32 unchanged, the reviewed #8225 head
e41288848929faee77bdadaf91fa15dacfa152b1, and its three already-merged main ancestors: #8213 (Lark answers), #8220 (historical Chat context), and #8224 (ordinary Chat reasoning summaries). All 18 changed files match those source commits byte-for-byte; there are no manual merge resolutions. The integration-branch capability verified the signed candidate against the configured base and source.Validation on
528c7f1b1071323d7fbc56c7aa535741955a1c2b:87ff2f67. The SDK-uploaded source archive was recorded, and all 7,384 tracked source files matched the frozen checkout byte-for-byte.profile/bin/loopxentrypoint, withPYTHONPATHremoved and the CLI working outside the staged source. Each journey verified the expired-proof refusal, targeted read after claim, concurrent-edit rejection, explicit reconciliation, and exact replay. The existing failed-continuation digest fence also rejected an invalid input without creating a phase.d3da187dinherits all 14 tested base layers unchanged. Read-only image inspection found only three added public checker/instruction COPY layers and source-label changes; all runtime configuration fields are identical. Its checker has separate positive/negative qualification. The full installation and CAS journeys were run on87ff2f67, not repeated on the derived image.This PR targets the r32 integration branch. It does not merge into main, upgrade running workers, change scorer/task identities or budgets, or establish model adoption or benchmark score improvement. Runtime rollout and exact-head merge authority remain separate.