Skip to content

fix(context): prioritize current goal and action on full and delta reads - #7985

Merged
huangruiteng merged 2 commits into
mainfrom
codex/current-goal-action-first-read-20261103
Nov 3, 2026
Merged

huangruiteng merged 2 commits into
mainfrom
codex/current-goal-action-first-read-20261103

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

首读中,完整 scoped preferences 可能把当前 Goal 正文挤到数页之后;warm delta 又没有直达当前捕获的 first_read_command,动作变化时调用方容易先猜旧字段再遭到拒绝。此修复让现有 CLI 首读先交付当前动作、正文及其来源状态,并保留完整偏好、验收、停止条件与恢复路径。

TypeScript 的既有 initialContextReadPointers 负责排序:依据已存在的 content.text 结构稳定提前正文来源,不分析关键词或另建决策 owner。现有 RFC 6901 selector 在完整数组合并会逆转读取优先级时保留分项,祖先也不能再合并覆盖该顺序。Python 仅为 full/delta 包装同一当前捕获的首读入口;delta 的原 command、精确基线与完整恢复仍可用。

同一不可变捕获、同一真实 context-read CLI 的 base/head 对照(12,000-byte content pages):Goal 正文起点 45,717 → 9,737 bytes,从第 4 页提前至第 1 页。原 1,539 项叶事实全部保留,新增 4 项既有动作字段;选读正文 150,251 → 150,761 bytes,仍为 13 页。这里只证明导航位置改善,不据此声称减少总 token、模型已采用或 benchmark 收益。公开测试使用合成数据。

验证:

  • 当前 head 15bee37524c801e97cc17568852fd35b00f92d21 的 6 个 TypeScript context/Stride 模块 108/108 通过。自然数组顺序仍合并完整父节点;倒序优先级在完整祖先下仍保留原事实及显式 reader。新反例在冻结 main ac74f90c4778381b6fcedd5d76059522591c3f42 复现失败。生产及文档字节与已审 acb9ca11 相同,新增提交仅修正旧的倒序数组合并断言并补充回归;原 106/107 失败已保留,不记作通过。当前 head 独立 review 另行复核。
  • 186 项 reader、initial-read、pinned/legacy reference 与 delivery CLI 测试通过。新增用例先在旧行为复现失败,覆盖大偏好、完整数组合并、normal → replan 的 warm delta、旧基线缺失、opaque/显式引用、校验拒绝及无新准入/记账。
  • TypeScript typecheck、Ruff、bilingual RFC diff check、quick premerge 通过;完整 CI 与独立 review 另行确认。首次 premerge 因新 worktree 缺少 npm 开发依赖失败,按现有要求安装依赖后重跑通过,未调整检查阈值。
  • quick premerge 保留 1 项 advisory_inherited_failure:既有 render_canonical_todo_sections oversized decision function;无 magnitude regression,且该文件不在此 diff。此处未将该历史失败记为单项通过。
  • 开关关闭、未知 schema、小预算回退、原始捕获、显式选择诊断和两种历史固定引用路径的既有测试均保留。

复现主要回归:uv run --extra test pytest -q tests/control_plane/test_context_first_read.py tests/control_plane/test_context_read_reference.py tests/control_plane/test_context_capture_read.py tests/control_plane/test_context_delivery_cli.py。

边界:变更的是既有 Agent CLI 导航,无新设置、协议字段、权限或存储 owner,也不安装候选或改变运行中的实验。相邻的有限重构应用在现有数组合并 owner,避免在调用方重复修补顺序。延续 #7965 的固定选读兼容路径;旧 raw initial cursor 仍严格拒绝摘要变化并保留原完整捕获恢复。首读不等于完成全部必读内容或取得执行权限。

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: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; reasoning_effort=max; declaration_source=runtime_reported

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

动机 / Motivation

开始或恢复长任务、需要先看清当前 Goal、停止条件和本次动作的 Agent。 大段 scoped preferences 可排在完整 Goal 前,warm delta 也没有直接的首读入口;现在正文及其来源先读,full/delta 都从本次完整捕获读取当前动作。 这能让读者先判断本轮要做什么、何时停止,再按需展开证据。独立复验确认改善的是相同事实的读取顺序,没有减少必须遵守的要求。模型是否真正采纳、长程效果及完整输入成本尚未验证;本次不承诺所有必要来源在一页内。

独立六种来源排列中,基线三种把偏好放在 Goal 前且六种都缺当前动作;当前六种均先提供完整 Goal 和当前动作,来源失败、修订及完整偏好都保留。 未证明模型保留、token 节省或长期收益,也未新建准入、扣额或执行权限。

改动思路 / Approach

