Skip to content

fix(context): keep bounded native references readable - #7735

Merged
huangruiteng merged 2 commits into
mainfrom
codex/native-context-reference-budget-20261030
Nov 1, 2026
Merged

huangruiteng merged 2 commits into
mainfrom
codex/native-context-reference-budget-20261030

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

原生 quota should-run 已经完成准入后,较长的捕获路径会与重复的分页说明一起撑破调用方的 4 KB 输出上限,最终返回 quota_decision_transport_failed。本 PR 使该路径仍能返回可读的原始捕获引用。

复用 saved projection 已有的引用构造逻辑,统一 guard 与 context-project 的 path、digest 和有界读取命令。导航保留在外层;完整分页与截断恢复说明使用同一常量,随首个有界全文页返回。历史无界响应保持兼容,原始捕获、准入和结算身份不变。同步了中英文使用说明。

验证版本:af1808afb6fc7073f534c4875840cef9a0b2e0ad,不可变基线 a2c8c940c36e046beaef728750f2451bc46458d0。

  • 同一真实 CLI 回归在基线 File/SQLite 两例均失败,修复后均能在原 4096 字节上限内返回;随后读取同一 receipt,只有一次准入、没有扣额。
  • 相关 CLI、捕获、原生生命周期及选择恢复共 319 例通过;保留历史无界 wire、拒绝、错误摘要、重启与差分恢复覆盖。
  • 隔离构建 wheel 后,从工作树外调用已安装 CLI,File/SQLite 均通过有界返回、完整分页说明、原始 receipt 选读及错误摘要拒绝。CLI 未从源码目录导入;未安装或更新用户运行中的 App。
  • 标准 premerge:6 项直接检查及 19 项选中检查通过,沿用原预算;Ruff、配置内 mypy、双语差分和公开边界检查通过。首次检查因新工作树缺 npm 依赖失败、首次打包因缺前端产物失败,补齐构建环境后重跑通过,未放宽检查。

同一 33,657 字节合成捕获、7,900 字节输出上限下,引用由 4,978 降至 3,857 字节;完整投递计入首次分页说明后由 41,488 降至 41,330 字节,读取仍为 5 次。4 KB 路径由拒绝恢复为可用,该更小预算需要 10 次读取。此证据仅说明传输修复,不证明模型决策、实际 App 采用或长期成果收益。

这是可独立回滚的现有传输路径修复,可先于 #7430 合并;没有引入新的决策 owner、状态或协议选项。C1 的完整契约切换、旧 reader 退出和原 quota 单会话成果/完整成本验收仍保留在原任务。精确版本 change-quality 记录为 pass;合并留给维护者。

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

@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

使用 native context 的执行器在已经完成 should-run 准入后,仍可能因捕获路径较长和重复指引挤满 4 KB 返回预算,拿到 transport_failed 而非可用引用。

基线把完整分页说明重复放进文件引用,实际长路径下已 committed 的原 Turn 返回失败。本 PR 把 path、digest 和有界 reader 统一为小引用,外层保留导航,完整分页和截断恢复说明交给首个有界全文页。

同一长路径/4096 字节负载在 File 与 SQLite 的真实 should-run 上,base 两例失败,head 两例返回预算内引用;随后第一页包含原完整 guidance,选读的 receipt 精确等于原捕获,准入计数仍 1、spend 仍 0。

这是现有传输/读回修复,不增加准入、结算或模型保留证明,不完成完整 C1/#7430 切换,也不证明实际 App 采用、模型理解或长期费用收益;当前未归因 CI 仍阻止批准。

改动思路 / Approach

修复针对已决定事实的传输边界:保留原捕获与身份,引用中只放可定位、校验和读取的元数据,完整读页义务由实际第一页承载。导航、选读和完整读取的职责仍分明,未把展示成功变成新的工作授权。

这是可独立回滚的 bounded native reference 修复;实际 guard、保存投影与 reader 共同覆盖。完整 C1切换、旧reader退役与真实模型成果/完整成本验收不在本次交付声明内。

should-run 仍先完成原 admission并保存完整决策,再构造引用。外层导航告诉读者选取需要的事实;直接按 path/hash 读第一有界全文页时,reader 自动带上完整分页与截断恢复说明。选读回到原 receipt,读取结束不会制造新 guard、Host调用或扣额。

