Skip to content

feat(replan): bind evidence reviews to compared methods and later work - #6889

Open
songoow wants to merge 2 commits into
codex/split-research-worker-readbackfrom
codex/split-research-evidence-decision
Open

songoow wants to merge 2 commits into
codex/split-research-worker-readbackfrom
codex/split-research-evidence-decision

Conversation

@songoow

@songoow songoow commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

为什么需要这次修改

在已启用 stride strategy 的周期或停滞复核中,一个 typed progress、后继 Todo 或新标签不足以说明复核改变了后续工作。决策应绑定当前证据,允许保留仍有用的原任务,也应能把候选方法选择追溯到真实执行及独立验收。

修改内容

  • 将既有周期与停滞触发接入当前 source-bound stride decision,复用现有检测器与 action。默认关闭策略及显式 acceptance / capability 出口约束保留各自语义。
  • 在已有 Explore turn context / 分页中投影比较候选,包括因排序而未优先选择的方法;每个候选绑定当前 Todo、node、finding 与 source hash。
  • 对可选的 selected candidate 检查本次 obligation/context、当前证据页及原 Todo 的 retain 关系。选中声明既不能制造任务,也不能替代真实后续执行。
  • 带上执行完整方法比较、产生并实际采用程序、held-out 独立验证,以及选中后却执行其他 Todo 不算 followthrough 的 CLI 回归。
  • 同步双语 stride RFC、replan 协议和同组 3 张成果视图证据;实验复用现有结果 UI。

范围与依赖

这是原 #6838 的第 5 个完整行为切片,基于 worker 恢复与 readback PR。前五片累计树与冻结 main dc45c128 加原 #6838 的指定目标树完全相同,没有遗漏测试、文档或截图,也没有额外产品修改。CI timeout 已单独拆出。后续 native 增量由独立 PR 处理;集成分支承载组合评测。

验证

  • 4 个 TypeScript 测试文件通过:replan context、replan semantics、stride policy、stride comparison selection。
  • 该切片所有 Python 文件的 Ruff 通过。
  • staged bilingual RFC gate 与 diff whitespace 检查通过。
  • control-plane typecheck 为让相关 race 回归获得独占资源主动中断,保留中断记录,待重新执行。
  • Python 的真实 CLI / File / SQLite 方法比较关键链等待单一重型测试槽位;现有截图属于原 fix: preserve research progress across replans, waits and Host recovery #6838 的留存证据,不宣称是当前分支的新捕获。

比较 fixture 使用固定任务、相同 score 调用预算和独立未参与拟合的验收输入。它能检查脚本化控制链与实际程序产出,不证明模型独立采用能力、付费 benchmark 分数收益或完整 CPU / token / 金钱成本相等。

Author Declaration / 实现依据

验收标准 Disposition 实现 / 验证入口
候选比较绑定当前 Todo / node / finding 与 source hash implemented Explore turn context、replan context、stride policy
selected candidate 对应真实后续工作而非只写声明 implemented comparison selection 与 followthrough CLI 回归
切片无源码遗漏且测试和文档随行为交付 verified B5 累计 tree 与 research target 完全一致

Validation Binding

  • Published revision: dee55e1bc963f9ba1dc4b5f221579f1057e6096e。
  • Tested tree: b9fe5e4b6b9459d1d31fe16d4fe1bb1162603659;远端树与本地完全相等。
  • Run state: partial(4 个 TS 测试文件和静态检查完成;control-plane typecheck 中断、真实 CLI 回归未完成)。
  • Input classes: synthetic, public_fixture。
  • 本片覆盖脚本化决策与控制链,不宣称付费评测或模型自主采用能力已验证。

Frontend / Visual Evidence

本片复用前片的成果 UI;以下截图是原 #6838 的合成场景留存,不是本次 head 新捕获。

Comparison desktop

Comparison mobile

Boundary Checklist

  • 方法比较、决策消费、真实调用回归与协议说明一起交付。
  • 现有双语 stride RFC 同步;DCO sign-off 已包含。
  • 只保留公开 / 合成证据,未把历史结果标为当前运行。

