Repository navigation
fix(context): keep saved projections independent of Goal discovery - #7990
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…0261103-120045 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=gpt-6.1-sol; provider=OpenAI; reasoning_effort=max; declaration_source=runtime_reported
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
精确审查 #7990@1458b13b2c11fe3e7e657ebaf7616c5ccf1e9074,对照 immutable merge-base 1dc98eb8739777a65102e18553658dc70e0f0044,核验 target main 44337e3cb5cbe3e1621550e1fe741853ba5b5a45。离线 context-project 在读取合法旧捕获前进入当前 Goal 路由发现,隐式或全局 registry 遇到冲突 runtime roots 就提前失败。
受影响调用方:Operators reading an existing digest-bound context capture through either shipped CLI module.
两个真实 CLI 入口在 implicit、missing、global registry 下都能完成 native-context=off 的旧捕获投影及返回 reader 的 quota 参数读回;原摘要、身份与源文件字节不变。
非目标:不修复 live Goal 状态、不绕过 machine configuration 或 live admission、不改 source/session 完整性规则、不安装或升级运行时。
剩余缺口:真实安装态与长程效用尚未验证;四项既有 heartbeat 测试失败、两项既有 Ruff F811 和旧 head 的失败记录不改写,合并就绪另判。
改动思路 / Approach
在既有 resolve_cli_registry 分类中补齐已有 saved-view 命令;复用原机器配置与捕获校验 owner,避免新增 fallback 或第二个配置来源。
本 PR 只交付已有 saved-view 的路由解耦;native-context=off 可离线读取,省略/on 仍由原 machine-configuration owner 决定。
复用了现有 caller、typed owner 和错误/重试边界;没有新增持久状态、scope/config owner 或迁移。局部重构已包含于同一边界;跨进程缓存、实时状态修复和独立 UI 都不属于本次交付。
具体改动 / Changes
resolve_cli_registry; saved_projection_goal_route_coupling; test_saved_projection_without_native_transport。
独立规范:docs/reference/required-work-context.md,revision 1dc98eb8739777a65102e18553658dc70e0f0044。逐项验收:Saved context cache;Selected capture details / 按需读取捕获详情。off 无 cache/准入/扣额,读取继续拒绝错摘要和身份。
独立验证:同条件四模块当前 head150通过/4失败,当前 immutable base139通过/5失败;剩余四个 heartbeat failure block 仅规范化 checkout/TMP 路径后相同,原 endpoint 失败在新 head 已修复。 独立六种实际 CLI 子进程路线 head6通过;base implicit/global×两个入口4次因 runtime-root 冲突失败、missing×两个入口2次通过。head 将返回 reader 的 quota 参数经同一测试模块入口读回(未验证原样 launcher),完整恢复 Unicode stop 与9007199254740993,原摘要和两组 runtime/file snapshots 不变。
负例:当前21项 registry-independence 模块已包含在当前通过项中,覆盖两个入口×三个 selector、错误 digest/Goal/Agent/Turn/缺失 source、off 不创建缓存、on/省略仍拒绝 machine-configuration root 冲突,以及 live should-run/spend 拒绝冲突。
对主干的风险 / Risks
本地 standard premerge PASS。四模块仍保留4项 File/SQLite heartbeat 旧夹具失败:非 thin 路线被既有 capture-root guard 拒绝,四个完整 failure block 仅规范化临时目录后相同,heartbeat 测试及 guard 的 base/head blob 相同。原 endpoint 断言已修复:独立 fixture 表逐一验证三端点 normalization、未知值拒绝、Chat 导入隔离和原兼容导出;未改生产端点/默认值。完整 CI Ruff 命令另有2项既有 F811 失败,与 base 全文相同,均在未改动的 Lark 测试文件。作者报告新 CQR pass/verify,仍仅作作者证据,旧失败保留。
两边 raw maintainability ratchet 也都 FAIL,完整输出与 formatter blob 相同:render_canonical_todo_sections oversized、magnitude_regressions=0;native gate 将其列为 inherited advisory,未将单项 smoke 标成通过。没有把一次成功、作者计时或测试数量当成生产性能、安装态 adoption 或真实模型效果。
CI 未查询、轮询或等待,状态未知。未知 CI 不单独阻塞有独立证据的 approve;当前回归、必要覆盖、合并就绪与权限仍分开判断。
我的整体评价 / Verdict
当前 exact head 没有验证出的 blocking finding,交付边界完整且可回滚,结论 APPROVE。本条是 author-owned 的 COMMENTED approval conclusion;合并需另取该 head 的 readiness,且本次没有合并授权或执行。
English verdict: APPROVE — the bounded caller fix is independently validated; unchanged baseline failures and merge-readiness holds remain explicit.
Goal And Delivered Outcome
已保存的 quota 捕获在关闭 native transport 后,只需校验原文件和身份即可呈现。此前
context-project仍先发现 Goal registry:新旧默认 runtime 同时有状态时,它被目录冲突拒绝,尽管相同文件的context-read可以成功。本改动将
context-project纳入现有 saved-view 路由分支,交还给原捕获 owner 校验文件、digest、Goal/Agent/Turn。机器配置仍通过原 owner 读取;未明确关闭 transport 时,配置目录歧义仍拒绝。实时should-run/spend-slot的 authority 冲突保护保持不变。同时修复阻断本提案验收的旧 CLI 测试:当前已发布的 endpoint vocabulary 包含 Antigravity,原测试仍只接受 Codex/DSH。现在以一张独立 fixture 表验证三种已支持端点的 normalization、未知端点拒绝、Chat 导入隔离和兼容导出;没有增加或修改生产端点、默认值或配置规则。
mainat1dc98eb8739777a65102e18553658dc70e0f0044;资格化 PR base 为mainat44337e3cb5cbe3e1621550e1fe741853ba5b5a45,四个改动路径均无 target 增量。Implemented against
project_saved_context_capture/resolve_cli_registry;真实 subprocess 与返回的原 reader 命令steward_executor.machine_defaults,基于已集成 main 的现有三端点合同;normalization、未知值拒绝和兼容导出检查Scope And Continuation
四个路径构成完整可逆修复:公共 CLI 路由、现有恢复集成测试、现有入口测试和 self-repair 诊断表。复用现有分支及 fixture,不新增 capability、schema、配置或恢复器。Python 仍只承担既有参数/IO 路由职责;测试把重复的旧预期收敛到独立 fixture 表,无需生产重构或语言迁移。
本提案已补齐作者实现与当前本地验收;独立评审、必检 CI 与精确 head 的合并资格仍分开处理。整体质量工作保持开放,C1 统一工作契约沿 #7430 的原 owner 推进。没有 UI 改动,不声明宿主安装采用、模型收益或长期成本改善。
Current Required CI
当前 head
1458b13b2c11fe3e7e657ebaf7616c5ccf1e9074的必检 CI 未通过,此前的本地资格化不能代替它。tests/test_lark_private_conversations.py两个 imported pytest fixture 参数触发 Ruff F811。未改动的目标mainat6a6a8590e09822b254ae615fd4b64c9e047508f1用相同 Ruff 命令也复现这两处错误;已有独立修复 #7991,本提案不重复修改 fixture。personal-workspace-contract.test.mjs在 worker status flex layout 断言处失败。同一未改动目标main复现该断言:组件仍使用状态行,而 #7964 移除了基础布局规则。应恢复产品布局并保留原检查;本提案四个路径均不涉及该 CSS。上述归因是失败检查及干净目标分支的可重复结果,不代表修复已合入、CI 已恢复或当前 head 获得合并资格。CI 的下游 skipped/aggregate failure 也不计作独立测试通过或新的根因。本地复现环境是 Python 3.14 / Node 24.21;线上 Python 3.11 的通过结果仍须由实际 CI 提供。
Validation
1458b13b2c11fe3e7e657ebaf7616c5ccf1e9074finishedsynthetic,public_fixture2ad9e332a854619ce44efd0c37efb58520c30c3f完整 CLI 套件仍为 112 passed / 1 旧断言 failed。原失败保留,没有豁免或改写历史资格。uv run --extra test python -m pytest -q tests/test_cli_entrypoint.py tests/control_plane/test_context_capture_registry_independence.py:134 passed,包含完整 113 项 CLI 套件及 21 项恢复检查。三种已支持端点逐一读回、未知端点拒绝和原导入隔离均保留。loopx.entrypoint、loopx.cli完成 9 组投影/未改写 reader 命令读回、27 个来源/身份反例与 3 个 live admission 拒绝。capture/runtime 文件不变,8 个相关生产文件与当前 Git 同字节。cqr_f51255f9173584f65367,绑定本 head / 资格化 main44337e3cb5/ 四路径,pass 且 verify valid;一次 bounded safe-fix 修复过期测试。旧ad14485的失败 CQR 保留,不追认为通过。当前 wheel 首次构建因同步 main 后生成资源失效而失败,随后按正常 Chat bundle 构建流程重建并通过;没有绕过打包校验。此前
ad14485上的相邻四模块 75 passed / 8 optional native skipped 是旧 head 的单独记录,不与本次 134 合并计算。此次没有启动模型实验;更广的宿主采用、Windows 与长期效果资格仍保留其原边界。Frontend / Visual Evidence
UI impact:
none。现有 CLI 与捕获恢复入口,没有页面或视觉交互变化。Boundary Checklist
最终 standard premerge:6 direct checks 全部通过;5 个 selected checks 已执行,保留 1 项 owner 明确标注的 inherited maintainability advisory(原 raw exit 1,未触及的 oversized
render_canonical_todo_sections,零 magnitude regression)。无 blocking failure 或 manual hold;该本地门禁通过,仍不授予 self-merge 权限。