Skip to content

fix(context): keep native reader digests in private references - #7812

Merged
loopx-agent merged 5 commits into
mainfrom
codex/context-reference-20261101
Nov 1, 2026
Merged

loopx-agent merged 5 commits into
mainfrom
codex/context-reference-20261101

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

保存的 context 导航在元数据、命令和选读续页中重复完整 SHA 与选择器。现在用私有、不可变的 reader reference 保存这些校验参数,模型拿到可执行的读取命令、页内容和字节游标。

quota context-read --reference-file 每页校验原 capture 和精确 selection。损坏、替换、权限或 selection 不匹配会拒绝读取;选读独立 schema 继续与完整输入保留证明隔离。完整机器导航、原 capture/journal、legacy reader、默认关闭、原 Turn 的准入与结算语义保留。

可选引用元数据遇到磁盘错误时,已验证的保存投影或 select/list/initial-read 回退到完整 digest 绑定的 legacy 入口,保留原文与可执行恢复。静态 native fixture 同时修正了命令 yield 后提前结束的问题:跟随实际 session 调用 write_stdin,完整覆盖后才读取校验 oracle。

验证(PR head 78f02bc3c):

  • 18 个相关模块:568 passed / 82 skipped。跳过项需要显式配置 native binary。
  • 实际本机 native host 0.166.0-alpha.5.1 的 6 个 saved-projection 入口全部通过,覆盖 machine、code mode、progressive 与 benchmark;推理使用本地静态 provider,0 付费模型调用。
  • Standard premerge 的 6 direct + 19 selected 检查通过,0 failure/warning/advisory;整体仍为 manual_review_required,保留 benchmark-sensitive 的 maintainer review hold。Ruff、diff、bilingual 和 public-boundary 检查通过。
  • Linux VM 的 4 个 App sandbox 用例曾因 bwrap: setting up uid map: Permission denied 失败,保留失败记录;实际 App host 的上述复验通过。最终集成源码的 Linux 0.162.1 on/off checkpoint 联合验证均通过:本次新建 source、ordinary/stride、多代 receiver 实际工作、无 benchmark 的 core Goal,以及自动 full recapture。此为工程路径资格,长程科学收益仍待实验。
  • 原始匹配 CLI 样本在同一 49,452-byte selection 和 3,500-byte 输出上限下,21 → 19 页、71,899 → 65,555 返回字节;大整数、原约束及替换拒绝保持一致。这是传输测量,费用和长程收益仍待实验。

引用 schema 是本地 IO vocabulary,复用已有不可变发布、typed selection 与 full-page observation owner;Python 仅承担该 IO adapter。调用方的原 SHA、生命周期、关闭态和完整覆盖断言保留。现有 native context 交互承载这些 reader,activation settings 与 rendered UI 保持原行为。独立 review 与未决资格分开记录,进入正常 PR review 不代表 merge readiness。

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

Copy link
Copy Markdown
Collaborator Author

[P2] 将 reader reference 写入放回原捕获的错误恢复边界

首次在 0de0888 通过真实 quota context-project --context-delivery on --codex-app 入口和隔离合成 capture 复现:将 loopx.cli_commands.quota_capture.write_context_read_reference 注入为 OSError(errno.ENOSPC, "fixture"),CLI 返回 exit 1、stdout 为空,stderr 为 traceback(project_saved_context_capture:653 → model_context_reference:312)。原 capture 字节与摘要保持不变,native journal 已存在,却没有结构化错误、原 capture recovery 或 Turn receipt 返回给调用方。当前 head 809398a 的完整 quota_capture.py Git blob 与该复现版本相同。该新调用位于既有 presentation 的 try/except 之后,所以新 IO 失败绕过了原恢复逻辑;这不是 CI 状态或旧字段测试造成的。

最小复现是在现有 test_saved_context_project.py 的已启用原生投影 fixture 初始化后,用下面的故障注入执行同一 CLI main/投影入口:

with patch(
    "loopx.cli_commands.quota_capture.write_context_read_reference",
    side_effect=OSError(errno.ENOSPC, "fixture"),
):
    project_saved_context_capture(args)

请将这一步纳入现有错误边界,失败时保留原 capture/digest、Turn receipt 与可执行 recovery,且不重新 guard、admission 或 spend;补一个经 CLI 入口断言 JSON 恢复输出与原始字节不变的回归测试。完整精确头评审仍在继续。

…vailable

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

Copy link
Copy Markdown
Collaborator Author

已在 6642dd3 修复上述 P2:短引用 metadata 发布已移入原有 presentation 的 try/except。原 native view 与 journal 已有效时,发布失败返回同一份完整 legacy recovery,保留 capture/digest 和原 Turn,不重新 guard/admission/spend。

