Skip to content

refactor(replan): converge captured context and original-Turn closeout - #7269

Open
loopx-agent wants to merge 10 commits into
mainfrom
codex/replan-continuation-efficiency
Open

loopx-agent wants to merge 10 commits into
mainfrom
codex/replan-continuation-efficiency

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Captured replans can still deliver formatting instructions before the facts, and native/checkpoint consumers can bypass an existing staged reader. Closed scoped work can also retain stale continuation preference. This converges those callers on the existing source-bound projection and preserves the original Turn through closeout and replay.

This re-proposes the #7197 implementation explicitly on current main. Its earlier merged ancestry did not deliver this staged reader to the main tree; unrelated integration changes are retained.

Resulting behavior

  • Captured CLI, native and structured Host, Turn journal and checkpoint consumers share review and writeback views. Current Goal/horizon stays visible; cumulative acceptance details and full original recovery remain reachable. Duplicate entry settlement plans, writer backpointers and unconditional Host full-package instructions are removed.
  • The normal path with optional native context transport disabled uses these same staged reads. Enabled full/delta transport reuses the existing context owner rather than introducing another cache or acknowledgment. Missing, stale or wrong-scope source cannot create new admission or authority.
  • Original-Turn completion and a committed same-agent semantic closeout/replan release stale work preference without completing unfinished Todos. A new task still requires its own admission.
  • Opt-in refresh-state --settle-turn composes the existing owed quota command after verified writeback. It pins the current interpreter, validates exact identity and reconciles canonical receipts before ambiguous retries. Ordinary manual refresh/spend remains available.

Current validation

Head: 4473ba97370bda708c7a913989d1e900a73b3276. Base: main 8a718ca5f17b8036a57c6d4e88a02185eaf4581d.

  • The nine earlier patches are equivalent after clean rebase. The only additional source delta removes an unused test import and local binding; no assertion or authority check is removed.
  • Exact-head Python individual-case coverage: 462 passing cases, 5 skipped across two batches. The original17-file serial process hit its locally chosen660s deadline after450 pass/5 skip progress; all12 exact remaining node IDs separately pass with JUnit readback. The original batch remains a timeout, not an exit0 or latency qualification. Six TypeScript suites: 132 passed. Native subprocess, checkpoint/source integrity, staged/default-off input, denial, original settlement and effect-free replay are covered with real File/SQLite state. Five environment-specific skips remain explicit; no new PostgreSQL or cross-platform qualification is claimed.
  • Same synthetic fixture on current immutable main and this head: main admits the autonomous replan but blocks its native route; this head executes it, independently validates its local artifact, debits once and replays without effects on File and SQLite. No paid inference or benchmark evaluation is used.
  • Standard premerge: 6 direct and 19 selected checks pass. Its aggregate remains manual_review_required; this is not merge readiness or maintainer authorization.
  • Full Ruff retains 5 E701/E702 failures in the unchanged managed-session test. The identical complete command at base/head produces byte-identical diagnostics. The settlement test's own previous F401/F841 errors are fixed and its full lint passes.
  • Adjacent dated-wait/replan-novelty validation is 8 failed / 19 passed at both base and head. The same eight cases reject an uninitialized canonical-authority fixture before reaching the changed behavior; paired full Todo/guard rejection diagnostics match after event ID/time normalization. These failures remain red. The canonical-authority gate is retained, and initialized File/SQLite paths are independently covered.

Cost and remaining evidence

Earlier fixed-source offline replay at b86f304→0ddd08ad measured whole CLI delivery +2.25%, structured Host −57.72%, native renderer −60.23%, and native plus full-source recovery +6.37%. These source-bound projection implementations are unchanged by this rebase. This is historical transport-byte evidence, not a new model, latency, fee or native-score measurement.

The optional composed settlement still runs complete CLI/readback work: its earlier isolated File/SQLite measurements reduced stdout while increasing local process time. Actual model adoption, complete cost and benchmark effectiveness remain unproven. No scoring, opportunity, cooldown, experiment-budget or permission-source change, new benchmark job, installation or merge is included.

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

精确提交 eed09c5f805746d00946dec2dbe3f818ade38aa1:未发现尚未解决的阻塞性代码问题。此结论只覆盖本提案的控制流正确性;预合并仍有基线同现的调度夹具失败,不能据此直接合并。

动机

使用心跳和检查点恢复的 Agent 在复盘及关闭阶段性任务时会遇到这个问题。旧路径把决策事实和写回格式一起交付,已写入重规划的旧 Todo 仍可能被续选;新路径分段读取同一快照,并在原回合收尾后允许选择后续工作。可观察改进是原回合身份、回执及扣额不变,旧续跑偏好可以被明确收尾释放,后续任务能够执行并完成读回。本 PR 不改变评分、提交机会、预算或权限,也不宣称已证明模型决策、总 token 成本或 benchmark 分数更优。

仍需保留完整成本和模型实际采用的研究缺口;调度 registry-route 的基线夹具失败未修复,新提案未启动新 benchmark。

改动思路

No second planning or accounting authority is added: stage projection, native IO, CLI composition and continuity each stay with the existing owner. Deliver the source-bound review and original-Turn closeout path with real continuation/recovery evidence; do not promote scientific benefit or launch another experiment. 原始完整 guard 仍供检查点选择器和恢复使用;模型收到同一来源的 CLI 视图,先读事实,再按需读格式。这里替换的是重复的战术提示和示例,不再附加另一个规划器。最小替代方案是继续读整包、手动执行两条结算命令,但这不能解决检查点模型入口仍发原始包和旧 Todo 忽略已提交收尾的问题。

路径 旧行为 当前行为
捕获复盘 事实、提示和格式混在入口 同一哈希快照的 review / writeback,完整原包保留
收尾 原命令分开调用,旧续跑偏好可能继续 可显式组合写回和待结算步骤;下个 Turn 尊重明确收尾
可选 native 差分关闭 不能依赖 native 优化 普通捕获 CLI 也使用同一分段视图

该表是提交 eed09c5f805746d00946dec2dbe3f818ade38aa1 的源码说明,不是模型效果证据。native、TurnEnvelope 和 stride 的开关分别保留;stride 关闭时新增的是通用反馈事实,不是开启其策略。共享规划文本的减少是有意的默认变化,不能称为整个 PR 的 feature-off 字节等价。