现有 TypeScript owner 负责优先级与 JSON pointer 合并,Python 仅适配摘要绑定文件入口;没有第二份正文、排序决策或准入 owner。 content.text 是现有结构字段,排序不靠 Goal 名称或正文关键词。先选当前动作,再稳定地优先正文来源及其 provenance;其余来源仍保留原组内顺序。数组若整体合并会恢复原始顺序,就保留元素,并把不能合并的边界传播到祖先。Python 的 full/delta 引用都指向当前完整捕获,wire delta 的 command 继续指向补丁。

当前可独立交付的是首读导航及兼容恢复,不是上下文成本或模型采用的资格化。 这是沿现有 owner 的完整小切片:无新缓存、schema、CLI 选项或第二份决策。全量更小或引用预算过小时,仍按原规则回退,不为了首读入口移除恢复契约。

具体改动 / Changes

复核完整 acb9ca11aa34efbe10289f86f8b4cd4b2b446963,实际 merge base 为 cbc1eeabd740ac557c3a4fb7bf67050ad063b629;全差分5文件 +125/-17。规范依据是 docs/reference/required-work-context.md,spec_revision=cbc1eeabd740ac557c3a4fb7bf67050ad063b629。Selected capture details / 按需读取捕获详情 与 Native context delivery 两项均 implemented:完整来源、严格摘要、固定历史引用、只读恢复及原结算义务保持;full/delta 当前首读是本次有意扩展,不表示全部必要材料已读。

关键代码讲解

  • initialContextReadPointers 加入已有当前动作四字段,按结构化正文类型分组;偏好完整 current 与来源失败/恢复信息仍可见。
  • coalescedInitialPointers 检查数组合并后的元素位置,阻止父级把优先级重新覆盖;显式 RFC 6901 选择和已固定引用的 canonical validation 仍由原逻辑处理。
  • _native_context_reference 为 warm delta 同样提供当前捕获 first_read_command;缺少旧 baseline 不影响当前读取,当前文件损坏仍拒绝。

PASS:当前四个 reader/reference/capture/delivery CLI 模块186项、不可变基线183项;TypeScript typecheck;标准 source premerge 的 direct、10 catalog、8 risk 与公开边界检查。独立六来源排列在相同8KiB预算下,基线3/6先读偏好、0/6带当前动作,当前6/6都先读 Goal且带动作;完整 Goal、偏好、修订、未知来源错误与恢复指引保留。这个fixture两端仍各8页,当前选读字节略增,不能据此声称 token 或总成本节省。

对主干的风险 / Risks

主要反例是整个数组均被选中后发生父节点合并,使偏好重新排到正文之前;当前反例与六排列均通过。warm normal→replan 在移走旧基线后,经显式/opaque入口仍读取本次动作;当前捕获篡改失败关闭。File/SQLite 的真实 native CLI fixture 保留原一次 admission、零 spend,原状态和捕获字节不变。历史 pinned、recipe-only、旧 selection digest 拒绝、未知 schema、小预算与关闭路径均在本次通过的模块内。

语义与 CI 对齐

复用现有词汇和 owner;模型指引明确增加“从本次捕获读取、不先读取旧基线”,没有删 actor、来源、完整附件先读、停止条件或结算约束。未验证模型采纳。premerge 中已有 maintainability ratchet advisory 保留为 advisory,未将它或其单项失败改写成独立通过;未见触及本次文件的新增直接门失败。CI 未查询、未轮询、未等待,按 wait_for_ci=false 记为 UNVERIFIED、非必需证据。

独立重跑同一 maintainability ratchet,两端均 FAIL:render_canonical_todo_sections 的既有 oversized finding、完整输出及源 blob 相同,magnitude_regressions=0;没有新增本次模块债务。

我的整体评价 / Verdict

当前完整 head 无阻塞发现,结论 APPROVE。long_horizon=preserved:必要要求与权限保持,长期成本/效果未验证;user_experience=improved:当前正文、来源和动作更早可见。Existing CLI/Agent capture navigation changes; no new visual product surface or settings editor is introduced. 不认证模型理解、完整信息在一页内或其他产品 UI。 未证明模型保留、token 节省或长期收益,也未新建准入、扣额或执行权限。 已采用 repository-experience 的首个有用旅程审视建议,但没有将建议投递当成采用或 utility。后续 approval closeout、合并就绪和合并权限分别判定,本 review 不授予安装或合并权。

English verdict: APPROVE for this exact head; current-source ordering and full/delta recovery are independently covered. CI was not consulted; model adoption and total-cost benefit remain unverified.

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: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; reasoning_effort=max; declaration_source=runtime_reported

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

精确 reviewed head:15bee37524c801e97cc17568852fd35b00f92d21;比较基线:cbc1eeabd740ac557c3a4fb7bf67050ad063b629。当前完整范围已按 capability-owned 19项证据重新判断。

动机 / Motivation

