Skip to content

Show dated Todo continuation before settlement detail - #8537

Merged
huangruiteng merged 4 commits into
mainfrom
codex/due-todo-resume-context-20261111
Nov 11, 2026
Merged

huangruiteng merged 4 commits into
mainfrom
codex/due-todo-resume-context-20261111

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

When a dated Todo becomes ready on a signed Turn, the agent needs the captured reopen command and the original Turn's continuation guard. The initial read now surfaces those actions before the longer work context.

The guard supplies the applicable execution and settlement contract after reopening. The original settlement steps remain available through the signed capture for alternative outcomes. The selection requires the current dated resume receipt and matching Goal, Agent, Todo, and Turn.

Validation

  • Exercised capture, reopen, exact Turn reentry, fresh lease acquisition, and once-only settlement through the production CLI with File and SQLite authority. The same fixture verifies wrong-Turn refusal and explicit context-off recovery.
  • 169 Python tests, 7 TypeScript tests, control-plane typecheck, and quick premerge validation passed.

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

@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.

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

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

评审提交:80617304d3e2192db2a21778ba0c81d15c709306

[P2] 日期续办的首读移除了原计划中的必需字段。 我在 File 和 SQLite 的已到期合成捕获中,为兼容 v1 的 validation step 加入一个必需控制。主干在首读保留准确字段和值,候选因跳过整个 ordered_steps 而省略它。原捕获仍能通过 --select /interaction_contract/cli_channel/settlement_plan 恢复,但运行时只提供通用导航。请保留操作重排,同时恢复必需和未知步骤。若继续延后步骤,先在首读提供相关必需控制及原计划的精确读路。

动机 / Motivation

受影响的是通过 CLI 读取当前捕获的 Agent。有日期的 Todo 到期后,Agent 需要从当前捕获找到重开和同一 Turn 的准入命令。主干在较长上下文之后给出命令和原有结算步骤。 候选把重开和准入提前,但命中日期分支后省略所有 ordered_steps。File 和 SQLite 上,提前给出的命令能重开、复查同一 Turn 并取得新 lease。一个兼容 v1 计划中的合成必需字段在候选首读消失,精确原捕获仍能恢复它。评审范围是首读可见的义务与原 Turn 恢复。安装采用、完整 C1 成果和成本仍待验证。保留必需及未知字段,恢复依赖该步骤前的可见性。

改动思路 / Approach

保留日期 frontier 和结算 owner,并在同一个选择器中调整展示顺序。当前差异还裁剪了原计划的全部步骤。 从真实 complete guard 取得捕获,再执行生成的重开和同一 Turn guard。两种 profile 均取得新 lease,并保持原 effect。

具体改动 / Changes

关键代码讲解

hasBoundDatedTodoReentry 核验当前日期回执与 Goal、Agent、Todo 和 Turn。initialContextReadGroups 提前展示原命令,但在同一分支绕过完整的步骤循环。三文件 +100/-9。

规范依据是精确主干上的 docs/reference/required-work-context.md。dated-action-order 对应 Show the original dated actions early and retain the exact lease/effect.。keep-required-step-controls 对应 Retain required obligations including unknown fields of recognized steps.。immutable-alternative-read 对应 Read the original complete plan by exact recovery.。 原义务 选择逻辑

对主干的风险 / Risks

每侧八个真实入口对照覆盖提前展示、错 Turn 拒绝、off 恢复和同一 effect 的新 lease。两侧同一重新准入命令都返回原有 v1 计划。兼容字段反例使用合成数据,原计划精确读取仍通过。

语义与 CI 对齐

178 项 Python、62 项 TypeScript、Ruff、mypy、typecheck 和 premerge 的 5 项直接、17 项定向检查通过。主干和候选共有六项 raw replan、五项 reader reference 和五项 digest/Steward 失败。raw replan 在关闭展示时也缺少顶层 settlement_progress。新增的必需字段遗漏有独立复现,Change Quality 未通过。远程 CI 未查询。

我的整体评价 / Verdict

保留已验证的操作重排。请补齐原计划在相关决策前的可见性,再复验兼容字段和拒绝重开时的原捕获读取。这次只改 CLI 首读选择,无首屏改动。真实源代码 CLI 与两种存储已运行,未运行安装版 Codex 的模型会话。

English verdict: REQUEST_CHANGES. Preserve required and unknown settlement controls when reordering dated actions, and verify the exact original recovery on the real reader.

@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 · GPT-6 Astra Pro · OpenAI · self_reported

动机 / Motivation

等待到期 Todo 的 Agent,需要先找到重开命令,再使用原 Turn 的 guard 继续;此前这些操作排在较长工作上下文后面。 例如已提交 heartbeat 的 Todo 到达 resume_at 时,新首读把重开、同轮 guard 和禁止直接扣费的条件放到前面;常规路径已验证能继续执行并且只结算一次。 8 个真实续跑用例通过,但兼容计划中的必需或未知 step 控制被整体省略;同一原捕获在 base 的首读仍完整给出这些控制。 不增加 admission、执行授权或新的结算协议,不把内容可恢复等同于 Agent 已经读过,不验证真实模型行为或成本收益。

本轮审查固定 head 80617304d3e2192db2a21778ba0c81d15c709306,实际 base b89a574b05a3e7d5920a8e7184476dfb7b041790,并检查当前 main c49d59b24d3f7745fccf3a1f2df1e35036fe517b 的相关 owner 与调用链变化。

改动思路 / Approach

把到期动作前移放在既有 progressive selector 是合适的;但 selector 不能在未证明等价的情况下删除完整 ordered_steps 中的必需和未知约束。 当前边界应是重排动作与按已有 optional 标记延后材料;身份、spend、重开和结算仍由现有 owner 决定,原始捕获继续承担精确恢复。

主路径是原生 quota 生成带摘要的不可变 Turn 捕获,再由 context-read --initial-read 选择当前操作需要看到的内容。新谓词要求到期条件已满足、提交回执与 Goal/Agent/Todo/Turn/effect 全部匹配、没有其他恢复路线,随后把三条原动作及 spend 条件前移。执行重开和原 Turn 的 guard 仍走既有生命周期,没有新增状态、第二个 reader 或旁路授权。这个边界本身合理,问题在于动作提前之后,选择器还无条件跳过了全部 step。

具体改动 / Changes

三个文件共 +100/-9:运行时增加严格 dated 分支与读取排序,文档说明原计划可由捕获恢复,测试延伸真实生成命令的续跑过程。依据是 base 的required-work-context 约定:首读保留当前结算义务,包括未知 step 字段;只有明确 required=false 的附件指引可以延后。D1「先给当前操作与限制」和 D3「原捕获、原 Turn、无额外 spend」已验证;D2「保留必需及未知控制」未满足。

关键代码讲解

  • hasBoundDatedTodoReentry 用已有 typed 状态和精确身份决定是否进入新分支。它验证的是续跑资格,并没有检查每个 step 中的控制是否能等价地延后。
  • initialContextReadGroups 的前置字段 把 next_cli_actions 与 spend 限制放到工作正文前。这个改变由真实生成命令测试覆盖,保留现有 guard 和原回执身份。
  • ordered_steps 迭代 使用 deferredReentry ? [] : steps,绕过了原有逐字段保留以及 required=false 附件筛选。已知 plan 版本内的未知或必需控制同样被删除;这不是单纯调整显示顺序。

对主干的风险 / Risks

P2:保留 dated re-entry 当前计划中的必需和未知控制。 我独立复现了现有未解决线程所述问题,本次不重复创建 inline。以实际 File/SQLite 的已提交 dated-resume 捕获为基础,在原 validation step 添加一个契约允许的兼容字段 required_control,内容要求重开之前检查保留的 owner stop 条件。追加字段是用于验证未知字段契约的合成控制,并非声称现有 native producer 已生成了它。

对完全相同的摘要绑定捕获,使用实际 base/head 的 CLI 和 64k 页面读到 eof=true,结果如下;只把到期条件改为 false 的对照不触发删减:

捕获条件 base 首读 head 首读 head 原计划精确读取
到期,含兼容 required_control,File/SQLite 控制可见 控制及全部 steps 不可见 可恢复
未到期,其他输入相同,File/SQLite 控制可见 控制可见 无需额外恢复

完整原文还能恢复,不能补足重开之前的必读条件;后续 guard 也无法追溯执行一个本应先于重开的检查。最小修复是保留 required 与未知 step 控制,仅延后明确可选的模板/正文;或者让依赖这些控制的动作之前必须读取原计划。重跑真实捕获的 due/not-due 对照,并在 test_deferred_resume_generated_command.py 加入兼容未知控制的断言即可约束这条回归,不需要再增加状态或 reader。

独立验证:PASS 8 个真实续跑用例(74.62 秒),覆盖 File/SQLite、Codex/generic、恢复捕获、重开、同轮 guard、claim/ready、重放与单次结算;PASS 8 个 fallback/unknown-plan/current-task 读取用例;PASS 7 个 TS 用例以及 typecheck、Python syntax、diff check;PASS 上述反例驱动的 12 次真实 CLI 读取,其断言确认缺陷仍存在。正向测试通过不代表 D2 已满足。所有 Python 子进程显式绑定对应 checkout 的 PYTHONPATH,使用隔离临时 runtime。

语义与 CI 对齐

复用了原有 typed vocabulary,未引入新的权限名称,但当前 step 义务存在 unintended_drift。main 的近期选择命令前置、checkpoint 分页和捕获恢复变化已检查,仍保留原 step 逐字段选择,没有消除本问题。没有声称已运行整分支 rebase 后的集成测试。远端 packet 的 checks 不可用,CI 保持未知诊断,不计为通过。

我的整体评价 / Verdict

建议 REQUEST_CHANGES。长程运行可以受益于更早找到当前动作,但目前以丢失兼容义务为代价;用户体验上,首读显示结束却缺少当前动作的前置条件,风险高于这部分展示节省。改动规模与问题相称,保留动作排序、收窄 step 延后即可,不需要推倒既有架构。

这是 CLI 渐进读取的文本与顺序变化;已比较真实序列化输出,表格足以说明差异,没有浏览器界面变化。 未验证安装 Host 的模型行为、Windows、实际 PostgreSQL 或 token/耗时收益。 本结论确认输出契约回归,不声称已经观察到真实模型误操作。修复 D2 后,沿相同真实调用链验证 required/unknown 字段、到期/未到期及原身份重放,再对更新 head 复审。

English verdict: REQUEST_CHANGES

Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
Signed-off-by: huangruiteng <huangrt01@163.com>

@huangruiteng huangruiteng 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, gpt-6.1-sol, OpenAI, runtime_reported, reasoning effort max

动机 / Motivation

受影响的是读取已有 quota 捕获的 Agent。已绑定 Turn 的日期型 Todo 到期时,普通 CLI 和 Codex App heartbeat 需要找到重开、同一 Turn 的 guard 和当前结算条件。 在当前主干,同一捕获的重开命令、guard 和结算步骤都可回读,但它们排在工作正文后。最初的 PR 提前了命令,同时跳过了整个 ordered_steps,导致仍适用的验证条件和兼容字段消失。

到期时,当前捕获的命令和结算义务一起排在较长正文之前。读回的原计划内容可用。运行生成命令需重新拿租约,保持原 Turn 的 effect 和结算身份,重放后累计仍只结算一次。

范围是已存在的 CLI 渐进读取和真实续跑调用。日期条件、任务变更、租约、额度以及恢复前的原始输入完整性由现有 owner 执行。实测没有覆盖安装版模型如何消费这些内容。

改动思路 / Approach

复用日期 frontier、Todo resume receipt、已提交 heartbeat 和结算身份,只在有证据表明是精确的到期续办时调整读序。原选择器继续逐字段保留 step 及未知约束。使用它已产生的地址,将结算计划随命令一起提升到 opening,省去第二份字段筛选策略。完整内容继续由原 SHA 捕获负责。

TypeScript 按 typed facts 选读原地址,读取与重开继续遵循已有 CLI 和 authority。只有原 owner 能改变任务、批准执行或结算。开头的命令是既有的下一步,不是执行凭证。 这里新增的是调用内的读序选择。原 plan、日期回执、租约和账本各自由同一个已存在的状态 owner 写入。没有新存储、回执或 schema。

具体改动 / Changes

只在所选 Todo 到期、当前来源和原结算身份一致且没有替代路径时,采用提前的呈现顺序。 hasBoundDatedTodoReentry

既有结算 step 遍历保留必需及未知字段。到期分支把已选 plan 地址和 guard 一起提前,其余分支沿用原序。 initialContextReadGroups