具体改动

采用变更前规范 docs/reference/protocols/goal-vision-replan-contract-v0.md,固定版本 34aa0cd180b999eca6b335cfd955d003c0310bd4;同时核对同版本 docs/reference/protocols/turn-envelope-v0.md 的来源、捕获与权限边界。规范没有条款编号,下列名称仅用于本次映射:Vision-Checkpoint 保留实质收尾的显式 Vision;In-flight-exception 保留普通阶段进展的原绑定和扣额;Closeout-and-accounting 要求实际换路线或完成工作显式语义收尾,并保留逐回合回执。三项均由当前真实 CLI 验证;文档不是用来倒推测试答案。

关键代码讲解

  1. turn_envelope.ts:replanView 在完整来源哈希匹配后投影事实、格式和完整验收明细。相同 ID 的不同版本按内容分别索引;不同范围或版本不因体量被合并。Explore 单独读取,覆盖不全仍明确显示未知。
  2. quota_capture.py:handle_replan_view 只读物理来源文件,不重跑 guard,不要求另开 registry;当前来源被替换时失败。渲染器固定原 CLI 路由,避免 PATH 中另一版本接手读取。
  3. checkpoint.py:capture_before_replan 将原包留给检查点选择和核验,真实模型入口改送投影视图;native full/delta 和完整恢复复用它,默认关闭差分也覆盖。
  4. refresh_settlement.py:settle_refreshed_turn 是 Python IO 组合器,规则仍归原 TS/结算 owner。先检查写回及交付后置条件,再用当前解释器调用完整 canonical CLI,校验 Goal/Agent/Todo 或 obligation/Turn、来源和命令,最后读回原回执;响应丢失与重放均不能重复扣额。
  5. delivery_continuity.ts:resolveDeliveryContinuity 消费同 Agent 已提交的收尾或结构化 replan;原 Turn 回执和抢占条件仍优先。旧 Todo 不会被自动完成。近期历史编解码省略的默认 semantic closeout 被正确还原,路径枚举复用现有 normalizer。

完整差异为 37 文件、+1508/-195,含合成夹具、真实路径反例及协议说明。自评审已恢复原 3000 文本增长上限,并把新路线变更的集成用例改为规范要求的 semantic closeout;没有放宽预算或把换路线伪装为进行中进展。

对主干的风险

主要反例是“新 reader 存在但模型仍读原 guard”“旧 Todo 仍吞掉后续工作”以及“便利命令错扣另一个 Turn”。真实 CLI 覆盖来源被替换、错绑定、失败写回、dry-run、失效 Vision、敌对 PATH、提交后响应丢失及精确重放。File/SQLite 的固定基线对照中,普通未开启组合选项的可观察准入、错误、写回、读回与扣额相同;明确收尾的反例在基线继续锁旧 Todo,在本提交则执行后续独立任务、完成读回,两回合共两次扣额。

验证包括:实现提交的 128 项 Python 真实路径用例通过、4 项 Linux 专属跳过;后续提交只有测试收紧和文档变化,loopx 与 benchmark/runtime 树哈希未变。最终提交的收尾/预算子集 19 项通过;TypeScript 65 项通过;原生 Codex 隔离回环 15 项通过;Linux/Node24 补跑 4 项进程交接通过。最初 Linux 环境无 Node 的失败已保留,补齐现有运行时后重跑,并未改产品门槛。

标准预合并的直接检查全部通过,catalog 为 9/10;quota-scheduler-registry-route-smoke.py 在固定基线 34aa0cd180b999eca6b335cfd955d003c0310bd4 与当前实现均因未初始化 canonical authority 而报 LocalCoordinationAuthorityUnavailable / todo_snapshot / canonical_authority_required。故归因于现存夹具,仍如实记录为失败。曾有一次我在验证时并行编辑,触发自动还原并使该次检查无效;最终串行干净运行无副作用,不能用前次结果冒充通过。没有查询或等待 CI。

语义与 CI 对齐

沿用现有 path_delta、delivery boundary、settlement identity 和 progress result vocabulary;局部续跑原因扩展既有集合。新增命令只做原快照的投影和原 effect 的组合,不扩大权限。语义词表、模块/接口预算及 RFC 双语检查通过。PostgreSQL 存储没有变更,本路径没有另做 PG 运行验证;模型理解、分数收益与完整费用也未资格化。

我的整体评价

No second planning or accounting authority is added: stage projection, native IO, CLI composition and continuity each stay with the existing owner. Deliver the source-bound review and original-Turn closeout path with real continuation/recovery evidence; do not promote scientific benefit or launch another experiment. 对本次功能边界给出 APPROVE:长程维度的改进限于已实测的“明确决定后能继续完成独立工作”,用户路径减少重复操作且不增加人工确认;它不能证明 benchmark 效果或完整成本降低。无渲染界面变化,视觉审查不适用;未验证范围为真实模型采用和完整成本,不能用包字节数替代。

仍需保留完整成本和模型实际采用的研究缺口;调度 registry-route 的基线夹具失败未修复,新提案未启动新 benchmark。 原始捕获、手动结算和既有失败恢复应保留。此提案值得继续评审,但当前没有新 PR 的合并授权,也不建议绕过未收尾的验证记录立即合并。

English verdict: APPROVE — eed09c5f805746d00946dec2dbe3f818ade38aa1. Captured-source staging, original-Turn settlement and fresh-work continuity are supported by real File/SQLite CLI, Linux child-process and native loopback evidence. A baseline-equivalent scheduler fixture failure remains a separate merge hold; model utility and full-cost gains are unqualified. No merge authority is implied.

@loopx-agent
loopx-agent force-pushed the codex/replan-continuation-efficiency branch from eed09c5 to 0ddd08a Compare October 24, 2026 19:05
@loopx-agent loopx-agent changed the title refactor(replan): stage captured review and settle the original turn refactor(replan): converge captured context and original-Turn closeout Oct 24, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

精确提交 0ddd08ad386924b2e0bada0db4854fff33979b81:对本次真实调用链重构给出 APPROVE。当前源码及隔离执行已支持同源事实读取、原生实际输入和原回合结算;不据此认定模型决策或完整费用改善,也不提供合并授权。