补充真实 CLI 的首个与第二个 reference ENOSPC 负例,原始字节及恢复读取断言通过;另核验 should-run 失败路径保留原 receipt。相关 34 项恢复/完整 Goal 测试和 4 项 projection 负例通过。完整 18 模块测试正在结束。standard premerge 的 6 direct + 19 selected 全部检查通过、0 failure/warning/advisory;因触及 benchmark 测试路径,保留 benchmark-sensitive maintainer review 的 manual hold,未作自合并。

同批还修正了模拟 native model 对 yielded exec 的跟随:使用实际 write_stdin session(包括 code-mode),完整工具结果后再判断工作与输入覆盖,原时间/字数/完整读取门槛不变。最终集成源码的真实 on/off source→fresh receiver→后续工作→再捕获正在复验,未启动付费 benchmark。

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.

Reviewer: model_agent | model=gpt-6.1-sol | provider=OpenAI | runtime_reported | effort=max

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

评审对象:7812@78f02bc3cc644baa91d9109938822ade2b08ce75;实际 merge base 为 6b2d56089ad52abdc103328437609bc749b9b49d。本结论针对完整 15 文件 diff;CI 未查询、未轮询、未等待。

动机 / Motivation

同一份已保存的任务上下文被分页读取时,旧输出在多个命令里反复展示完整摘要和选择条件;新输出把它们放入私有不可变引用,模型执行短命令即可读取同样内容。受影响的是通过原生上下文入口恢复当前任务的 Agent,以及需要从原捕获中只读取部分字段的执行者。这里的摘要是绑定原始文件的 SHA-256,引用只是定位私有校验参数的文件,不能证明模型已经接收内容。反复展示相同校验参数会放大分页返回量;如果删除它们却不保留可靠校验,又会失去原文身份。同一合成输入经真实 CLI 读取,选择内容逐字节相同,分页从 9 页降为 8 页;磁盘写入失败后仍能读取完整原文并保留原 Turn,摘要变化仍被拒绝。本 PR 不改变任务授权、准入、结算或激活默认值,不交付安装升级、跨接收方资格,也不证明真实模型的 token 费用或长程收益。

改动思路 / Approach

选择语义仍由既有 TypeScript owner 决定,原生生命周期继续管理连续性;Python 只承担文件校验、私有元数据 IO 和输出适配,必要读取失败与可选短引用写入失败保持分离。本次边界是现有原生上下文读取的短引用与可恢复 IO:复用完整摘要和原 Turn,保留旧读取协议及完整页面观察器,不扩展执行权或新的产品入口。完整机器导航存入 descriptor 的 navigation;模型接收命令与字节游标。读取时先验证原捕获,再由原选择器决定字段,最后校验精确 selection。新文件是私有、派生的 IO 元数据,确实增加本地持久化格式,但没有迁移 canonical authority。文件名里的短后缀只是 locator,完整摘要仍在文件中。复用已有不可变发布和 legacy cursor,比另建上下文状态机更小;不相关的模块拆分与语言迁移留在本次范围之外。

具体改动 / Changes

关键代码讲解

  • write_context_read_reference 复用原有原子、0600 发布;已有内容必须一致,不能覆盖。读取端检查物理普通文件、所有者、权限、大小和完整摘要格式。
  • model_context_reference 把重复摘要移入引用,保留可执行 recovery、mode 和连续读取指引;预算太小时仍保留有效 legacy view,没有截掉关键恢复信息。
  • read_context_capture 每页重验原文与 selection。compact selected page 使用独立 schema;选读 EOF 不算完整输入保留。元数据遇到 OSError 时退回带完整 capture/selection 摘要的 legacy cursor,损坏 descriptor 的 ValueError 仍拒绝。
  • project_saved_context_capture 把短引用 IO 放回原 try/except。第一次或第二次引用写入失败后,已经有效的 native view、journal 与原 Turn 仍可恢复。
  • NativeContextReader 先跟随模型实际可见的命令、session 和全部页面,完整覆盖后才读取 metadata oracle。引用、旧工具输出或单独 EOF 都不能填充 retained baseline;共享 oracle 也消除了各测试重复解码。

规范依据是在读 diff 前读取的 既有 required-work-context.md,revision 6b2d56089ad52abdc103328437609bc749b9b49d。相关段落为 1–240、418–636、881–1040;没有声称读完整份文档。下列 CTX 标签对应其中未编号的既有条款,不增加义务:

