Repository navigation
fix(explore): keep research execution independent of the historic Todo facade - #6317
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>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration=runtime_reported; effort=xhigh
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
后续删除旧 Todo 兼容入口的维护者,以及提交研究执行结果的调用方。
原来清理兼容模块后,提交一次合法研究执行结果就出现缺模块错误,无法留下结果;现在直接读取相同的当前任务来源,合法结果能写入,旧观察重放继续保持原记录。
临时源码和正常安装包副本中,旧模块缺席仍能提交合法研究结果、读回准确归属,非法新结果拒绝且不追加,原观察重放不重绑。
1.x 公开导入和旧源写入继续保留;本批不认证整族写入删除、完整 Goal 恢复、自然试用或默认发布。
旧源正常 writer、outbox 处置、实际安装采用和自然核心开发者试用仍按原 R5/T4 路径推进。
本次独立审查绑定 #6317a4fdfd9 的全部六个文件,按修复完整研究执行 reader 出口判断,不拿测试数或父路线全部完成作为证明。旧测试里的 Explore 图投影/重放不触发新鲜研究执行的任务读取,因而需要当前反例和完整 fresh 路径。
改动思路
使用既有完整 Todo reader,保持单一 typed 校验与重放 owner;只消除运输层对旧兼容入口的依赖,并在原测试中守住该出口。
本 PR 完成交付这一研究执行 reader 出口及可回归的完整路径,不把它扩大成 1.x 破坏性写入删除。
既有公开 facade 实际重导出同一个 list_goal_todos,所以这里采用现有 owner 就足够。保持 TypeScript 的当前 agent/Todo/gap/input 校验,Python 只提供 transport。历史观察的相等重放继续先于当前源读取,不借重试刷新已有证据。
独立规范为 docs/architecture/rfcs/typescript-control-plane-migration-v0.md,不可变 revision 3af55c6461aa7d24118b62e515050bdae8768025:打开相同规范。逐项映射:
- T4: production consumers bypass the historic re-export:implemented,现有 reader 直接导入;不是新增包装器或 RPC。
- T4: disposable source and normal-wheel two-provider qualification:此 reader 边界 implemented,完整 source/正常 wheel、facade 存在/缺席、File/SQLite 实际 CLI 矩阵通过。
- T4: supported historic public imports:保留,同函数身份及正常旧源入口继续受支持。
- T4: reversible core trial and cohesive 2.0 normal-writer cutoff:deferred,原 R5/T4 的可逆试用、整族截止和最后 outbox 处置继续;本批没有创建并行路线。
具体改动
append_research_observation仅把函数内导入改为control_plane.todos.list_readback。有 execution lineage 的新观察读取完整当前源,校验后在原锁内追加;已存在的观察继续直接只读返回。公开参数、输出、错误与所有 typed rules 都保持。- 原退休矩阵接
test_fresh_research_execution_and_historical_replay_use_retained_owners:复用原研究种子和真实 provider,在选择的隔离分发包中跑explore observe/summary。缺失/错误 actor、deferred/缺失 Todo、变更输入拒绝且日志/源/registry 不变;权威重开后确实写入并独立读回 lineage;Task 和 input 再改变后,原观察重放仍不追加/重绑。 _historic_todo_imports以 AST 解析绝对、相对、alias 和函数内 imports,扫描完整生产包。四种进口反例及内部control_plane.todos区分保护守卫本身;新的能力不能仅依赖过去一次盘点。动态加载仍须真实隔离路径,守卫没有冒充全量动态证明。共享 fixture 在自己的私有临时域收尾运行时,研究 fixture 直接用既有 mutation owner。- 两份 RFC 以同一边界替换过宽的“已关闭”结论:记新回流、当前 fresh 验证与持续守卫,保留受支持1.x API/writer及所有后续退出。
完整 diff 是 162 add / 9 del:产品 1 / 1,测试 138 / 2,文档 23 / 6。生产模块没有增长,没有新增状态、配置或通用 Python 决策。做不做这个 PR 的最强反对点是当前1.x包仍保留兼容入口;但确认该回流并用最小现有 owner 加持续守卫,可以解除可复现的退役阻塞,属于有用且可回滚的增量。已应用相关 future-facing pass,不增加推测性框架。
对主干的风险
无阻塞发现。精确 head 的 source/正常构建 wheel 完整 consumer 矩阵 87 passed / 0 skipped;相邻研究、composition enabled/off、当前 authority 与 post-writeback retry 73 passed;focused 11 passed,最终 static/公开同函数身份 7 passed。冻结 base 的最终同一 CLI oracle 2 facade-present pass / 2 facade-absent fail;AST 守卫 1 fail / 5 pass 精确识别 py117。早期测试种子不匹配 progress/lineage 和把有意 Todo 投影更新当作不可变源的错误已纠正,原失败保留;这与产品缺模块反例分开。
Ruff、advisory/全树语义、公开边界、当前 CQR cqr_df7e9526b3a0a28b91fb 通过。最终 native premerge 5 direct + 19 selected 通过、0 hold。初次 quota size smoke 在长私有临时路径下 15,585 > 15,500,同一原生 canary wrapper 在不可变 base 和当前 head 复现完全相同值/签名;wrapper 的21字符路径增加在8个位置带来168字符,两臂等量。相同短隔离根两臂均通过;预算、载荷、扫描范围、决策义务均未改。这是原 fixture 路径敏感性,当前 PR 未宣称修复它,也未用预算放宽抹除失败。
反例经实际 public CLI 与真实 File/SQLite,而不是注入待审 reader 返回;parent helper 仅生成合成输入。既有 packaged App HTTP 冷导入/动作/重启和 Lark 本地 preview 属回归覆盖,live Lark、实际默认安装采用、自然试用、完整 writer 删除和 PostgreSQL 未新验、不宣称通过。CI 没有查询,遵循当前 wait_for_ci=false。历史公开入口仍受支持,composition 关闭不获新字段/指令/side effect,typed actor 和当前状态 obligation 没有被降成 guidance。
我的整体评价
APPROVE,作为上述有边界的 reader 退役增量交维护者。使用既有完整 Todo reader,保持单一 typed 校验与重放 owner;只消除运输层对旧兼容入口的依赖,并在原测试中守住该出口。 本 PR 完成交付这一研究执行 reader 出口及可回归的完整路径,不把它扩大成 1.x 破坏性写入删除。 原 C1/T4、自然采用、整族写入和发布资格保持各自验收;此评审不授予 merge,当前没有本 PR 的维护者合并授权。
English verdict: APPROVE - a4fdfd9; reuse the existing exact Todo reader, prevent ordinary import regrowth, and preserve current lineage validation plus inert historical replay. Source/normal-wheel retirement87, adjacent research73, static7, exact CQR and premerge5+19 pass; the initial long-path budget failure is identically attributed to base and head. No new default/authority or full-retirement/adoption claim.
Fresh research execution added in #5280 imported
loopx.todosagain after the earlier reader retirement. With the historic facade removed in a disposable canonical package,explore observefailed before validating the current Todo. Import the existing full reader directly and extend the existing retirement matrix with fresh execution, refusals, lineage readback and historical replay. A whole-production import guard prevents ordinary import regrowth.Written by: model_agent — GPT-6, OpenAI.
Implemented against the TypeScript migration RFC R5/T4 frontier, revision
3af55c6461aa7d24118b62e515050bdae8768025.todos/list_readback.pyimport; public facade function identity retainedValidation at
a4fdfd9b45bb7b0e27be6ea8fc374bed99094e4b: source and normally built wheel retirement matrix 87 passed, zero skipped; adjacent lineage/composition/gate/retry suites 73 passed; focused head 11 passed, final static/identity 7 passed. The frozen base static guard fails at the one regrown import; the real base matrix has two facade-present passes and two facade-absent failures. Earlier validation-fixture mistakes are preserved separately and corrected before those results.Ruff, semantic advisory/full drift, public-boundary scan, exact-scope CQR and native premerge pass. Premerge ran five direct and nineteen selected checks. An initial long temporary-root budget probe measured the same 15,585/15,500 characters on base and head through the native canary wrapper. Matched short isolated roots pass equally; the limit, payload and obligations are unchanged. This is fixture path sensitivity, not evidence that this PR fixed quota size.
No new schema, setting, rule, RPC, UI entrypoint or authority-store behavior. Existing typed actor/runnable/input rules and replay-before-read ordering remain. Packaged App HTTP import/restart and local Lark preview are regression coverage, not live installation, external Lark adoption or a natural cohort claim. No PostgreSQL store changes; no full C1/T4, D2 or release-default qualification. The bounded future-facing pass reuses the retained reader and adds the guard in the existing tests; no production abstraction is added. Maintainer merge required.