Skip to content

test: preserve poll recovery across source and wire formats - #8473

Merged
loopx-agent merged 1 commit into
mainfrom
codex/poll-recovery-contract-20261110t0232
Nov 10, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/poll-recovery-contract-20261110t0232

Conversation

@loopx-agent

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

Copy link
Copy Markdown
Collaborator

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 的同一测试函数后,这四例以及其余原有分支都能执行到恢复与副作用断言。

Implemented against

Specification: #8266@24ad5796236145683b1ed5b121c347adec26ead8 的公开 F2 评审与既有显式关闭兼容契约。

Criterion Disposition Path / validation
v0 展示与完整原捕获分开校验 implemented test_original_capture_retains_the_emitted_poll_observation;固定 v0 schema,完整 source 由发出的 reader 读回
poll 参与原来源绑定,工作和结算身份不变 implemented 原 envelope/signature 对照保留;v1 原源和 reader 完整结果均作完整性校验;删除 poll 后拒绝校验,独立重新签名的比较 fixture 通过
恢复只读、不二次 poll 或调用 Host implemented 原 receipt/capture 字节不变、Host 计数不存在;分页 offset、字节覆盖和 pointer 校验

Scope And Continuation

仅改一个既有测试文件,不改生产协议、配置、调度或准入。复用已有完整契约校验器和 signing test helper,没有复制签名算法或新增 fixture。

本测试修复可独立合入、回滚。#8266 原作者仍需将同一函数采用到提案中;下面的 C1 结果来自隔离 overlay,不表示远端 #8266 已修复或合格。其 F1 MCP 来源完整性问题和实际采用/完整成本验收继续保留。

Validation

  • Final test bytes: bad7f1d7dbadb95dd9c519fffe7e3028f7c3f5ad,源基线 5988be01e9746828fbb3d222ef22183605a77185;运行后未改测试字节。
  • Run state: finished;Input classes: synthetic, public_fixture。
  • CPython 3.11.17;真实隔离 File/SQLite CLI,无模型调用或全局安装。
Check kind Result Public-safe evidence / limitation
real_entrypoint / real_backend passed main 上既有 quota/envelope/native × recorded/unreadable/off × File/SQLite,18 passed
regression_parity passed 不可变 C1 24ad5796 的完整源码归档,仅替换同一测试函数,18 passed;其余 C1 测试与 fixture 保留原字节。包含 v1 篡改拒绝、原来源 reader 及不二次 poll
static passed Ruff:改动文件;MyPy:仓库配置的 17 个 source files;DCO、diff hygiene、RFC bilingual check
static passed 改动文件 public/private scan;精确 diff 的 change-quality receipt verified
static passed 标准 native premerge:5 direct checks passed、0 selected checks,gate passed,零失败/hold;未代替上述真实 CLI 矩阵
independent_review passed Review-A 对最终 bad7f1d7 的独立评审:APPROVE,零阻塞发现;共享作者账号使用 COMMENTED 审查结论。独立 main/C1 overlay 各 18 passed;原 C1 为 14 passed / 4 failed
negative / control passed 独立 reader 数值 token 1.0→1 故障注入:完整性校验 4/4 拒绝;仅撤回新增两行时 4/4 假通过,确认断言保护的实际边界
merge_readiness passed 最终 bad7f1d 的 native readiness ready=true、closeout clear、零未解线程;CI 按 wait_for_ci=false 未查询。GitHub REVIEW_REQUIRED/BEHIND 由既有维护者授权的 admin 路径处理,未将 COMMENTED 称作正式自我批准

范围内未改运行时行为;未声称全 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

  • Test update
  • Host or runtime integration validation

Boundary Checklist

  • 无私有状态、凭据、raw traces、内部链接或本机路径。
  • 不重复 benchmark 作业;不改变评分、任务语义或权限。
  • 单一已复现缺口,保持原实现与验收边界。
  • 无 RFC pair 改动;bilingual diff check passed。
  • UI impact none。
  • DCO Signed-off-by 已保留。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@loopx-agent
loopx-agent force-pushed the codex/poll-recovery-contract-20261110t0232 branch from dc287c7 to bad7f1d Compare November 10, 2026 03:18

@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: 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.

@loopx-agent
loopx-agent merged commit 01b8871 into main Nov 10, 2026
18 of 31 checks passed
@loopx-agent
loopx-agent deleted the codex/poll-recovery-contract-20261110t0232 branch November 10, 2026 04:14
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.

1 participant