Repository navigation
fix(context): preserve complete current preferences in initial reads - #7935
Conversation
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: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
通过原生 quota/Turn capture 的 first_read_command 获取当前偏好的 Agent 与宿主消费者。 hook 已满足 pre-work required_reads 后,初读仅选择 current.revision 和不存在的 singular instruction;真实 plural instructions、items、纠偏/退役与 advisory 边界被静默省略。 既有 TypeScript initial selector 选择 owner 的整个 current,完整保留当前指令、偏好、退役/空值与未来字段;不复制父子选择,不重写原 capture,也不把当前视图当作外部写入前的 fresh exact-scope read。 不宣称模型已理解偏好、live Codex/CodeMode/安装版采用、跨 PR 的完整 C1 资格、token 节约或可比完整成本净收益;偏好始终不授予权限。 原生 reader/模型实际采用与完整成本仍由既有 C1/#7430 和 context/runtime owner 验收;作者随后报告固定集成 ON/OFF checkpoint 均通过,本轮未重跑,也不签发其组合或 parent 研究资格。
改动思路 / Approach
现有偏好 owner 已产出完整 current,丢失发生在 initial selector 的子字段白名单。直接复用 TypeScript include 选择完整 owner 值,比复制所有已知字段或新增一层配置更小且更稳妥;原 writer、digest-bound reader 和 lifecycle 不变。 Select the owner whole value with existing include rather than inventing a field whitelist, duplicate state or authority owner. The source current schema can evolve without silently dropping owner obligations; existing native paging/digest owner remains authoritative. 本次闭合的是既有 capture 初读投影,原偏好 writer、生命周期、context digest、admission 与 settlement 继续归原 owner;没有新配置、reader 协议或状态副本。 没有新状态、permission、scheduler 或第二个执行 owner;保持同一用户请求到可读结果的已有入口,不增加确认轮次。
具体改动 / Changes
规范依据是先读的不可变 base f941b5939345c6d1c3d770a982182624e7ef393f 的 Required work context:Initial selection must preserve current source obligations and literal empty/unavailable/future values; capture identity, selected-view digest and fresh action-scoped preference reads remain distinct. 当前是一个 independently usable 的 justified_increment;当前改过的文档不能单独给自身作验收证明,原 parent/真实宿主与完整成本仍 deferred。
关键代码讲解
initialContextReadPointers将 revision/singular instruction 两个子选择改为整个current;own-key 检查保留 null/空对象,未来字段和含/、~的值不被裁剪,也不再重复父子选择。native_context_capture_view仍从原 capture 发出既有 first-read/recovery 命令,不重写原始 payload 或决定身份。read_context_capture保留原 capture SHA、selection digest 和 UTF-8 分页顺序;旧 profile 不能拿新选择结果续读。
独立完整6个 Python 模块 142 PASS、完整4个 TS 模块 54 PASS,control-plane typecheck PASS。实际 File/SQLite 经 remember→correct→retire 后,直接执行 emitted initial read,逐值对照当前 owner;retired statement 保持 null,旧声明不复活。
另用相同 436563字节 capture 调用两版真实 native入口:base 只读8175字节/仅 revision,head 完整读91042字节,2页按返回 cursor 覆盖到 EOF;完整 current 与原值相同,capture SHA 和字节不变。null、空对象和含未来转义键的3个场景旧版全失败、当前全通过。所有非偏好选择相等;hook不存在时实际 TS owner 使用真实 caller 字段得到相同指针;旧 profile 的续读仍以 digest changed 拒绝,不执行 guard/admission/spend,新初读可在同一原 capture 上完成。
对主干的风险 / Risks
完整指令增加了上下文成本。刻意较大的30项夹具中 selected8175→91042字节、reader stdout9087→93527字节、1→2次调用,原capture436563字节相同;这些是 bytes/calls,不是 tokens、压缩收益或全成本净益。初读仍只是当时 snapshot:外部动作前须 fresh exact-scope preference read,空/unknown 不等于免除义务,偏好不授予权限。没有实际模型/安装版采用资格;作者额外集成臂与原 C1/#7430 验收不由本轮通过。
Independent standard premerge:5 direct checks passed;17 selected,16 passed and1 inherited maintainability advisory failure; no blocking failure, skip or manual hold. Raw maintainability check remains failed. 独立同命令在 immutable base 与本 head 运行 raw ratchet,完整 stdout 和空 stderr 逐字节相同,仍是 render_canonical_todo_sections 未登记的 oversized decision function,magnitude regressions 为0;该失败 owner 的完整源文件 blob 也相同。不是按相同总数归因,原始 FAIL 没有改记通过,作者 CQR FAIL/invalid_receipt 没有被豁免。受改动 invariant 则由上述完整模块与实际入口正反例独立覆盖。DCO/diff/public scan 和需要的双语/语义检查已核验。CI 未查询、未轮询或等待,未知 CI 本身不是缺失评审证据;review、CQR、实际 merge readiness 与 merge 权限分别处理。
我的整体评价 / Verdict
APPROVE 精确 head b7c7dae8c0385f41b5dffd23a903489e19cc6203,未发现当前阻塞性缺陷。本次闭合的是既有 capture 初读投影,原偏好 writer、生命周期、context digest、admission 与 settlement 继续归原 owner;没有新配置、reader 协议或状态副本。 现有 first_read_command 一次入口即可分段读到完整当前偏好,不要求人工复制已知指令或增加确认;原 hook-off 行为和明确 unknown/empty 含义保留。 复用既有 owner 的同域简化已落在当前差异中;不引入为了小修复而新增的框架。已检查完整5路径和现有调用入口:仅内部运行时/初读投影、契约与测试变化,没有渲染页、布局或设置编辑器变更。 没有视觉改动需截图;未宣称已安装 App、真实宿主或设备上的采用。 不宣称模型已理解偏好、live Codex/CodeMode/安装版采用、跨 PR 的完整 C1 资格、token 节约或可比完整成本净收益;偏好始终不授予权限。 原生 reader/模型实际采用与完整成本仍由既有 C1/#7430 和 context/runtime owner 验收;作者随后报告固定集成 ON/OFF checkpoint 均通过,本轮未重跑,也不签发其组合或 parent 研究资格。
English verdict: APPROVE b7c7dae8c0385f41b5dffd23a903489e19cc6203; the reproduced defect is fixed on the exact head, unrelated raw ratchet failure is retained, real-host adoption and net benefit remain unverified.
Goal And Delivered Outcome
已启用偏好 hook 时,
required_reads已被履行,但推荐的first_read_command只选择current.revision和不存在的单数current.instruction。实际 owner 返回复数instructions、items、authority等,导致当前纠偏、退役记录和 advisory 边界没有进入首读。复用现有 TypeScript initial selector,直接选择 owner 的完整
current视图;不再手工维护子字段白名单,也不重复投影父子值。空视图、不可用的 null 和未知字段均原样保留。原 capture、来源校验、后续动作前精确作用域新读及权限边界不变。docs/reference/required-work-context.md在f941b5939345c6d1c3d770a982182624e7ef393f的原生首读契约及现有偏好 owner。main。本修复可独立验收和回滚,完整 C1 仍由原提案继续。Author Declaration
Written by: model_agent — OpenAI GPT-6 / Codex。
initialContextReadPointerscurrent整体选读Self-check: 完整阅读五文件 diff;复用既有 owner 和 reader,无新 schema、状态、配置或权限门。同域简化已由两条易失子字段选择收敛为一个完整 owned view;无须额外框架或改写其他 caller。
Scope And Continuation
这个首读遗漏在本范围内已修复。跨 Host 默认、两层配置、完整 C1 writer/历史 reader 退出、原五项输出预算及同预算实际决策/成果/完整成本仍不由本 PR 认证;沿 #7430 继续。
Validation
b7c7dae8c0385f41b5dffd23a903489e19cc6203。reader/native 测量与 Python 测试在提交前对相同产品和测试 blob 执行;提交后静态和 premerge 检查另列。test_context_first_read.py、test_context_read_reference.py、test_agent_preferences.py完整三模块 73 过;File/SQLite 隔离状态覆盖活跃、纠偏、退役及动作前新读。test_context_capture_read.py、test_context_capture_selection.py、test_context_capture_registry_independence.py完整三模块 69 过。progressive_context、context_delivery、agent_preferences、context_selection四模块 54 过。8d7fdada1a772fc9b894f6000d8de1109efb6548e069f1c5ab9bccef8f79dccd,receiptcqr_8d7fdada1a772fc9b894valid;0 blocker/0 warning/1 advisory,safe-fix allowed、未应用质量修复 pass。同一合成 capture 的完整正文 F=50,613B;修复前所选正文 17,759B,修复后 19,407B,补齐必要信息增加 1,648B。三页 stdout 合计 21,192→22,892B(+1,700B),规范 argv JSON 合计仍为 2,536B,调用数仍为三次。当前
1−V/F为 61.6561%,只适用于该合成 capture;前后语义不同,不能称本修复带来压缩收益,也不能推导模型采用、token/费用、科学收益或整体净收益。Coverage gaps: 无外部模型、现场安装、自然模型决策/retention、科学实验或完整成本资格。没有改 PostgreSQL authority store;本次不运行其集成套件。远端 CI 未查询或手动触发;没有合并、安装或默认提升。
Frontend / Visual Evidence
UI impact: none。修复既有原生读取路径,不新增界面或独立能力。截图和 viewport review 不适用。
Type of Change / LoopX Area
Bug fix;control plane、host integration、reference docs、durable regression tests。
Shared-authority RFC Fixture Impact
N/A:不变更 provider routing、存储、写入或共享权威协议。
Boundary Checklist