继承前片的恢复验证补充(2026-10-19)

  • Current validation head: bb972c1f7d38bddfb13c68f039a1b0c02881930b。
  • 当前 B5 接入 B4 的 fixture 生命周期修复;修复来源为 ca8d3732a2847c9e76e3d1f989e084e7158deb27。以下新增实测绑定于 B4 修复 tree 24afb2e36986222fca85c5c6a54a80ad6ea9cfc9,用于说明所继承修复的证据,不是更新后 B5 完整 tree 的重新运行记录。
  • 原 B5 dee55e1bc963f9ba1dc4b5f221579f1057e6096e / tree b9fe5e4b6b9459d1d31fe16d4fe1bb1162603659 的作者声明、测试和原始累计树相等性记录保留。接入已列出的 B4 修复后,累计树应按“冻结来源加明确修复”检查;原文“累计树完全相同、没有额外产品修改”的绑定仍是原发布 tree,不延伸为更新后 tree 与旧来源逐字相等的声明。

继承修复只涉及 tests/control_plane/research_worker_readback_fixture.py 与 examples/personal-workspace-browser/research-worker-readback.mjs:等待已接受的 HTTP 请求结束后再退役 Effect runtime,并在 child close 且零退出码后删除临时根。Before 的 tree 155aee2eed76c978577d6ca05b5a96a319f57081 与原发布 B4 完全一致。

恢复检查 结果与边界
Before:原 B4 tree 上保留一个处理中真实 HTTP read,再触发退出 缺陷复现:runtime_cleanup_started 早于 request_finished,HTTP 返回 500;Python 仍以 0 退出。
After:修复 tree 上执行相同因果 probe passed:HTTP 返回 200,request_finished 早于 runtime_cleanup_started,Python 以 0 退出。
startAuthority("paused") → close() 首轮 failed,保留:原 runtime 退出检查在五秒门槛内返回 stopped=false,Python 退出码为 1;新增 JS 检查正确暴露了这个失败。
Paused 详细诊断重跑 passed,34.771 秒:通过仅观察原返回值和时序的 Python/Node wrapper 记录退役过程;child close=0,临时根删除。原五秒 runtime 门槛保持,实际 runtime 退役约 1.006 秒。
startAuthority("unknown") → close() passed,27.888 秒:未加载诊断 observer,实际 child close=0,临时根删除。

Paused 诊断重跑中,shutdown 应答约 0.824 ms,listener 关闭,compile-cache flush 约 545 ms,随后 locator 删除并退出;Python 的各次进程组观察约 15–38 ms,最后正确接受已无法继续写入的 zombie 进程组。这些是这一次通过运行的观察;首轮 stopped=false 的根因仍未确定,后续通过不抹掉该失败。 本次修复没有修改共享 runtime owner,也没有增加五秒退出门槛、六十秒启动门槛或目录删除重试。

本批使用 Node v24.19.0,输入仍为 synthetic, public_fixture,Host 调用受控。Python 语法、node --check 和 git diff --check 通过。两边复用同一份已存在的 bundle,仅提供真实 JSON HTTP fixture 的启动资源;本批没有重新构建或渲染当前 head 的前端,不构成完整 packaged browser / UI 资格,也不是模型效果或成本证据。

Run state: 所继承 B4 修复的限定恢复检查已完成,含上表明确保留的一次 runtime 清理失败;本批未重跑更新后 B5 的方法比较真实 CLI / File / SQLite 链,也未重建其完整 packaged 场景。原作者证据保留原版本绑定;当前 B5 及最终集成树的完整资格需要分别记录,不能从 B4 的局部通过推定。

本轮发布链与集成验证

  • 本 PR 当前发布 head:bb972c1f7d38bddfb13c68f039a1b0c02881930b;tree:b067c8346897afc8b31d879463c5b437213e7d83。
  • 完整拆分现为 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>

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

Carry the B4 HTTP request drain and observable authority cleanup repair into the stacked B5 head while preserving both published source histories.

Signed-off-by: Codex <codex@openai.com>
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