saved projection 已经使用 path/sha256/预算内 command 这组边界。抽成同一个 _capture_read_reference 后,guard 与 context-project 复用它;完整指引继续使用原常量,避免另写简化版义务、另建 reader 或让两个路径维护不同预算规则。

具体改动 / Changes

关键代码讲解

  • _capture_page:把完整分页义务交付给实际读者。首个有输出预算的全文页返回原 CONTEXT_CAPTURE_PAGE_GUIDANCE;selected 页继续用选读说明,历史显式无界响应保留原形状。
  • _capture_read_reference:统一文件身份与预算 reader。只构造原 path、sha256 和同预算 command,复用原命令 owner;导航或完整指引不在每个嵌套引用中重复。
  • native_context_capture_view:在原 capture 已持久化之后投影小引用。主引用与 recovery 复用同一 helper,外层导航保持;预算不足仍走原 transport failure,不伪造成功或重新准入。
  • project_saved_context_capture:让保存的投影与 guard 共用已有规则。移除局部重复 helper,成功与失败恢复仍指向原完整文件,并保留调用者预算和原捕获身份。

规范基准:docs/reference/required-work-context.md;修订 a2c8c94。独立基准是改动前 Native quota should-run/context-project 的持久化、7900或显式更小上限、完整页与原始恢复合同。以下标签按原段落定位,不把完整 C1 后续验收强加给这个有真实消费者的修复。

Criterion 当前结论 对应实现或剩余边界
small file reference implemented _capture_read_reference reused by native_context_capture_view and project_saved_context_capture
reader pages remain independently bounded implemented _capture_page adds original CONTEXT_CAPTURE_PAGE_GUIDANCE on first bounded full page
original Turn/capture/effect identities implemented Existing digest-bound read_context_capture and original decision_capture owner

实际验证 / Validation

本轮 root reviewer 在 exact head 执行 selection_replan_reentry、context_capture_read、context_capture_selection、progressive_native_context 四个模块,共79例通过(125.07秒)。我又独立核对测试、源代码与原日志,补跑 changed-file Ruff 和 git diff --check,均通过。作者319例、安装wheel及总传输字节统计没有冒充本轮执行。

root_7735_probe.py 用同一候选回归在不可变 a2c8c94 与 af1808 上跑真实 public should-run,保留90字符路径分量与4096字节预算。base File/SQLite 两例都在已 committed 后返回 quota_decision_transport_failed;head 两例均通过。生成的恢复命令经原 parser/reader实际读回:首个全文页等于原完整 guidance 且预算内;选读 heartbeat receipt 与原 capture精确相等,随后准入计数仍1、spend仍0。该修复的基线失败是预期修复对象,没有被规范化掉。

对主干的风险 / Risks

核心风险是为了变小而丢读页/截断恢复义务,或让恢复者重新准入。这里复用原完整常量,真实读回也核对原 receipt 和无重复 effects;历史无界路径与 selected scope 分支明确保留。没有发现阻断性代码缺陷。修复不是对任意超长路径/极小预算都成功的保证:原 metadata 无法容纳时仍须明确拒绝并保留原 capture。

语义与 CI 对齐

本次不宣称所有共享 reader 行为都只在 native on 时变化:直接的首个有界全文页也有意增加完整指导;它不激活 native capability或执行权限。原 native activation gate、无界wire及原始数据未改变,文档明确了这项呈现变化。

当前 exact-head dashboard-browser(2) 在 goal-workspace-m2.mjs:206 的既有1秒 loaded-lens预算失败,日志样本含1376.597014ms,aggregate checks红。已定位失败,但没有同命令不可变base/head的同签名归因。按照当前 verdict_policy,这是阻止批准的 required 验证缺口;不把它凭源码路径不同归为历史噪声。最小解除动作是补对应基线/候选归因或独立环境证据与当前资格;只有确认代码回归后才要求修代码,不能放宽预算掩盖失败。

我的整体评价 / Verdict

