Skip to content

feat(benchmark): recover native feedback and explicit research waits - #6902

Open
songoow wants to merge 1 commit into
codex/split-research-execution-evidencefrom
codex/split-native-feedback-recovery
Open

songoow wants to merge 1 commit into
codex/split-research-execution-evidencefrom
codex/split-native-feedback-recovery

Conversation

@songoow

@songoow songoow commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

目标与交付边界

原生提交可能丢回复,结果也可能晚于工作区中的新候选。研究必须继续使用原操作、已接受的 native 身份、不可变候选快照和对应反馈,并使等待该结果的工作可靠恢复。

这是 #6784 / #6838 拆分中的 C3 native 反馈与等待恢复。提交、反馈消费和 canonical 等待互相依赖,因此作为一个完整可回滚的切片审阅。

Author Declaration

Implemented against

Criterion (spec clause) Disposition Symbol / path Test or command
Native acceptance/recovery:原操作和 accepted 归档唯一绑定;丢回复恢复且不重复 POST;歧义保持未知 implemented research_submission.py;edgebench/research_feedback.py 原 native HTTP/cost 30 passed + 4 skipped;另一明确组合输入精确补四 native 脚本节点 4 passed,分批披露。
Explicit feedback dependencies/wakeup:指定工作等待,durable finding/link 先于释放;不消费模型 Turn,旧包/并发不能撤销新完成信号 implemented research_feedback_wait.py、research_feedback_sync.py、research_scheduler.py 本轮原完整 SQLite native result→实际改变实验节点 1 passed(65.65 秒);专门重放/并发矩阵仍未补跑,没有将 native 矩阵记为全绿。
Measurement/checkpoint boundary / RFC §5.4、§6.2:区分 native outcome、控制成本、wall/tokens 与未知覆盖,恢复资格独立保留 implemented edgebench/research_cost.py、export_report.py;runtime/RESEARCH_LOOP.md 原 test_research_cost.py 在 30 passed 批次内通过;新增 journal 的正式 checkpoint 恢复资格仍另列未取得。
研究运行合同:fresh 显式 treatment,旧 checkpoint 不自动升级;RFC §4 的收益资格由实证决定 implemented sforge.py、sforge_backend.py、harbor.py 原 opt-in/安装回归保留;未运行正式模型评测,不改变默认或宣称首次/长程收益。
  • Self-check before submission: 核对完整来源恢复、每批准确源码/依赖输入、未跑项与失败项;按仅已执行的行为总结证据。当前发布树继承的测试修复单独列示,不能将旧参考组合结果直接赋给新 head。

变更与结果

  • 在真实 sforge-submit 打包与单次 POST 边界保留 operation ID 和不可变归档,验证 accepted submission/round/归档身份。丢回复恢复原操作;歧义保持未知,不自动重复提交。
  • 两类明确的受理前容量 503 允许稍后显式提交。只读 native token 可见的 public history/result;晚到或负面结果绑定原候选,损坏归档不妨碍独立有效结果。
  • sforge-submit --wait-todo / loopx-research-feedback wait 显式建立指定工作依赖,独立工作继续普通准入。runner observation Todo 由既有权限限制,不授予模型领取权。
  • 沿现有 Explore attachment、追加事件与 canonical Todo API 写回;finding 与 link 持久化读回后才释放等待。部分失败按原身份重试,不创建模型 Turn 或消费工作 slot。
  • 非阻塞消费者锁、canonical observation 完成版本与重建通知覆盖并发、旧包 replay 和通知丢失。调度唤醒之后仍经过普通准入。
  • EdgeBench fresh heartbeat-explore --research-loop 显式启用整组处理;保留开关和成本 receipt。缺失/歧义计数保持未知,wall time 不重复叠加重叠阶段;旧 checkpoint 不自动升级。

依赖与完整性

  • PR base:codex/split-research-execution-evidence;前置 C2:feat(research): retain execution evidence through Explore replans #6901;发布 head:a083bbf70880f09975e5f44fee67a60251ffbab3。
  • 本片来源 tree:8f852d440aae2875e916463236c79fa5ee984aff;26 个文件。
  • 原始 C1/C2/C3 累计 tree 等于冻结完整来源,本轮重新执行 tree/diff 比对确认;前片暂缓的三个 native 注册回归已恢复。当前发布组合为该来源加已列明的 A1 测试归属迁移、B4 fixture 退出时先等 HTTP 请求完成、注销自身 Effect runtime,并等待子进程 close 后再删临时根的修复;发布 tree 与来源 tree 分别记录,不能再宣称发布树与旧来源逐字节相等。C1 本轮原始背压单例通过,未据此引入产品修复。
  • 本片没有额外 UI 改动,研究历程执行详情与 synthetic 视觉证据归 C2。整组组合后的正式评测使用集成分支。

验证:按真实输入分别记录