动机

使用心跳、原生 Host 或 checkpoint 恢复进行复盘的 Agent 会遇到这个问题。 此前入口先显示结算计划,Host 又要求读完整原包;现在先看当前目标与事实,再读取唯一写回格式,执行器保持原轮身份。 真实 File/SQLite 路径能执行已准入的语义复盘、验证产物并只扣一次额度,重复执行不产生新副作用。 本 PR 不改变评分、评测机会或实验预算,也不宣称已证明模型决策、分数或全量费用更优。

这里的事实读取,是从当前目标、先前工作、反馈和来源证据作决定;格式读取,是决定后再取合法写回的字段与命令。此前虽然已有读取器,原生请求仍可能交付旧包,Turn 入口与 writer 也能各带一次计划。仅看到 reader 字段和包大小,不能证明模型收到的实际输入已经切换。此次重新检查完整 base-to-head 差异,没有沿用前次审批结论。剩余缺口是匹配模型条件下的自主采用、外部证据工具及完整费用测量;原始失败与冻结实验边界保留。

改动思路

保留一个 TS 事实/格式投影 owner、既有上下文差分 owner 和原结算 owner;Python 只处理宿主输入及 IO。 本次交付同源分段读取、原生实际输入和原轮结算/后续工作;真实模型收益与完整成本留在既有研究计划中。

最强的反对理由是:多轮读取会增加进程启动和工具边界,CLI 输入还可能变大;如果模型仍读旧包,就只增加了结构而没有交付。更小的纯提示修改无法同时修复原生请求装配、重复 writer 和 checkpoint 模型入口。当前实现采用已有 owner 内的改动,未新增缓存、ACK、控制器或人工同步步骤。

触发路径 前一提案的缺口 当前交付
捕获 CLI / Turn Turn 可先交付完整结算格式,writer 又返回一次 共用延后投影;保留签名身份,入口引用唯一写回命令
原生与结构化 Host 原生请求或提示仍绕回整包 交付已核验的 authority 和同源 reader;执行器持有完整签名包
当前 Goal / Horizon 整段被推迟到补读 每轮显式保留当前目标、依赖、优先级与阻塞;仅累计验收明细索引
语义复盘准入 普通交付关闭可把规范 replan attempt 一并拦住 既有权限 owner 允许该语义切片,显式 false/null 和 Stop 仍优先
收尾和下一项工作 旧 Todo 的续跑偏好可能继续吞掉后续工作 使用已提交的收尾/路径事实,释放偏好并保留后续准入

此表说明 0ddd08ad386924b2e0bada0db4854fff33979b81 的源码与控制路径,不是模型效果证据。原包、旧 journal 和未捕获调用保留的兼容分支都有具体消费者;不能为了净删行数破坏已持久化的恢复。可安全收敛的路径已经合并:无条件全包提示、入口重复计划/命令、writer 无消费者的 review 回指已替换或删除。

具体改动

规范依据为 docs/reference/protocols/goal-vision-replan-contract-v0.md,固定在变更前提交 920f18809d906b840325c4f40013e9224e4a3a2e;同时阅读该版本捕获协议。以下采用文档原有节标题映射,不把本 PR 改写后的文档当独立答案:

  • Ownership Boundary:TS 继续拥有 Goal/replan、权限及结算语义;Python 只适配宿主与 IO,没有第二套策略。
  • Replan ACK freshness:source hash、Goal/Agent/Turn 与 obligation 保持绑定;语义接受、结算和 Goal 完成不互相替代。
  • CLI Budget:Vision 仍拒绝超限而不截断;累计验收明细完整可读。新增每轮 Goal 索引的测试增量预算有同源测量依据;原硬限、接口增长和包目标没有被取消。
  • Completed Todo lifecycle reentry:保留原生命周期证据和回合身份,后继工作仍须后来准入;没有自动完成 Todo 或把历史收尾变成执行授权。

关键代码讲解

  1. turn_envelope.ts:replanView(398 行)统一原源哈希核验、完整验收明细和最后的 canonical writer。deferredReplanWriteback 只把入口计划延后,签名身份仍在;writer 返回原计划,未使用的 review 回指已删除。replanGoalContext 解析既有精确验收别名,再以内容哈希共享;同 ID 的不同版本不会合并,缺失来源不能变成空验收。
  2. codex_cli.py:_prompt(309 行)在新 journal 的实际模型输入中使用经签名核验的 authority,复用结构化 Host 的事实先于格式指令。journal 内完整 envelope 不变。current_loopx_cli_argv 让后续验收、Explore 和写回沿用显式 CLI 或当前安装的 Python 模块;敌对 PATH 不能悄悄切换版本。
  3. checkpoint.py:capture_before_replan(120 行)只执行一次原 guard,完整字节供选择器和捕获校验,模型读取同源投影视图。默认 native 差分关闭和开启后的 full/recovery 均覆盖,不以保存了 checkpoint 原件冒充实际模型暴露。
  4. refresh_settlement.py:settle_refreshed_turn(21 行)先核对原 owed 命令的解析结果、完整身份、来源、registry/runtime 和单次额度,再通过现有完整 CLI 执行。响应丢失时由原回执证明提交,不能先重试再猜;普通 refresh 的缺省行为仍是手动结算。
  5. delivery_continuity.ts:resolveDeliveryContinuity(205 行)读取同 Agent 已提交的 semantic closeout 或结构化路径结果,释放旧续跑偏好。当前绑定、显式选择、Gate 和抢占仍优先;run-history 对省略的既有默认边界按原语义恢复,而不从 Todo 文案猜测完成。

完整差异为 45 文件、+1900/-231,包括 runtime/IO、合成真实路径验证和成对文档。净增代码是维护成本;这里的重构依据是实际删去/合并的重复知识及调用链收敛。--settle-turn 仍调用子 CLI 并读取回执,不能称为进程延迟优化。没有改评分、评测机会、预算、权限来源或额外启动实验。

对主干的风险