使用同一地址集合和捕获选择生成完整或分页初读。保持原本的预算回退和选择顺序。 nativeContextReadPlan

从同一摘要绑定文件校验准确 Goal、Agent 和 Turn。读取保持无副作用,原始恢复仍受现有完整性检查。 project_saved_context_capture

3 文件 +119/−8。production 1 文件 +50/−6,tests_or_fixtures 1 文件 +59/−2,docs 1 文件 +10/−0。规格依据为 Required Work Context,版本 8e8a60df0fe6432483f1b41c3635909966b5d937。评审映射 D1 是当前命令和限制的读序,D2 是保留必需及未知步骤,D3 是从原捕获回读并保持新租约与原 Turn 结算。这三项均有实际入口验证。uv run --extra test python -m pytest -q tests/control_plane/test_deferred_resume_generated_command.py,并使用相同 File/SQLite 隔离 fixture 对比主干与当前提交的 context-project、context-read、重开、claim 和结算。

开关仍由现有 context-delivery 决定。关闭时使用完整已验证的原捕获。非到期、替代路径与不匹配的身份不走这次提前逻辑。未知计划版本保留原始内容。 有序 step 继续走同一选择器,旧捕获中未知字段保留原值,仍由用户可见的同一捕获提供。显式标记可选的长指导沿用已有的延后逻辑。当前完整 Turn 仍校验内容完整性。

对主干的风险 / Risks

如果读序选择与授权混用,可能提前暴露一个尚不可执行的操作或让原结算条件掉出初读。这里消费已有的精确日期与身份条件,并移动原读计划的地址。扩大 opening 可能多占一部分首读空间,原边界和分页继续保护输出预算。

用相同 fixture 对照当前 main 和 head。File 与 SQLite 的命令和兼容必需条件从工作正文之后一起移到之前。已有八个真实续办场景覆盖 File、SQLite、Codex App profile、通用 CLI profile 以及存在后备任务。先重开、重验原 Turn、取得新租约,结算重放仍只产生一次 spend。

旧 PR head 的 File、SQLite 都让未知 required_control 在初读消失。当前 head 的原捕获字面读取逐值保留该扩展。错 Turn 拒绝、关闭投影时完整合法捕获可恢复、原计划精确选读、重开前不能取得租约及重开后不能直接结算均经实际 CLI 断言。

501 项相关 Python 测试通过,14 项跳过。76 项 TypeScript 定向测试通过。控制面 typecheck、Ruff 和 mypy 通过。旧提交对照的两项 File/SQLite 用例按预期失败在必需条件缺失。 标准预合并 5 项 direct、17 项 smoke 通过。

验证使用源代码 CLI 和隔离的真实 File/SQLite backend,以及合成的兼容字段。真实模型采纳、安装版 Host、Windows 和 PostgreSQL 未在这次测试中测量。旧 CI 的 benchmark digest 登记报错已从日志定位。当前主干与候选均复现另一项同一处的 conversation binding digest 检查失败,属于未触碰的主干基线。

我的整体评价 / Verdict

评审版本 97e073f6b9520b689a3392cea9cdb9bb9b07a439。到期续办的命令与必需条件、原身份和结算重放已通过上述实际入口验证。原评审发现的条件均以修复前反例和当前结果对应核查。

与本次相邻的简化是复用同一个结算步骤选择器,将已经选择的地址加入 opening。执行与结算继续由现有 owner 管理。未运行已安装模型会话。Windows 和 PostgreSQL 未纳入本地验证。

English verdict: APPROVE. Head 97e073f. Dated commands and required settlement controls are visible earlier. The original Turn, lease gate and once-only settlement remain verified.

@huangruiteng
huangruiteng dismissed songoow’s stale review November 11, 2026 11:29

Original findings verified resolved at 97e073f. The initial reader now retains the original ordered steps and moves their existing selection alongside the dated commands. File and SQLite expose the exact compatible required_control before the work body. An independent literal read verifies the original plan, and the generated commands retain the original Turn, a fresh lease, and one spend across replay. Maintainer review: #8537 (review). Original discussion retained.

@huangruiteng
huangruiteng merged commit 3ab96ca into main Nov 11, 2026
5 of 8 checks passed
@huangruiteng
huangruiteng deleted the codex/due-todo-resume-context-20261111 branch November 11, 2026 11:31
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.

3 participants