输入与范围 结果
本片来源 tree;Ruff、AST、明确路径扫描、diff check 通过。
本片来源 tree;test_native_research_feedback.py + test_research_cost.py,显式当前源码与既有依赖环境 30 passed / 4 skipped / 0 failed(200.15 秒);4 项因该环境缺少 sforge 跳过。
旧最终组合参考 tree 2342ad53e30bb47552af866125b539519571d876;仅补上述 4 个精确节点,另一已有 sforge 环境 4 passed / 0 skipped / 0 failed(76.12 秒);覆盖两类真实 native 容量拒绝,以及实际 submit 脚本正常/丢回复恢复。
同一旧最终组合参考 tree;control-plane / Dashboard typecheck、outcome_research_continuity_integration.test.ts typecheck 通过,1 个 TS 测试文件通过。
本轮 C3 来源 commit 6efcd6d1c093bc90885d64c5a7ed2fd15e3a5eec / tree 8f852d440aae2875e916463236c79fa5ee984aff;原 test_native_result_reaches_replan_and_a_changed_real_experiment[sqlite] 1 passed / 0 failed / 0 skipped(65.65 秒)。实际 Python imports 来自该 checkout,Python 3.12.14 / pytest 9.1.1;Node v24.19.0、SQLite 3.53.3,原 runtime qualification=true。源码、断言与期限未改。

前两批 Python 运行的源码与依赖环境不同,不能合并成一次“34 passed”;新增 SQLite 单例也单独记录。这些测试使用 synthetic 本地 HTTP、实际本地候选进程和已有 native 脚本,没有调用外部模型或正式 benchmark。新单例通过对应明确的 C3 来源 tree,不是最终发布 head 的完整回归;发布/集成输入与 packaged 结果仍需分别核对。

本轮 SQLite 闭环实际运行两步候选后只发一次 native POST,在原 Turn 建立显式等待且不消费额外预算;工作区候选改变后,迟到的零分仍关联原不可变归档,真实 finding 写回并释放原 Todo/Turn。测试参与者据反馈改变候选、实际执行五步实验,读回不同候选哈希与 stdout,再经普通 refresh-state / Explore 写回与一次 settlement。这个闭环验证同一工作恢复与下一次实际实验;独立候选阶段、stride replan obligation 与新 Todo 的路径由 C2 的来源 tree 单独验证。

仍未解决或未验证

C1 与完整来源 C3 的 backpressure[file] 历史运行均在相同收头断言失败,原记录保留。前置 C1 本轮在其来源 tree dbf2a4e5f8ed416dffbdeff999a7908db8ff7d8d 上同一原节点精确诊断 1 passed(31.05 秒),未改源码、断言或期限;该结果不等于本片同节点已重跑通过,也不确定历史失败根因。

原专门 File/SQLite 等待、持久化写回重放、并发消费者/旧包矩阵在先前运行中未执行,本轮没有补跑;上述 SQLite 闭环覆盖其实际主路径的一部分,不能替代这些独立故障/竞态验收。test_native_result_reaches_replan_and_a_changed_real_experiment[file] 本轮也未补跑,不能将 SQLite 通过记为 File 通过。工程链路与 tree 等价均不证明首次分数或长期收益已改善;checkpoint 恢复继续受原 writer barrier、操作身份、预算及证据资格约束。

本轮发布链与集成验证

  • 本 PR 当前发布 head:a083bbf70880f09975e5f44fee67a60251ffbab3;tree:8c814a5fce0e3d410d157fc597f84a098680828f。
  • 完整拆分现为 12 个普通 PR。实际 source refs、head/tree 和依赖祖先已逐一读回;每片 base 为真实已发布前片,完整顺序与后续状态集中维护在 #6838。
  • 统一集成分支 commit d1dc8ebfe,tree cb8b1777655d7f37e3571b5087d6cd4db286dbbd,组合本次观察的 main 45d742088a3f7896a0a008761f68d2437398bcd1 与上述 12 个实际 source heads。LoopX supplied-candidate 收据为 in_sync、drift 为空;远端集成 head 已读回。
  • 完整性:集成 tree 等于冻结的完整来源与同一 main 合并后,加 A1 的 v2 测试断言迁移及 B4 的请求 drain/退出检查修复。唯一合并冲突是 chat_store.py 指标基线,按自动合并文件实测的 2067 行结算;没有新增集成专用产品逻辑。
  • 静态资格:逐切片 RFC 双语检查 12/12 通过;拆分基线后的唯一历史提交 DCO/作者匹配 14/14 通过。集成 tree 的 control-plane TypeScript 检查 passed(50.754 秒),标准 Chat 打包构建(包含 Dashboard TypeScript)passed(131.930 秒)。构建在同 tree 的本地候选上运行,随后核对与上述远端 tree 完全一致。
  • 当前 packaged UI:Outcome 恢复场景首轮在原 90 秒 fixture 启动窗口内未就绪(总计 92.463 秒),尚未进入浏览器;原失败保留,正在定位。Worker readback 与 research-history 的当前集成场景待串行验证。本段不将构建成功写成浏览器通过。
  • 本轮实际路径使用 synthetic 本地 authority/native HTTP,没有外部模型或正式 benchmark。每项历史/本轮来源版本仍按上文分别记载;CI 和 review 的合并门禁单独判定。

Signed-off-by: Codex <codex@openai.com>

Rebuild this complete slice on its actual published predecessor, preserving the disclosed acceptance test and worker fixture repairs.

Signed-off-by: song <liusongstep@gmail.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant