Skip to content

fix(context): preserve native transport after checkpoint preflight - #7558

Merged
huangruiteng merged 2 commits into
mainfrom
codex/checkpoint-context-binding-20261028
Oct 28, 2026
Merged

huangruiteng merged 2 commits into
mainfrom
codex/checkpoint-context-binding-20261028

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

Checkpoint 预检在原生 SessionStart 前保存 quota 决策,worker 随后通过 context-project 读取。此前任务绑定命令遗漏已启用的差分设置和原生上下文目录,选择 Todo 后又回到普通全量。本修复复用既有 selection transport owner,将这些设置保留到实际绑定;原始捕获、Turn 和准入次数保持。

本轮还修复同一接线中的分页上限丢失:调用者明确设置 --max-page-output-bytes 后,后续绑定继续沿用该上限,包含 continuation 和原 capture recovery。未提供参数时保留原设置,支持已有参数替换及幂等调用,没有新增配置或全局缩小分页。并删除评审指出的未使用 warm 绑定,修复 Ruff F841。

分支已 rebase 到核验时的 main(32407c223),仍以 main 为 PR base。当前改动只涉及一个 CLI 交付适配器和两份回归测试,没有视觉改动。

验证 head:362c9db1c8ba90175486f039a85ecd0fea4c0116;核验 base:32407c22327395a99fe6fdf41459a2ef6691e0b4。

本轮验证:

  • 新增上限回归在修复前实际失败:三个参数组合保留错误旧值,真实 File checkpoint → 投影 → 绑定丢失显式上限。保留失败,未改变完整读取或权限规则。
  • 修复后两份源码测试 76 passed、5 skipped;真实 File/SQLite 的启用、关闭、压缩后全量与原始捕获/回执边界均在其中。5 项为未启用的原生环境案例,不算通过。
  • 另外显式运行真实 Codex 0.163.0-alpha.11.1 的 benchmark 路径:1 passed。使用隔离临时配置和本地模拟推理,两次独立 worker 唤醒恢复同一 Session,实际消费投递的绑定命令,验证 full → delta → delta → delta、每份完整输出不超过调用者的 32000 字节上限、完整重建与原捕获不变。没有云端推理或原生评分调用。
  • 三个改动文件的 Ruff、diff 检查和显式公开边界扫描通过。固定提交上 standard premerge 6 项直接检查、18 项所选 smoke 全通过。首轮校验期间并行修改了测试文件,触发三个 failed_tracked_side_effect;该次无效结果保留,随后提交并保持工作区不变完成上述重验。

原 head 的评审、验证失败和历史实验记录保留;旧 head 的结论不自动沿用。此提案修复交付接线和可配置上限,不证明模型理解、实验采用、完整计费收益或任务效果。运行中实验没有热换版本;评分、预算、机会、冷却与合并权限保持。

@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; OpenAI gpt-6.1-sol; runtime_reported; reasoning_effort=max

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

[P2] 先移除新增测试中未使用的 warm 绑定;当前 required Ruff 在 test_saved_context_project.py:608 报 F841。相同 immutable base 文件通过该检查。功能修复已有实证,这项结论没有声称运行时传输存在同类失败。

动机 / Motivation

使用 checkpoint 预检和原生 Codex SessionStart 接续工作的 Agent。

预检保存原 quota 决策后,Agent 从实际投影选择 Todo;旧绑定命令丢失已开启的 context transport,选择后回到普通全量。当前 head 保留原设置和身份,使完整读取后的选择继续差分,压缩后则恢复全量。

真实 File/SQLite 的启用与压缩恢复用例、原生两次 worker 唤醒均通过;未新增投影准入或扣额,原捕获字节保持。

本次不改变默认开启、实验处理、模型权限或完整成本资格,也未验收安装 App 和真实模型的长程收益。

实现的传输修复已有实际证据,但新增测试留下一个 Ruff F841 失败;整体 C1 消费替换与真实采用仍归既有工作。

改动思路 / Approach

复用现有参数组合与原生生命周期 owner,仅修保存投影到实际选择命令的接线,不创建第二次决策或恢复状态。

只改 quota_capture.py 的展示参数组合及对应测试;原捕获、选择、准入与结算 owner 保持。

已有 bind_capture_selection_transport 负责 fresh quota 的选择参数;本次让 saved presentation 也消费它。保存的原始 JSON 和 hash 不变,当前 native 目录和已启用参数只进入派生展示。参数按 token 组合,保留原 capture root,显式替换时去掉重复参数,并处理 dir/root 互斥;不是再跑一次 guard 来补参数。

相同原始输入 immutable base 当前 head
File/SQLite,启用后选择 4 个启用/压缩分支缺参数而失败 4 个分支通过;有效基线用 delta,压缩后用 full
File/SQLite,关闭 2 个 full 对照通过 2 个对照通过,原始文件不变
真实 Codex、本地模拟推理 本轮不据旧版本推断 两次 worker 唤醒消费实际投递命令,原会话连续读回

这里的 native 证据验证实际进程和工具输入;推理响应来自隔离 loopback fixture,不证明模型理解、真实实验采用或净 token 收益。

具体改动 / Changes

规格依据:docs/heartbeat-automation-prompt.md,改动前 revision 19c213324fbb5990288bd374c1b79096f22bb152。该文未编号的要求按名称映射:saved-snapshot-presentation、selection-keeps-transport、full-recovery-after-invalidation、no-new-authority-or-default 均在本切片实现;不是用本 PR 的测试反过来定义规格。

关键代码讲解

  1. project_saved_context_capture:先校验源 hash、原 Goal/Agent/Turn 和私有实体目录,再补展示参数并交既有 native projector;异常仍给出原 capture 的 recovery,不能改写源或重新准入。
  2. bind_capture_selection_transport:复用已有 selection template,保留原 selector,按当前明确选项替换相应 argv token,避免重复 root、context 及互斥目录。saved/explicit/fallback 三种 root 与重复调用的 parser 断言通过。
  3. quota 的原 emitter:调用点保持,继续复用同一 helper。实际任务绑定仍走原 quota owner;投影不记新准入,随后显式绑定自身的 receipt 与原预检 receipt 分开,均不冒充 spend。

三文件 +219/-27,其中生产 +32/-11,其余为回归。完整检查这三个文件;没有新配置项、状态库、决策 RPC 或前端页面。

对主干的风险 / Risks

最强反例是“helper 生成了正确字符串,但 native worker 消费的是漏参数的命令”,或压缩后继续沿旧 baseline。已通过真实 checkpoint → context-project → 发出的 selection CLI 覆盖两种 backend 的 on/off/PreCompact;同一六例在 base 为4 FAIL/2 PASS,head为6 PASS。真实 Codex 0.163.0-alpha.11.1 的独立本地模拟推理案例通过两次 worker 唤醒,检查实际命令、full/delta 重建、原文件字节与原 receipt 数,没有云端推理或原生评分调用。

扩大 source 回归 276 PASS / 49 SKIP;49 项是默认未启用的显式 native 环境案例,本轮另外运行且通过其中 benchmark 路径,其他组合不因此算通过。Standard premerge 的 6 direct / 18 selected PASS。Ruff 单列 FAIL:新增 restore-loop 不再使用 warm,却保留第608行赋值;不可变 base 的同组三文件检查为 PASS。CONTRIBUTING.md 和验证指南的 Ruff 范围包含 tests,不能用 premerge 的绿色覆盖这个失败。最小修复仅删除 unused binding,再运行 uv run --extra test python -m ruff check tests/control_plane/test_saved_context_project.py,保留完整重建断言。

语义与 CI 对齐

继续使用既有 context/selection/Turn 词汇与 typed owner,没有 substring/prose 状态分类、默认开启或额外业务义务。关闭的真实 File/SQLite 对照保持 full、无 native 发布;hash/错身份/私有目录/完整读取的拒绝和恢复仍属原 owner。wait_for_ci=false,本轮未读取、轮询或等待远端 CI;发现来自当前本地检查。

我的整体评价 / Verdict

problem_context=justified_increment,long_horizon=preserved、user_experience=improved:实际选择保留已获授权的 native transport,零新增信息准备或确认轮次;压缩和源失效继续要求完整原文恢复。repository_reuse=reused、observable_semantics=intentional_change_validated、code_volume=necessary、change_proportionality=proportionate、default_off_isolation=isolated、authority_semantics=aligned、semantic_alignment=aligned。原 C1、安装采用与真实长程净收益仍独立开放。

检查全部三文件:仅 CLI 保存上下文投影、参数组合和测试,没有渲染页面或交互布局变化。

正式 App 安装、真实模型理解及完整费用收益未验证。

当前 REQUEST_CHANGES 只要求修复已引入的 required Ruff F841;不要求重做已通过的功能设计或补齐所有 parent roadmap。新 head 仍须核对实际变更和相称检查,当前结论不自动沿用。

English verdict: REQUEST_CHANGES b7e3d12; production CLI and native continuation evidence passes, but the changed test introduces required Ruff F841. Remove the unused binding and recheck the exact new head.

Comment thread tests/control_plane/test_saved_context_project.py Outdated
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/checkpoint-context-binding-20261028 branch from b7e3d12 to 362c9db Compare October 28, 2026 11:51

@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 · OpenAI · gpt-6.1-sol · max · runtime_reported

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

精确 head:362c9db1c8ba90175486f039a85ecd0fea4c0116;不可变 diff base:32407c22327395a99fe6fdf41459a2ef6691e0b4。

动机 / Motivation

使用 checkpoint 前置捕获恢复工作的 Codex worker,需要在绑定任务后继续正确读取原上下文。

旧路径在 native 会话启动后呈现保存的 guard,却在任务选择命令中丢失已启用的差分与目录;本次将传输参数带到真实绑定命令,并保留显式分页上限。

