Repository navigation
fix(benchmark): keep captured-context recovery progressive - #7719
Conversation
c705424 to
894e4b1
Compare
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
动机 / Motivation
启用上下文交付的 benchmark worker 在继续已获准的任务时遇到投影失败。
旧路径要求从原文件读完大型可选材料;补丁把预置恢复命令改为索引和选择读取,但真实原生失败响应仍发出完整分页指令。
辅助函数的恢复命令已变为按需读取,原生失败响应中的相反义务仍需修复。
本次审查不验证真实模型采用、长程收益、已安装行为或运行中实验切换。
有用结果应是恢复当前决定确实需要的条件后,继续原有任务;原文件已完整保存,并不要求把可选材料全部再送进模型。这里应修正同一次失败链上实际送达的读取义务,既保留来源和停止条件,也避免原本不需要的人工作业。
改动思路 / Approach
索引和选择应复用 quota reader;失败消息也必须在同一 native owner 保持一致,无需增加恢复状态或第二个决策器。
当前边界是已启用 worker 的投影失败恢复与源码验证来源说明;default-off、成功投影和实验计分不扩展。
checkpoint 在已执行原 guard 后调用 preflight_context_instruction。该函数复用共享导航常量并生成 context-project 与恢复命令,方向合理:已知路径直接选择,未知路径先查索引,随后只读依赖事实。真正的 native 投影、目录安全、SHA 校验和缓存仍由 quota owner 决定,没有新增配额或持久化决策器。
但模型随后还会看到实际 CLI 的失败消息。这条消息仍携带无选择器的完整 reader,并要求跟到 EOF。只修预置提示,无法让这条同一故障链上的两份指令一致。最小修复是在已有 native failure owner 中保留渐进恢复,并在选择完整读取时保留连续字节和摘要校验;不需要新框架或额外确认。
具体改动 / Changes
审查提交为 894e4b1cb0830a2a6650c97016abf9977551b698;3 个文件,+134/-6。生产函数 +5/-3,新回归 +106,开发指引 +23/-3。成功投影 argv 没有改动;文档正确区分了单次 python -c 的来源与其他 console script 的来源,并提供子进程范围的 PYTHONPATH 固定方式。
关键代码讲解
preflight_context_instruction将无选择器的恢复命令改为--list,并复用CONTEXT_CAPTURE_NAVIGATION_GUIDANCE。原 capture 路径、摘要和 Turn 仍传入原命令,恢复没有重新执行 guard。project_saved_context_capture校验捕获的 Goal、Agent 和 Turn,再尝试 native 准备。其错误分支仍拼接完整读取说明,因此真实失败响应保留了旧义务。- 新增真实 CLI 回归 只要求投影命令返回非零。夹具缺少
ok、agent_identity、heartbeat_receipt,也没有显式提供 benchmark heartbeat 声明,因而不能证明已进入所声称的 native 目录失败分支。
规格基准为 docs/reference/required-work-context.md,版本 a13fc6236cd31128c1cd056eac931b173ffbefa5。逐项映射:Selected capture details / 按需读取捕获详情 not_met,真实 native 失败仍要求完整分页;Opt-in native reuse implemented,成功与 off 激活边界保留;Saved context cache / 已保存上下文缓存 implemented,原来源、摘要和身份未被恢复操作更新。上述判断采用修改前的契约,未把本 PR 的文档当作独立验收依据。
对主干的风险 / Risks
[P2] 真实 native 失败仍发出完整回放义务,新测试没有覆盖它。 在有效的合成捕获中保留原身份,声明 LOOPX_CONTEXT_DELIVERY=on 与 LOOPX_EXECUTION_MODE=heartbeat,再让 native context 路径不可用,实际生成的命令返回 quota_decision_transport_failed。响应仍要求运行无选择器的 recovery.command 并“Follow next_command through eof”。这正是待修复的失败路径;可选材料仍会与新导航说明形成相反义务。
修复应让新增测试具备真实的捕获身份与 worker 声明,并断言错误类别及完整恢复说明。随后在启用 native 的失败响应中复用现有索引/选择恢复规则。保留 SHA 错配拒绝、原 Turn、成功投影和 off 下的完整读取语义,不通过删去来源或停止条件来缩短文本。
验证记录如下,均固定源码检出和隔离夹具,未查询或等待 GitHub CI:
- PASS:相关 worker、SForge 与真实 reader CLI 共 210 项通过;340 项可选 Harbor/native 环境用例跳过,未据此声称真实 Host 或模型资格。
- PASS:同脚本 on/off 和默认路径对照在不可变基线与当前 head 各 28 项通过。
- PASS:同一 464339 字节夹具,预置恢复由完整源首片变为 491 字节索引;必要条件选择读取正确,伪造摘要被拒绝,成功投影仍返回 full/ok,源文件不变。
- FAIL:加入有效身份和 worker 声明后,整条 native 失败指令 oracle 仍失败;这与函数级改进分开记录。
- PASS:标准 premerge:5 direct checks; 18 selected; gate manual_review_required; failures []; manual holds 1。标准检查不能覆盖上面的反例;benchmark-sensitive 独立审查及合并权限仍是单独边界。
语义与 CI 对齐
此次复用既有 reader 和上下文词汇,没有新增持久化状态或第二个授权 owner。需要补齐的是当前入口实际发出的恢复语义。修复后的验证应同时执行有效 native 失败与 off/success 对照,不把任何非零退出都视为命中该故障。预置文本变短或标准检查通过,均不能证明模型已经采用了恢复规则。
我的整体评价 / Verdict
当前有一个完整链路上的阻塞缺口,结论为 REQUEST_CHANGES。补丁的命令复用和来源说明具有实质价值,规模也合适,但尚未完成宣称的失败读取义务修正。长程恢复和用户路径均记为 not_yet_proven:最小欠缺是上述 native 失败分支与回归,无需扩展到整套 roadmap 或付费模型实验。
检查了 worker 指令和 reader CLI;本 PR 没有渲染页面改动。 无渲染页面需要验证;真实模型或已安装应用采用未验证。
受影响的新旧说明已经逐句比较:原身份、权限新鲜度、先读必要事实及不重复记账等约束保留,完整回放义务仍在实际失败输出中。现有 generic/off 兼容路径应保留。真实模型采用和长期成本收益仍未验证;本结论没有合并或切换运行实验的授权。
English verdict: REQUEST_CHANGES at 894e4b1cb0830a2a6650c97016abf9977551b698 — the enabled native failure response still requires full replay; the new test does not reach that branch. The narrower helper improvement and source checks do not close this recovery gap.
loopx-agent
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
当前 exact head 未发现阻塞代码问题。合并权限与 readiness 单独判断。
Reviewer: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max
Exact head: e200fbe20ac3e8f07301e57af536059f59d2099c;whole-PR base: d3d9ad209d0a8f57a7582e0165f2fad19df26dcf。完整 base-to-head diff 已审阅,并核对 target main 8d48efabb351c9cc68f48f48dee64a49b4fc1890;作者报告未代替独立验证。
动机
受影响调用方:在显式启用 native context 的隔离 worker 中,恢复已捕获决策的 Agent。
展示已捕获决策失败时,旧指引要求读完包含大量可选材料的整个原包;当前指引先发现字段,再按同一 capture/hash 选择本次决策需要的事实。
可观察结果:真实 context-project 失败后,仍能读取原捕获中的必要 criteria、拒绝错误 SHA,并在修复临时展示目录后成功呈现原决策;原 capture 与 Turn receipt 保持不变。
边界:不改变 admission、执行权限、配额、任务或捕获内容;不据此认证已安装宿主、真实模型采用、C1 完整切换或长期完整成本收益。
改动思路
接受契约 docs/reference/required-work-context.md,spec_revision d3d9ad209d0a8f57a7582e0165f2fad19df26dcf。criterion_id:Selected capture details / 按需读取捕获详情; Opt-in native reuse; Saved context cache / 已保存上下文缓存。采用变更前的接受文本判断;本 PR 修改的说明不能自行证明实现正确。
恢复指引应复用原 capture reader 与现有 native 输出预算;无需新增摘要、状态 owner 或重跑 guard。实际 native 失败分支与 benchmark helper 必须一起遵守选择性恢复。
本次边界:本次只修复预检 helper 和真实 native 展示失败时的恢复路径,并补齐源码验证说明与真实 CLI 回归;不扩大 benchmark 执行或自动化 authority。
普通 default-off 的 full-read 约束仍保留;显式 native 的 progressive-read 契约允许先发现,再读本次需要的事实。索引不证明隐藏内容已送入模型,读取或重试也不更新 authority/freshness。选中值跨页时,仍须验证连续 offset、total_bytes、SHA 并读完该选择;不能把减少上下文当成删除必要要求的理由。
具体改动
preflight_context_instruction 保留原 capture/hash 与现有 context-project 入口,失败时改用 --list 发现未知指针。现有 checkpoint 调用方仍负责显式 native 配置,不新增摘要器或准入路径。
project_saved_context_capture 的真实 native catch 同步返回 budgeted recovery index,保留 typed error、原 receipt 和捕获 digest。它复用既有 page/output budget 与通用 reader,不手写第二套权限、数据或恢复状态。
完整四路径 +163/-10。相对前次 894e4b1cb0830a2a6650c97016abf9977551b698,不仅 helper 的文字改动被检查:前次发现的实际 native 失败分支仍全量排空、测试未进入该分支,现已独立复测。冻结原 probe 在旧 head 只因原 native instruction 的 unconditional EOF 要求失败;当前 e200 通过。464339-byte 合成捕获包含大量无关材料,491-byte index 即可发现必要 criteria;真实 select、错误 SHA 拒绝、修复展示目录后的成功呈现,以及原捕获字节不变均完成。
本次独立 Python 3.14 验证:广泛相关套件 165 通过、110 跳过;跳过分别为 39 项显式 Docker writer-barrier、4 项其他 Docker、9 项缺 sforge、51 项缺 harbor、7 项显式 native Codex。没有将这些跳过算作通过,也没有为本次评审安装可选 provider 或调用模型。原有 default/off、native/on、受支持/不支持命令及相邻 transport 在 immutable base/head 各 28 项通过、零跳过;另在实际 Python 3.12 下运行相关真实 CLI/恢复路径,19 项通过、零跳过。
源码验证说明同时澄清:仓库根目录的 python -c 或相同版本字符串不能证明另一个 CLI 的来源;本次子进程固定实际 checkout,并记录解释器、模块路径和 argv。测试没有写活动 Goal/registry/lease。
对主干的风险
最强风险是 helper 看似渐进,而真实失败响应继续强制全包读取;上述旧 head 反例直接覆盖这个边界。另一个风险是拿索引当作必要事实的交付证明。当前文本明确要求先读适用目标、约束和停止条件,保留必要选中值的完整分页,原 generic full reader 仍可用于未知范围或确需全文的决策。
Ruff、changed-path Ruff、配置的 mypy、全分支 DCO、完整 diff 与公私边界检查通过。标准 premerge 运行 6 项 direct、19/19 项 selected 自动检查,零失败;进程 exit 1 仅来自 benchmark_sensitive 人工审查 hold。该 hold 与单独的 maintainer merge authority 保留,不能称作 merge-ready 或授权 self-merge。wait_for_ci=false,未查询、轮询或等待 CI。
我的整体评价
前次两个问题在实际 owning path 上已修复,当前 whole PR 是可独立验收、回滚的小范围恢复修复。它不启动 benchmark、不改评分/任务语义,也没有将 transport 成功包装成模型采用或完整成本收益。现有 reader、预算与 typed error 已足够;无需新增恢复框架或要求完成整个 C1 才能修复当前故障。
检查真实 CLI 及其恢复/读取入口;本 PR 没有渲染页面、视口或新增设置变化。
未验证范围:不改变 admission、执行权限、配额、任务或捕获内容;不据此认证已安装宿主、真实模型采用、C1 完整切换或长期完整成本收益。
English verdict: APPROVE. Progressive same-capture recovery now covers the actual native failure branch; the separate benchmark manual-review and merge-authority holds remain.
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
e200fbe to
11ed873
Compare
huangruiteng
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · GPT-5 · OpenAI · self_reported · effort_unavailable
精确 head:11ed8730a7770150f8b53ea8208e9efd47c6ca05。结论:APPROVE,没有阻断发现。分支已 rebase 到当前 main,前次 native 失败路径的缺口在真实 CLI 回归中得到覆盖。
动机 / Motivation
显式启用 native context 的 benchmark worker 在继续已获准任务时,若保存决策的投影失败,Agent 需要从原 capture 恢复当前决定所依赖的事实,而不是重新准入或猜测外部状态。
旧路径在失败后要求读取包含大量可选材料的完整包并跟完全部分页;现在先用原 capture/hash 的字段索引发现未知指针,再选择读取当前决定确实需要的事实。相同故障下,必要的目标、验收与停止条件仍可读取,错误 SHA 仍被拒绝,原 capture、Turn receipt 和 freshness 不变。
若维持旧行为,每次投影失败都可能把无关材料重新送进模型,增加上下文和等待成本,却不增加决策依据;返回无选择器的 reader 还可能与同入口的 progressive-read 指引冲突。
本次边界是已启用 native delivery 的失败恢复和源码验证来源说明;不改变成功投影、default-off 的完整读取义务、admission、权限、配额、任务内容或运行中实验的评分与计时。
改动思路 / Approach
恢复链路以 checkpoint 的保存视图为入口:worker 首次尝试既有 context-project,失败后回到同一 immutable capture,由既有 context-read --list/--select 发现并读取必要条件,最终把 Typed transport error、Turn receipt 与 capture digest 交回调用方。quota owner 仍决定投影、预算、路径安全和摘要校验;恢复不会重新执行 guard、spend 或 admission。
当前 PR 边界是修正两条实际送达给 Agent 的恢复指引,而不是增加恢复状态、摘要器或通用上下文框架。benchmark/runtime/context_delivery.py 与 loopx/cli_commands/quota_capture.py 必须同时修改,因为模型会先看到预置提示,再看到真实 CLI 的失败响应;只改其中一条会让同一故障链继续发出相反义务。成功路径和关闭 delivery 的 generic reader 不在本次行为扩张内。
具体改动 / Changes
最终 diff 为 4 个文件、+163/−10:生产代码 +20/−7,真实 CLI 回归 +120,开发验证指引 +23/−3。没有生成代码、机械移动或新的持久状态。
规格基准为 docs/reference/required-work-context.md,版本 65101d6a6133bbb97c6a7832b20d11e55257ad19。逐项映射:Selected capture details / 按需读取捕获详情 implemented,失败恢复现在先 list 再按需 select,同时保留必要 selected value 的连续分页;Opt-in native reuse implemented,成功投影与 off 激活边界未变;Saved context cache / 已保存上下文缓存 implemented,恢复仍使用原 capture 路径、SHA-256 和原 Turn identity。
关键代码讲解
preflight_context_instruction保留原context-project命令、capture/hash、Goal/Agent/Turn 和 native 目录,只把失败 fallback 从完整 reader 改成绑定同一 capture 的context-read --list。它复用共享CONTEXT_CAPTURE_NAVIGATION_GUIDANCE,明确隐藏索引不是已读证据,恢复也不会续期 authority。project_saved_context_capture的真实 native failure catch 现在把full_reference转成带相同 path/hash 和原生 page/output budget 的索引命令。响应保留quota_decision_transport_failed、heartbeat receipt、capture digest 和“不重跑 admission”要求;选中值跨页时仍要求连续 offset、total_bytes 和 SHA 校验。test_projection_failure_keeps_original_capture_selectively_readable使用带ok、agent identity、heartbeat receipt、有效 Goal/Agent/Turn 和不可用 native 目录的真实 CLI 夹具,实际进入quota_decision_transport_failed分支;随后验证索引、/work/criteria选择读取、源文件不变和伪造 SHA 拒绝。testing-and-quality区分当前 Python 调用的来源与另一个 console script 的来源。继承的PYTHONPATH或被安装包遮蔽的模块会让“版本号相同”变成假阳性;文档要求只在验证子进程内固定实际 checkout,并记录解释器、模块和 argv。
对主干的风险 / Risks
没有发现剩余阻断项。最强回归场景是 helper 已逐步恢复,但真实 CLI 失败响应仍要求完整回放;新增回归会在失败响应中同时检查错误码、--list、必要条件读取、错误 SHA 拒绝和 Turn receipt,因此覆盖了此前遗漏的 owning path。
另一个反例是出现任何非零退出就误以为命中 native 故障。当前夹具使用完整身份和 LOOPX_CONTEXT_DELIVERY=on、LOOPX_EXECUTION_MODE=heartbeat,并断言错误类别,能够区分“native 投影失败”和一般参数/来源错误。context delivery 关闭时仍走 generic full-read 指引;现有参数化测试继续覆盖 omitted/off/on 和 available native cache 不激活 off 的行为。
| 检查 | 结果 | 当前 head 证据 |
|---|---|---|
| changed invariant positive | PASS | 真实 CLI 失败后返回 list 索引,按需读取 criteria,文件与 digest 不变 |
| material negative | PASS | 伪造 SHA、错误 Goal/Agent/Turn、不支持命令和 off 路径均拒绝或保持原义务 |
| repository required checks | PASS | premerge 19/19,0 failures / warnings |
| manual benchmark review | REQUIRED THEN REVIEWED | benchmark_sensitive hold 已由本 exact-head review覆盖,不启动 benchmark、不修改评分 |
| real model/Harbor/native environment | UNVERIFIED | 124 passed、7 skipped;跳过代表外部环境缺口,不计作通过 |
当前引导只说明恢复阅读的顺序,不证明模型采用、隐藏材料已被理解、长程结果改善或 token 成本下降。原 capture 和失败 receipt 保持不变,回滚只需恢复这两处生产指引;本 PR 不写活动 Goal/registry/lease。
语义与 CI 对齐
本 PR 复用既有 context-project、context-read --list/--select、quota_decision_transport_failed 与共享 CONTEXT_CAPTURE_NAVIGATION_GUIDANCE,没有新增语义词表、状态枚举或持久化协议。实现按 docs/reference/required-work-context.md 的 progressive-read 契约调整失败指引;语义扫描、Ruff、真实 CLI 和 off/on 回归共同检查了定义、实际入口与默认关闭路径。
我的整体评价 / Verdict
APPROVE。 精确 head 11ed8730a7770150f8b53ea8208e9efd47c6ca05 在真实 native 失败分支上完成了修复:先发现字段,再读取当前决定需要的事实;必要值的分页完整性、原 SHA、Turn/effect identity、authority 与 freshness 均保留。long_horizon 为 improved,因为失败恢复不再被无关可选材料阻塞;user_experience 为 improved,因为 Agent 收到一致、可执行的恢复命令,而不需要人工猜测完整包内容。
本次复用了既有 context-read、typed error、native page budget 与共享导航词汇,没有新增状态 owner 或协议。default-off 行为保持隔离,成功投影命令未变,authority 语义没有扩大;development 文档只修正验证来源,不改变产品运行规则。语义增量沿用既有 context recovery 词汇,没有需要更新的共享词表。
当前 head 的相关 saved-context、context-delivery CLI 与真实 native failure 回归共 124 passed, 7 skipped;跳过项需要外部 native/provider 环境,未据此声称完整 Host 或模型资格。Ruff、diff、RFC 双语、公开边界和 premerge 的 19 项自动检查均通过;premerge 的唯一 benchmark_sensitive 人工 hold 已在本 review 中按“不启动 benchmark、不改变评分/任务语义”的边界处理。按 loopx-meta 的 wait_for_ci=false,未查询或等待远端 CI。合并 readiness 仍需在合并前单独读取。
本 PR 没有渲染页面或交互布局变化,因此视觉审查不适用;已检查 CLI error packet、真实 reader 命令和开发文档。未验证范围是已安装宿主、真实模型采用、可选 Harbor/native provider 运行和长期完整成本收益。
English verdict: APPROVE — 11ed8730a7770150f8b53ea8208e9efd47c6ca05. The actual native projection-failure response now discovers fields and selects necessary facts from the original hash-bound capture, preserving Turn identity and default-off full-read behavior. The targeted real-CLI regression passes; 124 relevant tests pass with 7 external-environment skips, Ruff passes, and premerge has zero automatic failures with only the benchmark-sensitive manual hold.
原生 worker 的上下文投影失败时,恢复指引仍要求读完整包并跟完全部分页,与同一入口的按需读取规则冲突。现在先通过原 capture 的通用字段索引发现未知路径,再按当前决定需要的事实选择读取;已知路径仍可直接读取。原文件、SHA-256、Turn/effect 身份及权限新鲜度约束保留。
开发验证指引也明确了来源差异:继承的
PYTHONPATH可能使 venv 的 console script 导入安装版,而根目录的python -c检查掩盖这一点。文档给出只对当前子进程固定源码来源的调用方式;新增真实 CLI 回归也显式固定并检查实际检出目录。验证:
65101d6a61,当前 head11ed8730a7。标准源码 premerge 的直接检查、10 项 catalog canary、8 项 risk-profile smoke 与公开边界扫描全部通过,0 failures / warnings;唯一 hold 是本 PR 显式保留的benchmark_sensitive人工审查边界。初次因缺少 TypeScript 开发依赖而失败的记录保留;补齐依赖后通过,开发指引已说明这一条件。复用现有 quota reader 和共享导航指引,修改仅涉及投影失败后的读取义务及开发验证来源。成功投影命令和 context delivery 关闭的分支保持原样。当前运行中的实验仍保留原来源和计时;本提案不构成长程成果、token 或费用收益证明。