Repository navigation
test: preserve poll recovery across source and wire formats - #8473
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
dc287c7 to
bad7f1d
Compare
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
当前没有阻断 finding。结论绑定 bad7f1d7dbadb95dd9c519fffe7e3028f7c3f5ad;本轮独立重跑并保留了原失败,未采用作者通过数字作为验收。
动机 / Motivation
受影响的是维护 poll 恢复测试、接续 C1 契约迁移的开发者。 C1 的完整原捕获采用 v1,而显式关闭上下文交付时仍发出 v0 展示;旧等号使四个有效场景提前失败,后续恢复与副作用断言无法执行。修复后分别校验展示、原源及它们的绑定。
本 head 的 18 例和同函数 C1 overlay 的 18 例全部通过;原四个失败得到同条件复现,值相等的数值损坏也会被完整性检查拒绝。 本 PR 只修既有测试,不改变生产协议、默认配置、准入、调度或结算,也不认证 MCP、实际模型采用或完整 C1 收益。 原 C1 实现者仍需确认实际采用;不可变源码上的单函数 overlay 不是远端分支整体验收。
改动思路 / Approach
保留原来的 18 参数矩阵和同一个生产 CLI,由现有 typed owner 负责生成展示、验证完整契约与读取原 capture。测试只分清每种材料应证明什么,不新增状态、签名算法或恢复入口。单纯删除等号会丢掉覆盖;这里保留 v0 动作签名与原观察的对照,并用既有完整性校验器检查 v1 原源。
| 材料 | 本测试应确认的事实 |
|---|---|
| 显式 off 的 envelope 展示 | 固定 v0 schema,动作及结算身份保持,poll 参与来源绑定 |
| 完整原 capture | 原 poll、未知内容和原身份被保留;读取不重新准入 |
| v1 reader 完整结果 | 除对象值相等,还要通过原内容绑定的完整性验证 |
这个边界足够且可单独回滚:只扩展一个既有测试函数。deepcopy 保护原对象,重新签名仅用于比较 fixture;其结果不提供执行权限或来源认证。实际规范仍由原协议 owner 维护,没有为了测试建立平行版本框架。
具体改动 / Changes
完整 base→head diff 是一个测试文件、+30/−4,没有生产代码或 fixture 数据删改。额外比较了 C1 24ad5796236145683b1ed5b121c347adec26ead8 的原函数:错误的整体对象等号被替换为受支持的展示/原源检查,原选择、工作/结算身份、poll 绑定、receipt 和 capture 不变条件继续可验证。
关键代码讲解
test_original_capture_retains_the_emitted_poll_observation保持 recorded/unreadable/off × quota/envelope/native × File/SQLite 的全部 18 组合。envelope 分支明确 v0 展示,同时比较移除 poll 前后的动作签名和结算身份,并执行发出的原源 reader。- 该函数的完整 reader 检查核对全部原源;v1 再调用
assert_complete_turn_decision(recovered)。选择读取核 offset=0、EOF、UTF-8 字节覆盖和准确 pointer;末尾继续核 receipt/capture 字节与 Host 计数。 _resign_contract是复用的既有 helper,只重算 fixture 的来源/内容摘要。未重新签名的删 poll 副本必须拒绝;独立签名的副本可用于证明 poll 改变来源绑定而不改变工作身份。
规范依据:docs/reference/protocols/turn-envelope-v0.md,spec_revision 5988be01e9746828fbb3d222ef22183605a77185(不可变原规范);另核对 #8266 的公开 F2。该规范在本 PR 中未改。
original-capture:完整捕获保留未投影的原决定和 receipt;implemented,原 capture 字节及完整 reader 对照覆盖。same-observation-read:展示指向同一次原观察,不以旧签名等价代替完整来源保真;implemented,v0 binding、v1 原源/reader 校验及数值故障对照覆盖。recovery-no-replay:恢复不重新执行 guard/poll,不获得新权限;implemented,原 receipt/capture 不变及 Host 计数断言覆盖。
对主干的风险 / Risks
本轮使用 CPython 3.11.17、隔离的真实 File/SQLite 数据和真实 CLI/Node 路径,没有调用模型。PR head 的 18 例全部 PASS。不可变 C1 原测试为 14 PASS / 4 FAIL,四项都在 assert emitted == source,分别覆盖 recorded/unreadable 和两个 backend;相同环境只替换本 head 的同一函数后为 18 PASS、零 skip。另核对 C1 其余 7,463 个 Git blob 字节不变及测试文件其余文本不变;这证明 overlay 范围,不代表全 C1 执行覆盖或实际采用。
最强反例是在 reader 返回时仅将 /quota/compute 从 1.0 改成 1,原 capture 和 binding 不动,Python 对象值仍相等。当前完整性断言在四项都报 content integrity mismatch;局部 control 只移除新加的两行 reader 完整性检查,四项则全部通过。故障/control 的原始终态分别保留,随后恢复了被检函数字节。此处的四项失败是刻意注入损坏被检出的结果,不是 PR 的正常运行失败。
Ruff、配置的 17 个 MyPy source roots、精确 diff hygiene、DCO 和标准 premerge 的 5 direct / 0 selected 均通过;精确范围 CQR 已独立记录并验证。CI 按当前策略未查询或等待。只读恢复的真实 store/CLI 已覆盖;控制 Host 仅作为计数 oracle,不冒充模型运行,包安装与跨平台结果没有从这些测试推导。
我的整体评价 / Verdict
这是有用且必要的测试维护增量,八项适用 evidence 已核验。long_horizon 的既有运行时契约保持,维护者验证流程得到改善:有效的 off 路径可以跑到原有恢复和副作用断言,内容绑定损坏仍会产生红项。实现没有改变生产代码,也没有用缩减矩阵、skip、放宽 timeout 或重算原 capture 来造绿;已有 helper 比新增恢复框架更合适。
视觉复核不适用:检查的是 poll 恢复测试文件及其真实 CLI 路径,没有页面或渲染组件改动。 未做截图、已安装 App、Windows 或完整 C1 资格验证。 原 F1 与后续 C1 head、默认推广、完整成本和模型效果各自需要其拥有者的独立资格,不能从本测试批准推导。本次没有执行合并。
English verdict: APPROVE bad7f1d. The preserved 18-case matrix passes on main and the frozen-C1 overlay, and value-equal reader corruption is detected by the retained binding checks.
Goal And Delivered Outcome
修复 #8266 的 F2 评审发现 所暴露的 poll 恢复测试契约冲突。显式
--context-delivery off --turn-envelope应保留 v0 展示,完整原捕获可以是 v1;两者不能以对象相等作为验收。本 PR 在
main的既有测试上保留 v0 source binding、原工作和结算身份、完整原捕获恢复及不重复 poll 的断言,同时兼容 C1 的完整 v1 捕获。C1 当前测试在四个 envelope/recorded-or-unreadable/File-or-SQLite 组合上提前失败;使用本 PR 的同一测试函数后,这四例以及其余原有分支都能执行到恢复与副作用断言。main。Implemented against
Specification: #8266@
24ad5796236145683b1ed5b121c347adec26ead8的公开 F2 评审与既有显式关闭兼容契约。test_original_capture_retains_the_emitted_poll_observation;固定 v0 schema,完整 source 由发出的 reader 读回Scope And Continuation
仅改一个既有测试文件,不改生产协议、配置、调度或准入。复用已有完整契约校验器和 signing test helper,没有复制签名算法或新增 fixture。
本测试修复可独立合入、回滚。#8266 原作者仍需将同一函数采用到提案中;下面的 C1 结果来自隔离 overlay,不表示远端 #8266 已修复或合格。其 F1 MCP 来源完整性问题和实际采用/完整成本验收继续保留。
Validation
bad7f1d7dbadb95dd9c519fffe7e3028f7c3f5ad,源基线5988be01e9746828fbb3d222ef22183605a77185;运行后未改测试字节。24ad5796的完整源码归档,仅替换同一测试函数,18 passed;其余 C1 测试与 fixture 保留原字节。包含 v1 篡改拒绝、原来源 reader 及不二次 poll范围内未改运行时行为;未声称全 C1、跨平台或自然模型采用合格。源码归档的首个
--locked环境准备因不包含 ignored lockfile 而失败,随后以独立 Python 3.11.17 环境正常准备;这属于准备失败,未计为产品测试失败或通过。已合并并读回实际 merge commit
01b8871a2b3fbbbe817b11c02e92a87de63353d9,合并时间 2026-11-10T04:14:50Z;实际提交的 DCO trailer 已核实。上述结果只覆盖本测试修复,未替代 #8266 的其余验收。Frontend / Visual Evidence
UI impact: none;测试修复,无界面变更。
Type / Area
Boundary Checklist