最重要的反例是“serializer 看起来正确,但真实输入没迁移”以及“后续 detail 落到另一份安装”。当前验证检查真正收到的原生/DSH 提示,在另一工作目录、敌对 PATH 下沿 reader 完成 review→acceptance→writeback;读取前后原始字节不变。另用同一夹具与不可变前提案 b86f304cbaf9e57b89264b2fc5ba231323987fce 对照 File/SQLite:旧路径 should_run=true 却阻止 Host;本提交执行原生本地进程、独立验证产物、扣额一次,精确重放全部副作用为 false。模型 provider 是合成进程,不据此声称模型研究能力。

精确提交的 Python 集合 407 passed、6 skipped;TypeScript 126 passed。六项跳过分别是四个 Linux 进程组用例、Windows PowerShell 用例和当前临时目录不适用的 depth-12 命名空间用例,未冒充跨平台通过。File/SQLite 的 CLI、checkpoint、原生进程、丢源/改源、错 Goal/Agent/Turn/验收版本、显式权限拒绝、无效 Vision、失败写回及重复结算均有实际反例。验收别名夹具改为解析确切已交付引用后与独立 provider 读数比较,仍保留原条件与修复产物验证。

标准 premerge 的 6 项直接检查、19 项选中检查全过,含公共边界、语义/接口/维护预算与 RFC 双语检查。其 manual_review_required 是独立维护者权限门槛,不是验证失败。前次提交的 scheduler 夹具失败仍保留在历史评审中;本次采用新 main 的标准选择器通过,不能倒写为旧检查通过或声称本 PR 修了该夹具。没有查询、轮询或等待远端 CI。

四份相同值快照的离线完整投递核算合计:捕获 CLI 550,039→562,429 字节(+2.25%);结构化 Host 622,317→263,115(−57.72%);原生 Codex renderer 647,687→257,599(−60.23%)。这些数包含入口、review、全部已提供验收明细、可选 Explore 和 writer;旧 Host 比较读取完整原包。若新路径再走整包恢复,则原生合计 688,962 字节(+6.37%),且一次文件读取变为两或三次 CLI 读取。CLI 增长来自恢复每轮当前 Goal/Horizon。外部证据工具、模型累计输入/缓存/output 与费用未计入,所以不能宣布完整成本下降或达到 15% 目标。

语义与兼容边界

复用现有 EffectiveAction、规范 permission、path outcome、delivery boundary 和 settlement identity;新字段是来源投影,不是人工同步状态。false/null 与 absent 区分,旧包、失败源、settlement-only、较高优先级 capability intent 不因 reader 存在而激活新路由。共享上下文差分仍需要完整、同范围且未变化的基线;新依赖、优先级或计划在当前输入/patch 中可见,缺基线回退同一来源。capture/Host 默认行为有意变化,已在双语 RFC 和协议说明,不能称整个 PR feature-off 字节等价。

我的整体评价

保留一个 TS 事实/格式投影 owner、既有上下文差分 owner 和原结算 owner;Python 只处理宿主输入及 IO。 本次交付同源分段读取、原生实际输入和原轮结算/后续工作;真实模型收益与完整成本留在既有研究计划中。 对这一独立功能增量给出 APPROVE:它修复了已证明的真实入口与原轮结算问题,没有要求用户重新输入已知信息或新增确认回合。科学效果和整体费用仍需既有研究计划下另行授权与测量;当前没有新实验,也没有新 PR 的合并授权。

本次没有渲染界面变化;检查的是 CLI、原生输入和回读,视觉检查不适用。 未验证真实模型采用和全量费用,也未另做 PostgreSQL 运行。 保留完整原包、手动结算及具体旧 journal 的恢复入口是有依据的兼容成本;reader 的存在、签名或测试数量不能充当模型采用和目标收益。原生正常投递显著缩小,CLI 与完整回退成本增加也已经公开,故本结论不会把一次局部字节收益升级为全局效率判断。

English verdict: APPROVE — 0ddd08ad386924b2e0bada0db4854fff33979b81. Actual captured CLI/checkpoint/native/structured Host paths now converge on source-bound facts before canonical writeback; scoped native execution and original-Turn replay pass on real File/SQLite. 407 Python and 126 TS checks pass; six environment skips and separate maintainer authority remain explicit. Offline transport savings do not establish model utility, total-cost reduction or merge authority.

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>
…t views

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…call

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>
@loopx-agent
loopx-agent force-pushed the codex/replan-continuation-efficiency branch from 0ddd08a to 4473ba9 Compare October 24, 2026 20:43

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

精确提交 4473ba97370bda708c7a913989d1e900a73b3276:对本次真实调用链重构给出 APPROVE。当前源码及隔离执行已支持同源事实读取、原生实际输入和原回合结算;不据此认定模型决策或完整费用改善,也不提供合并授权。

动机

使用心跳、原生 Host 或 checkpoint 恢复进行复盘的 Agent 会遇到这个问题。 此前入口先显示结算计划,Host 又要求读完整原包;现在先看当前目标与事实,再读取唯一写回格式,执行器保持原轮身份。 真实 File/SQLite 路径能执行已准入的语义复盘、验证产物并只扣一次额度,重复执行不产生新副作用。 本 PR 不改变评分、评测机会或实验预算,也不宣称已证明模型决策、分数或全量费用更优。

这里的事实读取,是从当前目标、先前工作、反馈和来源证据作决定;格式读取,是决定后再取合法写回的字段与命令。此前虽然已有读取器,原生请求仍可能交付旧包,Turn 入口与 writer 也能各带一次计划。仅看到 reader 字段和包大小,不能证明模型收到的实际输入已经切换。本轮核对完整差异、九个等价补丁及新 main 的调用者后重新判断。历史证据保留原版本;新增真实路径、权限负例、基线失败和回读均重新执行。剩余缺口是匹配模型条件下的自主采用、外部证据工具及完整费用测量;原始失败与冻结实验边界保留。

改动思路

保留一个 TS 事实/格式投影 owner、既有上下文差分 owner 和原结算 owner;Python 只处理宿主输入及 IO。 本次交付同源分段读取、原生实际输入和原轮结算/后续工作;真实模型收益与完整成本留在既有研究计划中。