开始或恢复长任务、需要先看清当前 Goal、停止条件和本次动作的 Agent。 大段 scoped preferences 可排在完整 Goal 前,warm delta 也没有直接的首读入口;现在正文及其来源先读,full/delta 都从本次完整捕获读取当前动作。 独立六种来源排列中,基线三种把偏好放在 Goal 前且六种都缺当前动作;当前六种均先提供完整 Goal 和当前动作,来源失败、修订及完整偏好都保留。 未证明模型保留、token 节省或长期收益,也未新建准入、扣额或执行权限。 生产模型采用、持续完整成本及已安装交付仍未资格化;旧106/107的TS fixture失败保留,本次独立当前16模块263通过/1跳过,不把历史失败改记为通过。

改动思路 / Approach

当前可独立交付的是首读导航及兼容恢复,不是上下文成本或模型采用的资格化。

现有 TypeScript owner 负责优先级与 JSON pointer 合并,Python 仅适配摘要绑定文件入口;没有第二份正文、排序决策或准入 owner。 正向链路为 native_context_capture_view → initialContextReadPointers → capturedContextSelection/coalescedInitialPointers → digest-bound reader → current source values; warm delta retains wire command and current full recovery.。原捕获和摘要仍是读取依据,argv只是选择执行这条已有命令的实现;有结果输出不意味着新准入、来源保留或执行权限。当前186 Python、263 TypeScript/1跳过及typecheck通过;不可变基线的逆序祖先反例失败,当前保序。 这是一项现有旅程的完整、有界修复,长期模型采用与完整成本属于未验证边界。

具体改动 / Changes

依据不可变规范/owner docs/reference/required-work-context.md@cbc1eeabd740ac557c3a4fb7bf67050ad063b629,逐项映射:Selected capture details / 按需读取捕获详情:implemented,同一摘要绑定捕获上的完整选读、失败关闭、固定历史引用和不重准入。;Native context delivery:implemented,首读提供当前控制、完整正文与来源,完整偏好和结算义务保持;warm delta 保留原补丁入口。。检查了所有变更路径、实际调用者和现有owner,未增加重复决策、配置或存储。普通显式选择、固定引用、原捕获恢复和关闭路径仍沿用既有约束;原始字节、必要来源及停止条件不能被导航成功替代。组合检查仅使用独立未提交源码树,重叠文档同时保留两项含义,不是安装、主干合并或运行中实验更新。

关键代码讲解

对主干的风险 / Risks

旧数组和祖先整体合并会把显式优先级恢复为原数组顺序;当前保留分项。warm delta 读本次捕获,旧基线缺失、损坏当前捕获、固定旧引用及off/unknown路径的既有覆盖保留。 新提交只有TS测试文件变化,生产与文档逐字节等于已审acb9ca11;旧106/107失败保留。本次重新评估完整19项,并执行当前186 Python、263 TS/1跳过、typecheck及标准premerge。独立新反例在不可变基线把两项合成/complete/facts而失败,当前保留逆序地址及原事实。旧完整代码与六排列证据仅按生产字节相同复用,没有继承旧head的批准。

当前三项组合候选的实际路由、首读、command及staged检查为 94 PASS / 1 SKIP;16个相关TS模块为 263 PASS / 1 SKIP。该组合树不代表任一独立PR的资格,也不证明已安装产品。单项标准premerge通过,保留一项原始 FAIL 的既有maintainability advisory:完整base/head输出及formatter blob相同,magnitude_regressions=0;未把它改记为单项通过。

语义与 CI 对齐

复用现有程序选择、捕获、JSON pointer和状态owner,未新增共享词表。行为变化明确披露并通过真实调用反例校验;文档是读取/恢复义务,不能视为额外授权。未查询、轮询或等待CI,远端状态为 UNVERIFIED;CI未知不构成独立review阻塞,真实回归、必要覆盖、readiness与合并授权仍分别判断。

我的整体评价 / Verdict

当前head的可观察读取/恢复得到改善,原要求、状态及权限语义保持;long_horizon取preserved,user_experience取improved。生产模型采用、持续完整成本及已安装交付仍未资格化;旧106/107的TS fixture失败保留,本次独立当前16模块263通过/1跳过,不把历史失败改记为通过。 有界重构结论为applied:复用既有owner及合并/argv逻辑,没有引入更大框架或无关迁移。当前没有已验证的阻塞发现;批准结论仅覆盖该head及上述证据,后续单独读取approval closeout与merge readiness,不执行合并或安装。

English verdict: APPROVE this exact head; CI was not consulted. Merge readiness and authority remain separate.

@huangruiteng
huangruiteng merged commit 1dc98eb into main Nov 3, 2026
14 of 35 checks passed
@huangruiteng
huangruiteng deleted the codex/current-goal-action-first-read-20261103 branch November 3, 2026 12:20
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