REQUEST_CHANGES:局部修复有直接证据,未发现阻断性的代码缺陷;当前 browser 失败缺少要求的归因,暂不具备批准资格。 审查绑定 exact head af1808a。

原 Turn、捕获和 effect 身份不变,恢复读取不再以重新准入补偿传输失败。这条真实恢复路径更可用,有利于长流程接续;完整 C1、真实模型保留与长期成果仍未被这一传输证据证明。

原 4 KB 上限内能获得可执行读回路径,读者在真正分页时仍收到完整说明,不需手工猜测恢复命令或额外询问 owner。首个有界页现在明确包含 guidance,这是有意的可观察变化。 变更为 CLI 原生引用、分页 JSON 和中英文说明;没有浏览器布局或视觉交互。

统一已有 reference helper 是有界且有真实消费者的复用;不需要新 capture 服务或另一个语义摘要。完整指引移动到第一页而未另写缩短版本,保留真正需要的恢复义务。

本轮证据是源码环境、合成原生会话与真实 File/SQLite CLI/reader;未独立复跑作者 wheel、319-case或模型实验声明。未证明真实 App 保留/采用,也未解决当前 browser 失败的要求归因,故不具备批准资格。

English verdict: REQUEST_CHANGES — exact head af1808a; The bounded-reference fix is supported by actual base/head admission and original-reader evidence, with no blocking code defect found. Approval is withheld because the current browser failure lacks required attribution.

…reference-budget-20261030

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

Copy link
Copy Markdown
Collaborator

The failing dashboard-browser (2) job has the same existing goal-workspace-m2 1s timing-gate signature as current main. Exact base 04c5799b8 reproduced the assertion with a 1648.5ms switch; exact head 5597a13b9 reproduced it with 1433.7ms and 1244.6ms switches. The PR does not change Dashboard/scenario sources.

This is base/head parity evidence for an environment-sensitive performance gate, not a context-reference correctness regression. No browser threshold is relaxed in this PR; the failed job will be rerun after the pending long shards make the workflow terminal.

@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; OpenAI; self_reported.

动机 / Motivation

受影响的是在较小工具输出预算下接收原生上下文引用的Agent。准入已经完成后,重复的分页说明与较长路径可能撑破4KB返回;本项压缩重复元数据并把完整分页说明交给第一页。已验证File/SQLite真实准入返回仍在原4096字节预算内,恢复读取同一receipt且没有重复准入或扣额。本项不证明模型保留了完整上下文,不修改准入规则,也不提高输出预算。

这次判断绑定PR #7735的完整head 5597a13。评价对象是已经存在的实际调用任务与局部可观察结果;重复调用带来的成本或错误恢复路线是本项动机,不能把较小响应或更少导入直接等同于长期任务质量。

改动思路 / Approach

提取既有_capture_read_reference,保存path、digest、budgeted command;导航留在外层,完整分页义务随首个有界全文页交付。本 PR 的合理边界是已准入结果的可读传输和同一capture恢复;原捕获、身份、账务和历史无界wire均保留。

沿入口跟踪到原所有者、返回值和失败恢复后,这个实现仍在现有边界上处理问题。无改动会保留原成本或错误指引;另起一套业务规则、持久化状态或通用缓存会增加同步义务,此处没有这类必要性。新增说明和投影应服务原调用方完成任务,不能改变原来的准入、权限、结算或来源完整性要求。

具体改动 / Changes

关键代码讲解

  • _capture_read_reference:统一当前引用和recovery引用的路径、摘要与预算,移除嵌套重复说明。 输入与拒绝分支沿用现有调用路径;这一处的返回内容或依赖时机改变,不把局部投影提升为新的业务判定。
  • _capture_page:仅在首个有界全文页补充完整分页指导,选读保持原范围说明,无界历史响应不变。 输入与拒绝分支沿用现有调用路径;这一处的返回内容或依赖时机改变,不把局部投影提升为新的业务判定。
  • native_context_capture_view:仍先保存后返回小引用,在无法容纳元数据时保留已决定receipt而不重新准入。 输入与拒绝分支沿用现有调用路径;这一处的返回内容或依赖时机改变,不把局部投影提升为新的业务判定。