最强的反对理由是:多轮读取会增加进程启动和工具边界,CLI 输入还可能变大;如果模型仍读旧包,就只增加了结构而没有交付。更小的纯提示修改无法同时修复原生请求装配、重复 writer 和 checkpoint 模型入口。当前实现采用已有 owner 内的改动,未新增缓存、ACK、控制器或人工同步步骤。

触发路径 前一提案的缺口 当前交付
捕获 CLI / Turn Turn 可先交付完整结算格式,writer 又返回一次 共用延后投影;保留签名身份,入口引用唯一写回命令
原生与结构化 Host 原生请求或提示仍绕回整包 交付已核验的 authority 和同源 reader;执行器持有完整签名包
当前 Goal / Horizon 整段被推迟到补读 每轮显式保留当前目标、依赖、优先级与阻塞;仅累计验收明细索引
语义复盘准入 普通交付关闭可把规范 replan attempt 一并拦住 既有权限 owner 允许该语义切片,显式 false/null 和 Stop 仍优先
收尾和下一项工作 旧 Todo 的续跑偏好可能继续吞掉后续工作 使用已提交的收尾/路径事实,释放偏好并保留后续准入

此表说明 4473ba97370bda708c7a913989d1e900a73b3276 的源码与控制路径,不是模型效果证据。原包、旧 journal 和未捕获调用保留的兼容分支都有具体消费者;不能为了净删行数破坏已持久化的恢复。可安全收敛的路径已经合并:无条件全包提示、入口重复计划/命令、writer 无消费者的 review 回指已替换或删除。

具体改动

规范依据为 docs/reference/protocols/goal-vision-replan-contract-v0.md,固定在变更前提交 8a718ca5f17b8036a57c6d4e88a02185eaf4581d;同时阅读该版本捕获协议。以下采用文档原有节标题映射,不把本 PR 改写后的文档当独立答案:

  • Ownership Boundary:TS 继续拥有 Goal/replan、权限及结算语义;Python 只适配宿主与 IO,没有第二套策略。
  • Replan ACK freshness:source hash、Goal/Agent/Turn 与 obligation 保持绑定;语义接受、结算和 Goal 完成不互相替代。
  • CLI Budget:Vision 仍拒绝超限而不截断;累计验收明细完整可读。新增每轮 Goal 索引的测试增量预算有同源测量依据;原硬限、接口增长和包目标没有被取消。
  • Completed Todo lifecycle reentry:保留原生命周期证据和回合身份,后继工作仍须后来准入;没有自动完成 Todo 或把历史收尾变成执行授权。

关键代码讲解

  1. turn_envelope.ts:replanView(398 行)统一原源哈希核验、完整验收明细和最后的 canonical writer。deferredReplanWriteback 只把入口计划延后,签名身份仍在;writer 返回原计划,未使用的 review 回指已删除。replanGoalContext 解析既有精确验收别名,再以内容哈希共享;同 ID 的不同版本不会合并,缺失来源不能变成空验收。
  2. codex_cli.py:_prompt(309 行)在新 journal 的实际模型输入中使用经签名核验的 authority,复用结构化 Host 的事实先于格式指令。journal 内完整 envelope 不变。current_loopx_cli_argv 让后续验收、Explore 和写回沿用显式 CLI 或当前安装的 Python 模块;敌对 PATH 不能悄悄切换版本。
  3. checkpoint.py:capture_before_replan(120 行)只执行一次原 guard,完整字节供选择器和捕获校验,模型读取同源投影视图。默认 native 差分关闭和开启后的 full/recovery 均覆盖,不以保存了 checkpoint 原件冒充实际模型暴露。
  4. refresh_settlement.py:settle_refreshed_turn(21 行)先核对原 owed 命令的解析结果、完整身份、来源、registry/runtime 和单次额度,再通过现有完整 CLI 执行。响应丢失时由原回执证明提交,不能先重试再猜;普通 refresh 的缺省行为仍是手动结算。
  5. delivery_continuity.ts:resolveDeliveryContinuity(205 行)读取同 Agent 已提交的 semantic closeout 或结构化路径结果,释放旧续跑偏好。当前绑定、显式选择、Gate 和抢占仍优先;run-history 对省略的既有默认边界按原语义恢复,而不从 Todo 文案猜测完成。

完整差异为 45 文件、+1897/-231,包括 runtime/IO、合成真实路径验证和成对文档。净增代码是维护成本;这里的重构依据是实际删去/合并的重复知识及调用链收敛。--settle-turn 仍调用子 CLI 并读取回执,不能称为进程延迟优化。没有改评分、评测机会、预算、权限来源或额外启动实验。

对主干的风险

最重要的反例是“serializer 看起来正确,但真实输入没迁移”以及“后续 detail 落到另一份安装”。当前验证检查真正收到的原生/DSH 提示,在另一工作目录、敌对 PATH 下沿 reader 完成 review→acceptance→writeback;读取前后原始字节不变。另用同一夹具与当前不可变 main 8a718ca5f17b8036a57c6d4e88a02185eaf4581d 对照 File/SQLite:旧路径 should_run=true 却阻止 Host;本提交执行原生本地进程、独立验证产物、扣额一次,精确重放全部副作用为 false。模型 provider 是合成进程,不据此声称模型研究能力。

Python 个案覆盖为 462 passed、5 skipped;TypeScript 132 passed。其中原17文件串行批次在660秒本地上限中断,已记录450个通过、5个跳过;对相同确定性collection尚无完成回执的12个nodeid单独运行,JUnit逐项核对 12 passed。原大批次仍记timeout,没有把它改写成完整一次通过,也不据此声称延迟改善。五项跳过分别是四个 Linux 进程组用例和当前临时目录不适用的 depth-12 命名空间用例,未冒充跨平台通过。File/SQLite 的 CLI、checkpoint、原生进程、丢源/改源、错 Goal/Agent/Turn/验收版本、显式权限拒绝、无效 Vision、失败写回及重复结算均有实际反例。验收别名夹具改为解析确切已交付引用后与独立 provider 读数比较,仍保留原条件与修复产物验证。