真实 File/SQLite 的开启、关闭和压缩恢复路径,以及实际 Codex 双次唤醒消费均已通过,原捕获和结算身份保持。

本次是既有上下文交付链的修复;不改变准入、模型保留假设、全局安装或科学实验,不证明净 token 或费用收益。

改动思路 / Approach

复用现有 selection transport composer;Python 只组合 argv 与保存快照的展示,native lifecycle 和 TS owner 继续分别负责基线及准入结算。

当前边界从 checkpoint preflight 到 native 呈现、任务绑定及后续读取,完整覆盖实际消费者;没有增加配置、状态或第二份策略 owner。

从保存前置决定到 native 呈现的时序保持:前置捕获不提前建立会话基线,SessionStart 后才呈现;绑定任务只重用已生成的选择入口。目录冲突按当前显式输入替换,重复组合不会累加同名选项。原始捕获不因展示参数改变而被重写,返回的恢复命令继续指向原来的完整来源。

具体改动 / Changes

关键代码讲解

全量3文件 +235/-28 已重新读取。当前head除了旧Ruff修复,还包含分页上限传递,不能继承旧头的审核结论。

  • project_saved_context_capture 在核验原Goal/Agent/Turn、hash及私有cache根后,在 native 投影之前调用现有composer;原文件、原receipt和源身份保持。
  • bind_capture_selection_transport 将保存/显式/回退root与当前native目录合并到选择argv,替换冲突目录、保留单一root与turn-envelope,并带入显式 --max-page-output-bytes。未提供cap时保留既有值,不新增默认上限。
  • native_context_capture_view 仍复用共享分页与原capture恢复,实际 native 消费者而非仅命令字符串检查证明整条路径可用。

预先读取的规范为不可变base heartbeat-automation-prompt.md / Opt-in native context delivery。saved-snapshot-presentation、selection-keeps-transport、full-recovery-after-invalidation、no-new-authority-or-default 在本head均为 implemented;这是已有承诺的修复,没有新增schema或第二份策略owner。

独立对照:同一六格真实CLI(File/SQLite × off/on/压缩后on),不可变base为2 PASS/4 FAIL,四败准确落在返回命令丢失context_delivery;当前六格均PASS。对父提交411a2c95的composer另测:三种root的显式32000均错误保持64000,当前均32000;未设置的三种组合仍64000,重复组合幂等。

对主干的风险 / Risks

最强风险是绑定时丢传输/上限、破坏原argv身份,或在基线失效后借旧delta继续。源码两套76 PASS/5 SKIP覆盖原capture完整性、错误身份/hash、非私有/符号链接根拒绝及恢复;相邻五模块的实际结果为 400 passed, 49 skipped in 574.28s (0:09:34)。跳过的native组合没有计为通过。

另显式开启真实 Codex 0.163.0-alpha.11.1 的benchmark消费者,1 PASS:两次worker wake使用同一会话,消费实际返回的绑定命令并逐份重建 full→delta→delta→delta;整个描述/分页保持32000限制。每次wake保留其原guard和一次合法任务绑定,只有两wake之间的显式结算产生一次扣额。推理仅隔离loopback模拟,无云端模型或原生评分调用,不证明模型遵从。

Required Ruff三文件PASS,standard premerge 6 direct+18 selected PASS、无manual hold。旧F841已移除,原完整重建断言保留;旧inline和作者回复已完整读过,解析修复不等于继承旧批准。off两格在base/head都通过且无native journal;普通无capture入口仍提前返回,未新增调度、权限、配置或确认轮次。native连续性仍是既有工程假设,未被改称保留证明。CI未查询、未等待。

我的整体评价 / Verdict

当前范围 goal_achieved,没有新增阻塞;旧Ruff问题已核实修复。长程维度为 preserved,实际接续可用性为 improved。

接续及压缩恢复保持原身份和完整源,双次实际worker没有重复前置准入或多扣额;这是工程链路资格,长程模型采用及全成本净收益未测。

既有worker实际消费返回argv,无需人工复制缺失的传输参数;错误沿原完整capture恢复,off 不新增设置或确认轮次。

视觉审阅不适用:修改只涉及CLI argv与上下文JSON交付,未改变渲染页面;正式App安装采用未验证。

Installed App and long-horizon model adoption not qualified.

同一composer消除参数重复追加是相称的局部收敛;更广controller迁移不属于本修复。批准仅绑定此head,线程收口、合并readiness和maintainer合并权分开处理。

English verdict: APPROVE — The exact head preserves native transport and explicit page limits through real task binding and recovery; live model benefit and installed adoption remain unverified.

@huangruiteng
huangruiteng merged commit 2cdff65 into main Oct 28, 2026
22 of 38 checks passed
@huangruiteng
huangruiteng deleted the codex/checkpoint-context-binding-20261028 branch October 28, 2026 13:16
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.

2 participants