Repository navigation
test: restore causal-wait and deferred Turn acceptance - #8045
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: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
维护因果依赖等待、延后重放及租约恢复验收的贡献者。CLI 改为返回完整/差量的上下文引用后,两组旧测试仍直接把外层 JSON 当业务 policy,先触发 should_run 或 heartbeat_receipt 缺键,导致真正的等待、原 Turn 绑定与一次结算断言没有执行;复用现有 reader 后,原44条断言保持并恢复执行。让两处既有验收读取本次不可变 capture 中的真实 policy,恢复原有状态、租约、依赖和无重复结算验证。不修改生产准入、结算或默认策略,不放宽断言,不将测试恢复称为真实 Host 采用或端到端长期收益。
评审 head a230bffe07e367a48a3376c4b95951208f25e558,基线 4335a26e20b8b85b9862838b9f86dbbdbc36c4ab。未发现此差异引入的阻塞性问题;原有必需 mypy 失败及合并质量 hold 保留,不计为通过。账号与作者相同,使用 COMMENTED 结论。
改动思路 / Approach
实际 CLI 的上下文传输与业务 policy 是两个层次。测试应先让现成 read_cli_policy_payload 读取本次引用,再执行原业务断言,不能把外层 transport 的字段变化当成准入或结算失败。该 helper 已用于其他 CLI 验收,只在成功的 full/delta 响应中解引用当前 recovery reference,并由现有 reader 校验不可变 SHA;inline 与非零退出响应保持原样。
本 PR 的边界是两处既有测试的读取适配。4增3删,无新运行时状态、schema、默认开关或并行 Python 决策 owner;没有理由另建解码框架、改生产输出或删除断言。核心等待、依赖、租约和结算仍由原 typed owner 决定。
具体改动 / Changes
关键代码讲解
- 因果等待验收的
cli继续调用真实 CLI,只把成功输出读法改成现有 helper。36条原断言保持:监控等待、Todo 完成/延后、循环依赖修复、租约退休以及独立工作继续均仍验证原业务结果。 - 原 Turn 延后重放 case 在第87行复用相同 reader;8条原断言仍要求重放保留原身份、fresh replan、隐藏投影下的正确候选及无提前交付/花费。
- 未改动的
read_cli_policy_payload是已有 transport owner,复用当前 capture 而非缓存业务答案。现有9项 oracle 分别覆盖 full/delta 的当前引用与 decoy 区分、inline/rc1不变、坏 SHA 和 symlink 拒绝。
规范依据 docs/quota-allocation.md,不可变修订 4335a26e20b8b85b9862838b9f86dbbdbc36c4ab;Receipt-backed settlement progress 在此 head 为 implemented:原结算/Turn绑定、不把等待或旧重放算成交付的断言仍由真实 File/SQLite 路径执行。
独立执行四个现有模块(本 PR 两组、deferred resume generated command、Todo lease recovery):基线 26 passed /16 failed,恰为8个 should_run 与8个 heartbeat_receipt 缺键;head 42 passed /0 skipped。两个文件合计 44条原 assert 的 AST 完全一致,reader helper 字节也未改变。9项 reader oracle PASS;改动文件 Ruff PASS。
standard premerge 5 direct+3 selected PASS,但总体仍为 quality_invalid_receipt:必需 python -m mypy --no-incremental 在不可变基线与此 head 都报 task_orchestration_admission.py:110 的同一 no-any-return,完整208字节输出一致,17个检查文件中1错;该因果模块、pyproject、uv.lock 均未改。因此当前 CQR 真实记录为 FAIL,没有豁免或将必需行改为可选。
对主干的风险 / Risks
最强风险是 helper 取错 capture 或吞掉异常,导致验收只剩假绿。这里复用既有 SHA 校验和原错误返回,并以9个当前引用/坏引用反例与全部44条原状态断言共同验证。真实生产逻辑、权限、持久字段和默认策略都未修改,失败时可直接回退两处读取。这个修复的价值是让真正的因果等待与原身份断言再次运行,不是单凭测试数通过下结论。
保留一次 review harness 环境错误:起初把临时测试仓库放在 ignored private ancestry 下,公共边界 smoke 正确拒绝 local_private_state。同一未改动基线在该路径复现;基线/head 在物理临时目录都通过同一 smoke,修正环境后的 standard catalog 三项全过。没有改 assertion、检查规则或抹去原失败。mypy 失败另属未改动生产路径,合并 hold 依旧存在。
没有查询、轮询或等待远端 CI;作者历史全量结果仅作诊断。本轮没有认证完整 CI、PostgreSQL、其他平台、安装 Host/model 或长期收益。当前证据覆盖真实隔离 File/SQLite/CLI;投影隐藏是专门的负向夹具,没有触碰活动 Goal。
我的整体评价 / Verdict
同意这项完整、最小的既有验收修复。现有同作者批次中8039守护 Monitor/JEV,8061适配既有 quota lifecycle fixture;此 PR 守护不同的因果等待与延后原 Turn 绑定,没有增加同形脚手架。继续复用现有 reader 即可,无需新增 consolidation 工作。
视觉评审不适用:仅两处现有 pytest CLI 读回改变;已检查完整 diff 与 unchanged production owners,没有 rendered presentation 改动。未验证范围为安装 Host/model、其他平台、PostgreSQL 或完整 CI,此测试修复不声明这些成果。产品额外必需交互轮数为零。独立当前证据足以支持代码结论,必需 mypy/CQR 及合并资格仍保持未通过;此 COMMENTED 结论不授予合并权。
English verdict: APPROVE — the two existing acceptance readers are restored at a230bffe07e367a48a3376c4b95951208f25e558 without weakening44 assertions;42 native cases and9 reader controls pass. Identical pre-existing mypy failure keeps CQR and merge qualification held. This is a COMMENTED author-account conclusion, not merge authority.
Goal And Delivered Outcome
两个既有 CLI 验收仍把原生 capture 导航当作内联策略读取,在执行关键断言之前分别报
KeyError: should_run和KeyError: heartbeat_receipt。本 PR 复用read_cli_policy_payload(..., returncode=rc),从当前原 capture 恢复策略,恢复阻塞等待与延期重放的完整验收。4335a26e20b8b85b9862838b9f86dbbdbc36c4ab,目标分支main。Author Declaration
Written by:
model_agent— OpenAI Codex (GPT-6 family).Implemented against
Specification:
docs/quota-allocation.md#receipt-backed-settlement-progress及这两个测试原有断言,revision4335a26e20b8b85b9862838b9f86dbbdbc36c4ab。test_causal_blocked_closeout_cli.py的原完整 8 案例test_deferred_original_turn_binding.py的原完整 8 案例rc,所有原断言不变Self-check: 阅读完整 diff、现有 reader、原失败及协议,运行真实 CLI/TypeScript 进程与隔离 File/SQLite 验收;未修改生产行为、transport 开关、预算、validator 或原有负例。
Scope And Continuation
本范围完成两个失效读取点的修复。复用同一现有 helper 并移除失用 import;不新增抽象。补丁可单独回退。
完整 CI、独立评审及实际 Host/安装采用仍按原资格流程接续。本 PR 不宣称生产结算缺陷或长期效果/费用收益已被修复或证明。
Validation
a230bffe07e367a48a3376c4b95951208f25e558.finished.synthetic,public_fixture.task_orchestration_admission.py:110的no-any-return。此必检仍阻塞,不因归因而豁免。cqr_a8dba7a6ae85aef243ee保留 mypy / 完整 CI hold;严格 verify 和 premerge 保持非通过。复现最终定向组:
uv run --extra test python -m pytest -q \ tests/control_plane/test_causal_blocked_closeout_cli.py \ tests/control_plane/test_deferred_original_turn_binding.py \ tests/control_plane/test_deferred_resume_generated_command.py \ tests/control_plane/test_todo_update_lease_recovery.pyCoverage gaps: 完整 CI、独评、真实 live Host/安装资格未包含在这次测试修复中;不新增或放宽这些资格。
Frontend / Visual Evidence
UI impact:
none。没有界面或首屏改动,截图不适用。Type of Change
LoopX Area
Shared-authority RFC fixture impact
生产 schema、provider 路由与默认行为未变;本次只恢复既有合成 File/SQLite 测试消费。未申请 provider promotion 或 PostgreSQL 资格。
Boundary Checklist
none。