标准 premerge 的 6 项直接检查、19 项选中检查全过,含公共边界、语义/接口/维护预算与 RFC 双语检查。其 manual_review_required 是独立维护者权限门槛,不是验证失败。前次提交的 scheduler 夹具失败仍保留在历史评审中;本次采用新 main 的标准选择器通过,不能倒写为旧检查通过或声称本 PR 修了该夹具。本轮未获取、轮询或等待此新提交的远端 CI;结论来自本地执行,历史 head 的失败不冒充当前 CI 状态。

以下字节测量保留其原始版本 b86f304→0ddd08ad,不是此次 rebase 的新模型或费用测量;相关投影源码保持相同。四份相同值快照的离线完整投递核算合计:捕获 CLI 550,039→562,429 字节(+2.25%);结构化 Host 622,317→263,115(−57.72%);原生 Codex renderer 647,687→257,599(−60.23%)。这些数包含入口、review、全部已提供验收明细、可选 Explore 和 writer;旧 Host 比较读取完整原包。若新路径再走整包恢复,则原生合计 688,962 字节(+6.37%),且一次文件读取变为两或三次 CLI 读取。CLI 增长来自恢复每轮当前 Goal/Horizon。外部证据工具、模型累计输入/缓存/output 与费用未计入,所以不能宣布完整成本下降或达到 15% 目标。

本轮干净 rebase 到当前 main;九个旧补丁逐一等价,生产及文档 blob 均未改变,唯一新修改删除 settlement 测试中一个未用 import 和一个未用局部变量,没有删除断言。该文件的完整 Ruff 规则和 19 项静态/结算组合检查通过。

语义与 CI 对齐

完整 Ruff 仍报 5 项 E701/E702,均在未修改的 tests/presentation/test_codex_attached_conversation.py。对不可变 main 和本 head 执行同一完整命令,失败输出逐字一致,故保留为基线红项,不能称全部 lint 或 CI 已绿。另跑更新后 main 的 dated-wait/replan-novelty 邻接集合,两版均 8 failed、19 passed:相同八个用例先在未初始化 canonical authority 的夹具读取处失败。独立重现 Todo-list 和 quota guard 的完整拒绝内容,仅归一化事件 ID/时间后两版一致;没有降低 canonical authority 要求。实际初始化的 File/SQLite replan 正例、失败/重放路径另有通过证据。这些红项及尚缺的跨平台资格,与本 PR 的功能判断和合并资格分开保留。

语义与兼容边界

复用现有 EffectiveAction、规范 permission、path outcome、delivery boundary 和 settlement identity;新字段是来源投影,不是人工同步状态。false/null 与 absent 区分,旧包、失败源、settlement-only、较高优先级 capability intent 不因 reader 存在而激活新路由。共享上下文差分仍需要完整、同范围且未变化的基线;新依赖、优先级或计划在当前输入/patch 中可见,缺基线回退同一来源。capture/Host 默认行为有意变化,已在双语 RFC 和协议说明,不能称整个 PR feature-off 字节等价。

我的整体评价

保留一个 TS 事实/格式投影 owner、既有上下文差分 owner 和原结算 owner;Python 只处理宿主输入及 IO。 本次交付同源分段读取、原生实际输入和原轮结算/后续工作;真实模型收益与完整成本留在既有研究计划中。 对这一独立功能增量给出 APPROVE:它修复了已证明的真实入口与原轮结算问题,没有要求用户重新输入已知信息或新增确认回合。科学效果和整体费用仍需既有研究计划下另行授权与测量;当前没有新实验,也没有新 PR 的合并授权。

本次没有渲染界面变化;检查的是 CLI、原生输入和回读,视觉检查不适用。 未验证真实模型采用和全量费用,也未另做 PostgreSQL 运行。 保留完整原包、手动结算及具体旧 journal 的恢复入口是有依据的兼容成本;reader 的存在、签名或测试数量不能充当模型采用和目标收益。原生正常投递显著缩小,CLI 与完整回退成本增加也已经公开,故本结论不会把一次局部字节收益升级为全局效率判断。

English verdict: APPROVE — 4473ba97370bda708c7a913989d1e900a73b3276. Actual captured CLI/checkpoint/native/structured Host paths now converge on source-bound facts before canonical writeback; scoped native execution and original-Turn replay pass on real File/SQLite. 462 Python case passes (450 before the interrupted batch plus12 completed-tail cases) and132 TS passes are recorded; five environment skips, the retained 660-second omnibus timeout, five base-identical lint errors, eight base-identical fixture failures and separate maintainer authority remain explicit. Offline transport savings do not establish model utility, total-cost reduction or merge authority.

@mergify

mergify Bot commented Oct 25, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @loopx-agent.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 25, 2026

@songoow songoow left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · OpenAI GPT-6 Astra Pro · OpenAI · self_reported

评审结论:REQUEST_CHANGES。发现 1 个 P2:新的 in-flight 结算提示与既有必跑契约测试未同步。 这不是“未完成 Todo 被自动完成”的生产缺陷结论;本轮真实 File/SQLite 正反例支持新的条件完成语义,但仓库原有测试在当前提交确定失败。

动机

执行长期任务的 Agent 在重新规划时,需要先看原目标、已完成工作、失败证据和当前依赖,再决定下一步;入口重复铺开格式和结算命令会遮蔽这些事实。

同一合成场景在旧基准已获准重新规划,但原生 Turn 执行器仍拒绝调用工作进程;当前提交能够完成被独立校验的计划,并在原 Turn 上只结算一次。

本轮已验证的是同源分段读取确实进入 CLI、checkpoint 和实际 Host 输入,以及原 Turn 执行、收尾和重放可用;当前仍有一类由本 PR 引入的必跑契约不一致,分别触发 TypeScript 和 Python 两处失败。 本次不改变 Goal 验收、原 Todo 声明、实验评分或执行预算,不把读取成功、观察次数或一次结算说成 Goal 已完成。

真实模型是否因此作出更好的决定、全部读取和恢复后的总成本是否下降,仍未独立验证;本轮使用合成 Host,没有调用付费模型。

改动思路

读视图、执行许可、延续选择和结算规则分别复用现有 TypeScript owner;Python 只承担文件、Host 和 CLI 子进程适配。既有原始快照、签名身份和回执继续拥有恢复依据。

本次边界是已存在重规划流程的同源读取与原 Turn 收尾,不新增规划数据库、缓存确认或第二个准入器;当前最小修复是同步受影响的必跑测试,而不是回退已验证的条件完成语义。