有意将完整分页说明从重复嵌套引用移到首个有界全文页;原义务文本复用,历史无界输出保持。不能把引用缩短等同模型效果或完整成本改善。正向场景是:真实should-run后读原capture和heartbeat receipt,返回字节不超4KB且只记录一次准入。负向场景是:分页或选择读取只证明当前范围;错误摘要被拒绝,恢复命令不能产生第二次准入。这些是依据实际源码与已有调用测试核对的行为边界;失败和恢复继续由原owner负责,没有以返回字段存在代替真实状态读取。

规范基准: docs/reference/required-work-context.md ;不可变修订 04c5799。以下标签定位原文段落/原句,不是新造的协议编号。

  • Selected capture details:有意将完整分页说明从重复嵌套引用移到首个有界全文页;原义务文本复用,历史无界输出保持。不能把引用缩短等同模型效果或完整成本改善。 对应上述原所有者和当前聚焦回归。

实际验证 / Validation

selection/replan reentry全部19项测试 PASS,含File/SQLite真实入口;Python编译与 diff hygiene PASS。

执行命令:python -m pytest -q tests/control_plane/test_selection_replan_reentry.py。本轮统计只包含上述实际执行;作者PR内微基准、旧head完整回归和旧review的历史量测都已阅读,但不冒称本轮重新执行的结果。

对主干的风险 / Risks

有意将完整分页说明从重复嵌套引用移到首个有界全文页;原义务文本复用,历史无界输出保持。不能把引用缩短等同模型效果或完整成本改善。最需要防止的情况是:分页或选择读取只证明当前范围;错误摘要被拒绝,恢复命令不能产生第二次准入。已核对相关调用方和已有review,未重复发布旧head意见;本轮对新增head的源代码与局部回归单独作判断。原持久化状态和业务所有者保持,仍然不能由小范围通过推断整仓或所有部署入口已经合格。

当前精确head失败证据:test-shard (1)、test-shard (2)、test-shard (6)、dashboard-browser (2)。作者已补固定base/head同签名浏览器预算失败;本轮当前test-shard错误/取消日志仍不可读,验证资格保留这个具体缺口。 未取得的分片日志明确留作未知;同名错误或改动文件不相交都不足以建立pre_existing归因。

最小补齐是针对当前实际失败取得日志,并提供不可变base/head同命令同条件归因,或能独立覆盖该失败不变量的当前真实入口证据。已完成的聚焦回归不应无条件重做,也不要求无关功能重写;如果归因确认是回归,再修相应最小代码路径。未完成的检查不是单凭pending就要求改代码的理由。

我的整体评价 / Verdict

REQUEST_CHANGES:当前阻断是具体的验证证据缺口。聚焦审查尚未发现可复现的阻断性生产代码缺陷,不能把未归因红灯写成代码finding。 审查仅适用于exact head 5597a13。

本 PR 的合理边界是已准入结果的可读传输和同一capture恢复;原捕获、身份、账务和历史无界wire均保留。 已验证File/SQLite真实准入返回仍在原4096字节预算内,恢复读取同一receipt且没有重复准入或扣额。 已检查 loopx/cli_commands/quota_capture.py:_capture_read_reference;loopx/cli_commands/quota_capture.py:_capture_page;loopx/cli_commands/quota_capture.py:native_context_capture_view;变更是CLI/内部读取或文本协议,没有修改浏览器页面布局,视觉截图不适用。

作者已补固定base/head同签名浏览器预算失败;本轮当前test-shard错误/取消日志仍不可读,验证资格保留这个具体缺口。 本项不证明模型保留了完整上下文,不修改准入规则,也不提高输出预算。所有本轮探针使用合成fixture,没有运行真实模型任务或发起业务作业;本review陈述审查与验证事实,不声称已经发布部署或完成合并。

English verdict: REQUEST_CHANGES — exact head 5597a13. Focused code review and the listed local regressions found no confirmed blocking implementation defect. Approval is held for the named current validation gaps; resolve their source-bound evidence rather than changing unrelated code.

@huangruiteng
huangruiteng merged commit 4514c15 into main Nov 1, 2026
33 of 43 checks passed
@huangruiteng
huangruiteng deleted the codex/native-context-reference-budget-20261030 branch November 1, 2026 02:08
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