条款 当前头映射
CTX-1:原 capture、Turn、准入与结算身份 implemented;两次发布故障均读回原文与原 Turn,无新准入
CTX-2:逐页原文/选择校验和连续字节 implemented;完整内容相等,大整数与 stop 保留,篡改被拒绝
CTX-3:legacy/完整观察兼容,选读不算全量 implemented;旧字段集合保留,compact 与 fallback 选读均无 full receipt
CTX-4:私有物理文件与可恢复 IO implemented;权限、symlink、损坏、缺失和 ENOSPC 覆盖
CTX-5:关闭态与显式源隔离 implemented;默认关闭输出等价,不发现或创建无关 Goal runtime

对主干的风险 / Risks

主要风险是可选 metadata IO 被误当作必需恢复条件,以及新选读协议被误认作完整输入证明。此前 P2 评论 的 0de 故障确实产生空 stdout/traceback;它没有被改写为通过。6642 修复发布边界,但同一读取故障 oracle 仍发现 selection 写入失败会拒绝合法读取。当前 78f 的两个边界均经独立真实 CLI 复验;所有原捕获字节与 Turn 保留,3 类读故障与实际 base 内容一致,6 个 capture/selection 变更反例仍拒绝。source-hash bypass mutation 使独立 oracle 按预期失败,未修改头通过,说明检查能发现缺失校验。

独立检查 结果
当前头 18 个 owning modules PASS:568 passed;82 个显式 native binary 用例 SKIP
同一 CLI 输入的选读 PASS:20938 bytes 完全一致;9 → 8 页,30345 → 27645 返回 bytes,导航 4236 → 3030 bytes
原始完整读取、legacy 与关闭态 PASS:21156 bytes 原文一致;旧字段保留,关闭态仅归一化临时 locator 后相等
ENOSPC / 篡改 / unsafe reference PASS:两个发布点与 select/list/initial-read 恢复;摘要、profile、权限、symlink、损坏或缺失拒绝
Ruff、mypy、语义 advisory/full smoke、15 路径公开边界与 diff PASS;mypy 17 个配置文件;语义扫描零候选不等于没有语义变化
checkpoint 单元范围 PASS:5 passed;19 个显式 native supervisor 用例 SKIP,当前文件 blob 未变
standard premerge PASS:6 direct + 19 selected 检查通过,0 failures/warnings/advisories;整体 manual_review_required,保留 1 个 benchmark-sensitive maintainer hold;exact-scope CQR 有效。
安装后 App / 真实模型 / 跨 receiver 后继工作 UNVERIFIED;作者证据未继承为本次独立通过

关闭态与共享入口的隔离由真实 off/legacy 反事实、机器配置和生命周期回归验证;显式源在无关 registry 损坏时仍可读取。该头保留原文件、journal、完整机器导航与 full-page observer;私有短引用不赋予 freshness、授权或 model retention。这里没有渲染页面修改,视觉检查不适用;未独立验证安装后的 App、真实模型接收或跨接收方后继工作,本次是源码 checkout 的真实 CLI、私有文件 IO 与本地合成夹具。实际 native/model 的跳过项继续是未验证范围,不能冒充通过。

语义与 CI 对齐

三个新增 schema 标签属于本地 transport vocabulary;复用既有 TypeScript selection 和 full-page observation,不建立第二个政策或领域分类 owner。逐条比较了读取指引的执行者、顺序、强制条件、摘要来源、选择范围、继续/停止与结算:完整摘要由 CLI 持有并验证,选读连续覆盖与原 Turn 义务保留。完整 legacy 指引未删减。CI 未查询或等待,未知 CI 不作为拒批原因;当前回归、缺失的必要覆盖和既有 maintainer hold 仍分别保留。

我的整体评价 / Verdict

本头交付了完整且可回滚的源码 transport 修复,先前公开 P2 已用独立故障复现确认解决,当前完整 diff 未发现剩余阻塞。范围与机制成本相称:生产改动集中在五个既有 IO/CLI 文件,+162/-10,其他增量用于文档、测试和调用方迁移,没有新增 canonical owner。对 long_horizon 的判断是 preserved:原捕获、Turn 与恢复连续性保留,长期效果和完整成本未测量;对 user_experience 的判断是 improved:同样信息以较短可执行导航读回,元数据写入失败也能继续恢复。这里批准的是当前代码,不代表安装、真实 receiver 资格或 merge readiness;benchmark-sensitive maintainer hold 仍保留。本次没有合并或 dismiss。

English verdict: APPROVE for #781278f02bc. Transport and recovery invariants are independently verified; native adoption and merge readiness remain separate.

huangruiteng added a commit that referenced this pull request Nov 1, 2026
Signed-off-by: huangruiteng <huangrt01@163.com>
@loopx-agent
loopx-agent merged commit b3563a9 into main Nov 1, 2026
11 of 13 checks passed
@loopx-agent
loopx-agent deleted the codex/context-reference-20261101 branch November 1, 2026 12: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.

1 participant