这次同时处理了读取路径、已准入工作的实际执行和后续选择。原始决定只捕获一次,入口保留当前 Goal、规划窗口、当前权限与原 Turn 身份;review 返回状态、先前决定和证据索引,writeback 再返回现有写入格式。模型返回结果,外层执行器负责验证、写回和扣额。checkpoint 选择器仍读取完整原包,送给模型的是该原包的 CLI 视图。

场景 当前行为与边界
新捕获的 CLI/native journal 同源 review → 验收/证据明细 → writeback,不重新执行 guard
旧 journal 或未捕获调用 保留原完整来源路径;缺源不能伪造新快照
上轮已明确收尾或按结构化路径重规划 新 Turn 释放旧续跑偏好,仍按当前任务资格选择;不改 Todo 状态
明确请求组合收尾 验证写回后执行原身份的 owed quota 命令,再读规范回执;普通手动路径继续可用

这里的协议变化并非所有字节与提示语都保持原样:方法建议减少、通用 followthrough 在 stride 关闭时也会出现。中英文 RFC 和协议都披露了这些默认行为变化;完整来源、已冻结旧 capture 与原写入资格仍保留。不能仅凭短包预算通过,就声称模型决策或总费用更好。

具体改动

评审头为 4473ba9,基线为 8a718ca。完整差异 45 文件、+1897/-231,包含25个生产文件、3个文档和17个测试/fixture;没有把作者自评或其测试汇总作为本轮独立执行结果。

关键代码讲解

  1. replanView / replanGoalContext 把事实审视与写入格式分开,要求完整原始决定与来源哈希匹配。累计验收按内容哈希读取,相同 ID 的不同版本仍分别可见;缺失来源不能当作空验收。签名结算身份保留在入口,完整计划只延后交付,不被另一个 writer 替代。
  2. 原生 _prompt 经共享 authority 提取与提示函数,把实际 native 输入接到同一 reader;journal 和执行器保留完整签名包。structured Host、decision capture 与 benchmark preflight 的调用也已追到。旧 journal 不具备新读取路由时仍走原路径;Host 没有获得写 LoopX 状态、额度或调度的权限。
  3. settle_refreshed_turn 只在显式请求且已有成功写回和 quota_spend owed 时进入。它用真实 CLI parser 校验原 Goal、Agent、Todo/obligation、Turn、Goal instance、registry、runtime、source 和一次额度,再用当前解释器运行完整 CLI。响应不确定时读原回执,不能靠重新 guard 或重复 debit 恢复。
  4. resolveDeliveryContinuity 使用同 Agent 的已提交 checkpoint/path_delta 释放旧偏好。它不把一句“重规划”文案当授权,不替其他 Agent 决定,也不将仍未完成的 Todo 标成完成;显式选择、已绑定 Turn 和当前准入继续由原 owner 处理。
  5. projectInteractionExecution 修复已准入 autonomous replan 在普通 delivery 关闭时仍无法进入原生 Host 的问题。新许可必须同时有当前 replan lane、required replan 和 canonical attempt;显式 false/null 与缺失 attempt 仍拒绝。独立实际 CLI 对照证明这不是只有字段变化。

评审依据是改动前的 docs/reference/protocols/goal-vision-replan-contract-v0.md,版本 8a718ca。按既有条款核对:Ownership Boundary 的 typed owner/IO 分界保留;Replan ACK freshness 的原 Turn 身份、一次结算和下一轮重新准入得到执行验证;Accepted successor recommendations 的同 Agent、当前资格及已绑定 Turn 优先级保留;CLI Budget 的完整来源与不静默截断通过 populated source 和明细读回验证。对应的条件完成指引仍需要修复下面的既有测试冲突。

对主干的风险

P2:同步既有 in-flight settlement 回归,否则标准 TypeScript gate 固定失败

settlement_plan.ts 第57–59行 将原来的“Todo 且不是 in-flight”改成所有 Todo binding 都提供 completion 命令,并用 todo_deliverable_complete 限定执行条件。但未修改的 quota_settlement_plan.test.ts 第70–74行 仍要求 in-flight 的 command_template 和 command_condition 都不存在。

我用相同命令、相同测试文件在两个不可变版本配对执行:

node --no-warnings --experimental-sqlite --experimental-strip-types tests/control_plane_ts/quota_settlement_plan.test.ts

基线 8 passed;当前 head 7 passed / 1 failed,第72行实际为 ordinary completion、预期为 undefined。该文件由 package.json 的 test:control-plane 及 CI typescript-core 全量分片 收录,因此不能用别的选定测试通过来覆盖它,也不能把它归为旧 lint 或上游 skipped 噪声。

补充独立配对执行还发现同一根因的 Python 断言:test_quota_settlement.py 第735–742行 要求 settlement_step_command(VALIDATION) 为 None。另一位独立评审者在同一环境、明确核实两个源码导入路径后执行该单 case,基线 1 passed、head 1 failed,精确失败在第741行;我已核对两份原始日志,确认不是 fixture 或环境失败。它与 TS 断言属于同一个 P2,不重复计为两个生产问题。

pytest -q -o addopts= tests/control_plane/test_quota_settlement.py::test_in_flight_validation_never_projects_a_completion_command

最小修复是同步这两份既有测试:明确“只有原交付独立验收完成才执行条件 completion”,同时保留“未完成进展维持 open、原声明不改、semantic closeout 不换 Turn”的反例,然后重跑两项和仓库 gate。canonical-terminal-review.md 第133–134行 仍写 in-flight 会省略 ordinary completion,也应在同一修复中澄清:未完成时不执行 completion,投影可以提供有条件模板。不要删除测试或降低门槛。当前证据支持的是 实现与既有测试契约未同步;我没有观察到未完成 Todo 被自动完成或重复扣额的生产问题。

