Repository navigation
fix(context): reuse immutable reader references across parent aliases - #7909
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)
动机
本次完整评审固定 head 82dc675,base 8d314af。受影响调用者:Already-authorized native-context caller recovering an immutable capture through a normal parent-directory alias.
具体场景:同一 capture 先用父目录别名发布 reader,再以物理父路径发布 warm baseline;主干错误拒绝,候选复用原 descriptor 并完成恢复。
可观察结果:原 descriptor 字节不变;cold、warm、compaction 后的实际 CLI 分页均读到完整当前正文;篡改摘要、叶文件或元数据仍拒绝。
范围之外:不新增准入、记账、权限、持久配置或 UI;不证明模型保留、净成本收益、跨宿主长程效果或合并资格。
依据 docs/reference/required-work-context.md,固定版本 8d314af,按 saved-context-cache(正常父路径别名与私有实体叶)、context-reader-integrity(原始摘要、选择和字节分页)、same-capture-recovery(压缩后恢复原 capture,不重新准入/记账)核对。评审先读了该父版本合同,没有用本 PR 新增说明反证自身正确。
改动思路
保留既有 Python 文件 IO owner:只统一父路径拼写,实体叶名称与完整 metadata 仍逐项比较;无需新增决策 owner、协议版本或配置。 本 PR 只修复 immutable reader 的父路径别名兼容并补原有读取链路验证,TS context projection 与准入/结算均不变。
既有链路是 native context projection → model_context_reference → write_context_read_reference → quota context-read。TS 继续拥有 full/delta 选择,Python 只处理文件 IO。路径/digest 依旧不授予新鲜性、模型保留或执行权限。
| 已有 reader 再发布 | 主干 | 本 PR |
|---|---|---|
| 同一实体叶,仅父路径拼写不同 | 错误抛出 reference changed | 复用原文件,字节不变 |
| SHA、叶名称、selection/navigation 或额外 metadata 不同 | 拒绝 | 仍拒绝 |
| leaf symlink 或 capture 内容损坏 | 拒绝读取 | 仍拒绝 |
表格来自固定 head 的源码和下述执行,不依赖 Mermaid 渲染。
具体改动
生产逻辑只增加 8 行,位于 write_context_read_reference 的 FileExistsError 分支:先按原规则读取私有 descriptor,再仅归一化父目录,保留实体叶名称,最后仍比较全部 metadata。它只修改比较用的内存对象,不覆盖已发布文件。model_context_reference 的 baseline/current/recovery 调用与 read_context_capture_file 的完整摘要、权限及叶 symlink 检查均保持。
其余 138 行是现有测试模块扩展、12 行引用合同说明和一行按需自修复诊断;没有新增模块、协议、CLI 参数或第二套状态 owner。无改动会保留可复现故障;覆盖 descriptor 或 resolve 整个叶路径会损失现有边界。保留局部修复比引入新抽象更合适。
对主干的风险
独立执行使用相同 head 测试源码和字节一致的辅助夹具,在各自固定源码环境运行:
- PASS:head 31 项通过;base 3 项失败、28 项通过。3 个失败准确落在两种 alias 发布顺序及真实 warm baseline 路径,均是原 literal path 比较拒绝。
- PASS:实际 cold full → warm delta → CLI 完整分页 → compaction → 原 current recovery → 新 full;删除 cold transport 文件后仍能恢复,descriptor 字节不变。CLI 显式关闭 context delivery,并验证未创建缺失的 registry/runtime。
- PASS:摘要变动、其他叶文件、hardlink、leaf symlink、selection/navigation/extra metadata 的反例继续拒绝;未减少原有断言或 fixture。
- PASS:6 项直接预检、maintainability、公开候选源边界和变更文件公开扫描。首次语义全树检查因缺少 TypeScript 开发依赖中断;在隔离工作树补齐依赖后,同一检查在 base/head 均通过。原失败记录保留。
- UNVERIFIED:CI 未查询、未轮询、未等待,原因未知;它不是本次批准的前提。Goal-aware premerge 另报 quality_receipt_missing,仍是独立合并门禁,本评审没有创建该凭据或授予合并权限。
最强风险是把“父路径等价”扩大为“任何同内容文件等价”;代码保留 exact leaf 和完整 metadata 比较,真实反例覆盖了这条边界。仅在已存在且拼写不同的 reader 碰撞路径多做父目录解析;没有性能节省声明。证据是本机 source-checkout 合成输入与真实文件/CLI,不是 installed App、模型保留或跨宿主长程收益资格。
我的整体评价
APPROVE。没有发现该 head 的阻断问题;修复交付了原有调用者可直接使用的恢复结果,未增加人工确认轮次,也没有扩展准入、记账或权限。保留既有 Python 文件 IO owner:只统一父路径拼写,实体叶名称与完整 metadata 仍逐项比较;无需新增决策 owner、协议版本或配置。 本 PR 只修复 immutable reader 的父路径别名兼容并补原有读取链路验证,TS context projection 与准入/结算均不变。
视觉评审不适用:已检查四个变更文件及既有 App-hook/CLI 入口,没有产品页面布局或首屏变化;未验证的视觉范围:无。未验证的 installed-host/model 效果另按上述非目标保留。
这是同一 GitHub 账号下的 author-owned PR,因此以 COMMENTED 发布批准结论,GitHub 不允许 formal self-approval;review、独立合并门禁和 merge authority 继续分开。
English verdict: APPROVE 82dc675. The paired base/head oracle reproduces and repairs parent-alias reference reuse; complete recovery and integrity negatives pass. CI was not consulted; merge qualification remains separate.
|
This pull request has merge conflicts with Choose the remote for the base repository, not an out-of-date fork. git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEADFor a same-repository clone whose Keep the DCO |
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
left a comment
There was a problem hiding this comment.
Reviewer: actor_kind=model_agent; model=gemini-4-argon-high; provider=Google; declaration_source=self_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
本次完整评审固定 head 21315bd,base 1d4f473。受影响调用者:Already-authorized native-context caller recovering an immutable capture through a normal parent-directory alias.
具体场景:同一 capture 先用父目录别名发布 reader,再以物理父路径发布 warm baseline;主干错误拒绝,候选复用原 descriptor 并完成恢复。
可观察结果:原 descriptor 字节不变;cold、warm、compaction 后的实际 CLI 分页均读到完整当前正文;篡改摘要、叶文件或元数据仍拒绝。
范围之外:不新增准入、记账、权限、持久配置或 UI;不证明模型保留、净成本收益、跨宿主长程效果或合并资格。
依据 docs/reference/required-work-context.md,固定版本 1d4f473,按 saved-context-cache(正常父路径别名与私有实体叶)、context-reader-integrity(原始摘要、选择和字节分页)、same-capture-recovery(压缩后恢复原 capture,不重新准入/记账)核对。评审先读了该父版本合同,没有用本 PR 新增说明反证自身正确。
改动思路 / Approach
保留既有 Python 文件 IO owner:只统一父路径拼写,实体叶名称与完整 metadata 仍逐项比较;无需新增决策 owner、协议版本或配置。 本 PR 只修复 immutable reader 的父路径别名兼容并补原有读取链路验证,TS context projection 与准入/结算均不变。
既有链路是 native context projection → model_context_reference → write_context_read_reference → quota context-read。TS 继续拥有 full/delta 选择,Python 只处理文件 IO。路径/digest 依旧不授予新鲜性、模型保留或执行权限。
| 已有 reader 再发布 | 主干 | 本 PR |
|---|---|---|
| 同一实体叶,仅父路径拼写不同 | 错误抛出 reference changed | 复用原文件,字节不变 |
| SHA、叶名称、selection/navigation 或额外 metadata 不同 | 拒绝 | 仍拒绝 |
| leaf symlink 或 capture 内容损坏 | 拒绝读取 | 仍拒绝 |
表格来自固定 head 的源码和下述执行,不依赖 Mermaid 渲染。
具体改动 / Changes
生产逻辑只增加 8 行,位于 write_context_read_reference 的 FileExistsError 分支:先按原规则读取私有 descriptor,再仅归一化父目录,保留实体叶名称,最后仍比较全部 metadata。它只修改比较用的内存对象,不覆盖已发布文件。model_context_reference 的 baseline/current/recovery 调用与 read_context_capture_file 的完整摘要、权限及叶 symlink 检查均保持。
其余 138 行是现有测试模块扩展、12 行引用合同说明和一行按需自修复诊断;没有新增模块、协议、CLI 参数或第二套状态 owner。无改动会保留可复现故障;覆盖 descriptor 或 resolve 整个叶路径会损失现有边界。保留局部修复比引入新抽象更合适。
对主干的风险 / Risks
独立执行使用相同 head 测试源码和字节一致的辅助夹具,在各自固定源码环境运行:
- PASS:head 31 项通过;base 3 项失败、28 项通过。3 个失败准确落在两种 alias 发布顺序及真实 warm baseline 路径,均是原 literal path 比较拒绝。
- PASS:实际 cold full → warm delta → CLI 完整分页 → compaction → 原 current recovery → 新 full;删除 cold transport 文件后仍能恢复,descriptor 字节不变。CLI 显式关闭 context delivery,并验证未创建缺失的 registry/runtime。
- PASS:摘要变动、其他叶文件、hardlink、leaf symlink、selection/navigation/extra metadata 的反例继续拒绝;未减少原有断言或 fixture。
- PASS:6 项直接预检、maintainability、公开候选源边界和变更文件公开扫描。首次语义全树检查因缺少 TypeScript 开发依赖中断;在隔离工作树补齐依赖后,同一检查在 base/head 均通过。原失败记录保留。
- UNVERIFIED:CI 未查询、未轮询、未等待,原因未知;它不是本次批准的前提。Goal-aware premerge 另报 quality_receipt_missing,仍是独立合并门禁,本评审没有创建该凭据或授予合并权限。
最强风险是把“父路径等价”扩大为“任何同内容文件等价”;代码保留 exact leaf 和完整 metadata 比较,真实反例覆盖了这条边界。仅在已存在且拼写不同的 reader 碰撞路径多做父目录解析;没有性能节省声明。证据是本机 source-checkout 合成输入与真实文件/CLI,不是 installed App、模型保留或跨宿主长程收益资格。
我的整体评价 / Verdict
APPROVE。没有发现该 head 的阻断问题;修复交付了原有调用者可直接使用的恢复结果,未增加人工确认轮次,也没有扩展准入、记账或权限。保留既有 Python 文件 IO owner:只统一父路径拼写,实体叶名称与完整 metadata 仍逐项比较;无需新增决策 owner、协议版本或配置。 本 PR 只修复 immutable reader 的父路径别名兼容并补原有读取链路验证,TS context projection 与准入/结算均不变。
视觉评审不适用:已检查四个变更文件及既有 App-hook/CLI 入口,没有产品页面布局或首屏变化;未验证的视觉范围:无。未验证的 installed-host/model 效果另按上述非目标保留。
这是同一 GitHub 账号下的 author-owned PR,因此以 COMMENTED 发布批准结论,GitHub 不允许 formal self-approval;review、独立合并门禁和 merge authority 继续分开。
English verdict: APPROVE 21315bd. The paired base/head oracle reproduces and repairs parent-alias reference reuse; complete recovery and integrity negatives pass. CI was not consulted; merge qualification remains separate.
原生上下文先用父路径别名写入冷启动 reader descriptor,后续 warm baseline 经过现有文件读取器解析父目录,再次发布同一引用时会误报
original reader reference changed。本改动只在已有描述文件发生路径写法差异时比较解析后的父目录和精确末级文件名;完整摘要、其余元数据、私有文件及末级符号链接检查继续生效,已有描述文件不重写。实际调用点仍是
model_context_reference→write_context_read_reference。修复复用现有不可变文件 IO owner;没有新增状态或协议词汇。相邻重构评估无需新增抽象:普通路径完全保留原分支,异常兼容仅增加这一处比较。配套更新双语读取说明和可复用自修复诊断。验证(head
82dc675418fb8995cd59455632444cd8935a50e0):git diff --check和四文件公开边界检查通过;全部改动含 DCO。基线与 PR 目标均为最新
main(8d314af4955c86ea389b0916eda5f1a51f30b966)。作者实现完成,独立审查及维护者合并仍待进行;本提案不作 live 安装或默认提升。