Repository navigation
fix(context): reuse unchanged criteria across progressive first reads - #8186
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…ntext-outcome-field-reuse-20261106 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | reasoning_effort=max | runtime_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
精确 head:8186@df35b9d166164b14b335ab026d2beacce1292642;审阅完整 base d0985c35aa3d05fd5de964e719aaf69f45d72535..head,没有沿用其他 head 的结论。
动机 / Motivation
持续执行原生任务的 Agent 在验收条件追加或评审修订后,被迫重读大量未变要求。 旧首读只复用整块 outcome;追加一个条件便重发所有大正文。当前保留新条件、修订、评审与未知控制字段,只引用经过完整观察且仍精确相同的要求。 真实原生首读在修订后减少重复要求,完整当前值仍可显式恢复,部分读取、compaction、off 与收益不足时保留完整交付。 本切片不验收 C1 全部迁移、模型自然采用、token/cache、账单或整体净收益,也不执行安装、发布、批准他人身份或合并。
改动思路 / Approach
精确字段复用和覆盖推导属于现有 TS owner,Python 只验证文件及事件来源;复用不生成执行义务或独立接受。 本 PR 交付可运行 reader 的完整要求与失败恢复;模型收益、整体 C1 和安装采用不在本切片验收。 完全相同的大父节点优先复用;只有容器变化时才向下考察 requirements、criterion 和 description。新状态和未知控制字段仍逐字交付。拆分前计算地址、索引和恢复余量;收益不足保持全文,不靠削减要求达标。已有 lifecycle reducer 继续只在连续完整页面到齐后记录覆盖。
具体改动 / Changes
本 PR 共 6 个文件,+218/−27;生产代码、测试 fixture 和双语说明均已审阅。Python 仅承担 IO/原值 transport,策略继续在 TypeScript owner 内;没有新增公共配置、权限或状态迁移。
关键代码讲解
-
observedFirstRead:优先复用精确未变的整块;父节点变化时只向已登记子节点递归,新条件、评审与未知控制仍当前送达,计算地址和恢复余量后再决定拆分。 现有调用链:prepareProgressiveContextDelivery → prepare_codex_context。 -
contextReadSectionDigests:继承 hash 必须在当前 capture 重算匹配;已认证旧字段与完整当前选择才能合成为父级覆盖,未读值不会推断成已读。 现有调用链:evaluateTurnEnvelope(context_read_sections) → verified_context_selection。 -
verified_context_selection:先核验 journal 指定来源和实际选读字节,再把已匹配事件的 session 交给观察验证;它不生成 full-input baseline。 现有调用链:codex_context.py:_verified_context_pages → native lifecycle reducer。 -
observation_current:同时绑定 source path/digest、target、epoch、session 与继承字段 hash,既支持未继承 shell 环境的 hook,也保留普通 reader 的身份校验。 现有调用链:verified_context_selection and existing captured-reader validation。
验收依据是改动前已接受的 docs/reference/required-work-context.md,spec_revision:d0985c35aa3d05fd5de964e719aaf69f45d72535。原文没有逐项编号,以下采用原文行地址,不编造新验收:
- L689-L696:implemented;对应上述 owner,并以原文完整来源、完整观察与原身份恢复要求为独立判据,由冻结 fixture 的 base/head、公有 reader 和 wheel 核验。
- L704-L713:implemented;对应上述 owner,并以原文完整来源、完整观察与原身份恢复要求为独立判据,由冻结 fixture 的 base/head、公有 reader 和 wheel 核验。
- L737-L760:implemented;对应上述 owner,并以原文完整来源、完整观察与原身份恢复要求为独立判据,由冻结 fixture 的 base/head、公有 reader 和 wheel 核验。
对主干的风险 / Risks
最强反例是旧正文被引用,而当前新增控制没有实际送达,却提前取得父级 coverage。当前 owner 逐项重算 source identity,Python 先核验 capture 字节、target/session/epoch;伪造 hash、缺末页或缺前页都不能升级覆盖。hook 使用已匹配的事件 session,未把任意 shell 环境当身份。compaction、任务切换和显式 off 保持恢复路径;当前完整显式选读仍能拿到所有原值,不会生成 full-input baseline 或执行权限。
PASS:267 项 source 通过、58 项 TypeScript、15 项隔离 wheel;1814 个 Python/TS 源逐字匹配,250 个 LoopX 模块仅从 wheel 导入。完整 Ruff roots、mypy 17 文件、TS typecheck、双语和 diff 检查通过。相同冻结修订用例在 base 温态失败、四个控制通过,在 head 五项全过。扩展 source 中另有 3 个 transport 失败:在 d098 基线与本 head 单独执行同一命令都为 3 失败/4 通过,完整归一化输出摘要相同,相关 test、decision_capture.py、context_selection.ts 逐字未变;它们不是这次改动引入,但保持 FAIL。
standard premerge:6 项直接检查、5 项 catalog、8 项 risk-profile 和 1 项 public-boundary 均无机械失败,总 gate=quality_invalid_receipt;不解除三个原有 required 失败。
语义与 CI 对齐
复用既有 source/reference/observed-section 词汇;diff advisory 未检测到其支持范围内的新闭集,动态语义仍由以上调用链和反例判断。没有放宽预算、删除断言、覆盖原始失败或查询/等待 GitHub CI。严格质量资格与代码结论分开。
我的整体评价 / Verdict
长程维度 preserved:当前要求、失效、原身份恢复和后续复用没有被缩短输入破坏;用户体验 improved:新增条件无需重送全部未变大正文。作者冻结工程样本的 BODY 降低伴随 RPC 字节和部分文件 IO 增加,单样本不证明模型、延迟、账单或净收益。没有确认本 head 引入的新阻塞缺陷;三个旧 transport required 失败使严格质量 receipt cqr_f354a9446c44c617725c 为 FAIL/invalid,代码 APPROVE 不解除该质量 hold。
视觉检查不适用:本 diff 没有改变 rendered frontend/Lark,既有 machine configuration editor 的 preview/apply/readback 和开关未变。未验证范围:installed desktop 采用、live model 保留/理解、完整 C1 和长期成本收益。当前切片是独立可回滚的 reader 修复;不要求以此 PR 交付整个父路线图。repository experience 的“从实际任务到恢复与读回”建议已用于上述边界判断,没有将技术覆盖或收据数量视为模型收益。
English verdict: APPROVE the exact head df35b9d; no introduced regression found; existing required transport failures and strict quality hold remain. No merge authorization.
当前作者 head
df35b9d166164b14b335ab026d2beacce1292642已集成 maind0985c35aa3d05fd5de964e719aaf69f45d72535。该次集成保留本 PR 的三个生产文件不变,首读真实入口 66 项通过;以下 910 组合的包与预合并记录保留原版本身份,不升级为当前组合的全面资格。下方成本严格归属冻结的 main62e234c93999/ 修复9df99f042b5f,不改标为后续组合收益。Native progressive 首读原来按整块 outcome 比较。追加一条条件、修订评审或切换支持材料投影,都会让未变要求跟着重读。现在由既有 TypeScript owner 分层复用精确未变的要求列表、大条目和大正文;新条件、修订号、已改状态及未知控制字段仍送达,完整当前值仍可从同 capture 恢复。
拆开容器前会计算地址、复用索引和恢复余量,节省不足时保持完整读取;小正文不增加派生摘要。完整当前返页可与已认证旧字段合并为下一次的 section coverage,部分或伪造读取不能升级覆盖,也不建立 full-input baseline。Native hook 使用已匹配的事件会话身份,不再假定继承 shell 的会话环境。没有新增准入、权限、模型调用、配置项或存储迁移,显式 off 和普通精确读取保留原契约。
同一合成三步任务、两组大验收,File/SQLite × 冷/温/恢复/追加条件 × base/head 各一次:16 场景、40 Turn,12 个完成任务与 4 个只执行首步的冷样本。逐页重建、当前/继承要求、独立产物、原身份、三回执、一次扣额及重放均核验;准备与重试单列,完成子进程只计一次。
File 同方向。冷态及这组恢复对照的 BODY 没有减少。SQLite 温态观测的 Python 普通文件读/写增加 11.94%/19.06%,追加条件增加 5.73%/3.31%;不含 Node、内核、provider 和 CLI 外 fixture IO。每格仅一次工程样本,插桩耗时不作为稳定延迟结论;模型保留、自然采用、科学效果、token/cache、账单和整体净收益均未资格。
最终 910 组合验证:首读/真实入口 102 项、typed reader/报告投影 66 项通过;配置内 mypy(17 个源文件)、typecheck、Ruff、双语和 diff 检查通过。重建隔离 wheel 的 1,814 个 Python/TS 源逐字匹配,15 项复用/失效/off/恢复通过;真实 Codex 静态回环 10 请求通过,覆盖修订、后继整块复用及未验证 resume 的完整恢复,无收费模型和源码导入污染。同一新增用例在原基线上失败。前一候选的完整 TS 6,140/77 skip 保留为历史;后续一次完整套件与 main 更新交叠,不用作最终源资格。小字段高 IO、native hook 环境失败和修复均保留为负结果。
此前 A890 head 的 standard premerge:6 项直接、14 项选中检查无机械失败;严格 change-quality receipt 缺失,总 gate 为
quality_receipt_missing,不能称可合并。独立评审、CQR、精确 head readiness 和维护者合并决定仍待完成。复用既有 selection、exact digest、native journal owner;Python 仅验证观察来源。没有新增平行规则引擎或兼容 wrapper。此切片也同步到 C1,整体 C1 的其余要求和质量缺口继续保留。