本轮独立验证与限度

  • 六个 Python 模块共 77 passed、0 skipped,覆盖 refresh/settle、staged read、native 无 Todo 规划、continuity、Host 投影与真实 Host 输入。File/SQLite 的 source tamper、错误原身份、dry-run、缺少语义证据/独立校验、响应丢失、明确 retry 与一次扣额均有执行证据。
  • 八个相邻 TypeScript suite 共 168 passed / 1 failed、0 skipped;失败就是上述 P2。额外 Python 单 case 的独立配对在 head 1 failed,与上述77项通过分别记录;dependency lock/根模块预算 7 passed。没有把套件文件数当成 case 数。
  • 我另外使用同一 fixture 在 SQLite public CLI 做了基线/head 反事实。两边 quota 都给出 should_run=true 与 autonomous_replan_required;基线的 native 执行报 LoopX Turn route is not host executable,host=0、spend=0;head 真正执行合成工作进程、独立校验 artifact 后 host=1、spend=1,resume 后仍为1/1。实际 prompt 中存在 staged reader。fixture 相同,执行源码来源分别核实;没有使用付费模型。
  • 相同完整 kernel-static Ruff 命令在基线与 head 都得到未修改文件 test_codex_attached_conversation.py 的5项 E701/E702,日志逐字节相同。这与新引入的 settlement 测试失败分别归因。修改文件的额外 Ruff 还指出 quota.py 第4行新加 json 未使用,可顺手删除;它不在当前 kernel-static 的 cli_commands 扫描范围内,不是本次 P2 的依据。

当前 CI 仍有失败和被跳过的任务。本轮没有重跑全部 CI 或 #7269 的浏览器场景,也不据其他 PR 的对照声称该场景已在此 head 本机验证。当前 main 1dafa7d 与本次修改的交叉点是 effect_runtime.py/effect_runtime_server.ts 的 local-snapshot 白名单:main 新增 quota.spend.commit,本 PR 新增 quota.turn_envelope.evaluate;解决现有合并冲突时需要同时保留,不能用一方覆盖另一方;这项合并冲突本身不作为当前生产缺陷。

另核对了仍开放的 #7285(37fce29fd624cbedcd7b94eda21dd7a18f051624)在 context_delivery、interaction、driver 和 settlement 的相关修改:它优化另一层上下文差分和 authoring,并在 driver 中区分规划与普通 delivery;本 PR 则在 TS projection 中处理当前 semantic replan 的许可。两项修复有重叠、处理位置和 delivery_allowed 的语义不同,不能假定机械叠加后等价。这里仅记录静态对照所见的待组合后验证风险,没有把未运行的组合写成已复现绕过,也没有把 #7285 当作当前 main 或本 PR 的前置依赖。合入顺序、冲突解决或重基改变后,应在新 HEAD 核验显式 denial、原绑定、完成/未完成与读取恢复反例。

我的整体评价

整体方向构成有实际可执行结果的 justified_increment:同源视图已到达真实入口,原 Turn 的有效工作、独立校验、一次结算和恢复形成闭环。长期持续工作能力在已测场景 improved;用户路径 preserved,没有新增必要确认轮次。大小和流程调整本身不能证明模型采纳、研究收益或完整成本改善,这些限制保留。

读视图、执行许可、延续选择和结算规则分别复用现有 TypeScript owner;Python 只承担文件、Host 和 CLI 子进程适配。既有原始快照、签名身份和回执继续拥有恢复依据。 本次边界是已存在重规划流程的同源读取与原 Turn 收尾,不新增规划数据库、缓存确认或第二个准入器;当前最小修复是同步受影响的必跑测试,而不是回退已验证的条件完成语义。

当前结论仍为 REQUEST_CHANGES,阻塞项仅为上面的 P2。 修复应集中在条件完成语义与现有必跑测试的一致性,保留已经验证的原声明、作用域和恢复约束。保留旧 journal/完整 capture 的兼容路径有具体持久化消费者,不建议为了减少分支而删除。

完整差异没有 frontend、Lark 页面或其他渲染布局改动;检查的是 CLI/Host 请求与只读命令,因此本轮不需要新增页面截图。 真实模型对长内容和分段读取的理解、已安装版本行为及浏览器整体验收未在本轮重跑。

此结论仅覆盖 4473ba9;不是 CI 全绿、merge-ready 或合并授权。重基解决白名单冲突或修复测试后应按新 head 核验受影响边界。

English verdict: REQUEST_CHANGES — 4473ba9. One P2: the intentional conditional-completion change leaves the existing TypeScript and Python in-flight contract tests stale (TS base 8/8 → head 7/8, failure at line72; paired Python base 1 pass → head 1 failure at line741). Synchronize both tests and the retained documentation while preserving incomplete-work and original-Turn safeguards. This review ran 77 passing Python cases, 168 passing TypeScript cases plus one failure, and 7 passing repository-invariant cases; a separate independent peer supplied the source-verified Python single-case failure pair. It also ran a same-fixture real SQLite/native CLI counterfactual with independent artifact validation and exactly-once replay. This is a test-contract inconsistency, not a claimed production auto-completion or double-spend bug. Model utility/full cost and global merge readiness remain unqualified.

Comment on lines +57 to 59
if (identity.binding_kind === "todo") {
validation.command_template = requireNonEmptyString(commands.todo_completion, "todo_completion");
validation.command_condition = "todo_deliverable_complete";

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] 同步这次条件完成投影所改变的既有测试合同。

此处有意让 in-flight Todo 也携带 todo_deliverable_complete 条件模板,但 tests/control_plane_ts/quota_settlement_plan.test.ts:72–73 仍要求 command_template / command_condition 为 undefined,Python tests/control_plane/test_quota_settlement.py:741–742 也仍要求 completion 命令为 None。

同环境、同命令在不可变 base 8a718ca5 与当前 head 配对:TS 8/8 → 7/8,Python 单 case 1 passed → 1 failed,均精确失败在旧断言,非 fixture 或启动错误。TS 文件也在标准 control-plane/CI 分片中。

请同步两层断言,并澄清 canonical-terminal-review.md:133–134 的旧表述;保留“未完成工作保持 open、声明不变、不强制 material closeout”和“原交付完成并独立校验后,可在原 Turn 条件完成并结算”的正反例。无需撤回已经验证的条件模板,也不要删除回归测试。这里报告的是实现/测试契约未同步;没有证据表明生产路径会自动完成未完成 Todo 或重复扣额。

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

needs-rebase Mergify: the pull request has merge conflicts with its base branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants