Skip to content

test: restore causal-wait and deferred Turn acceptance - #8045

Merged
huangruiteng merged 1 commit into
mainfrom
codex/causal-closeout-adoption-20261104
Nov 5, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/causal-closeout-adoption-20261104

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

两个既有 CLI 验收仍把原生 capture 导航当作内联策略读取,在执行关键断言之前分别报 KeyError: should_run 和 KeyError: heartbeat_receipt。本 PR 复用 read_cli_policy_payload(..., returncode=rc),从当前原 capture 恢复策略,恢复阻塞等待与延期重放的完整验收。

  • Outcome basis: 可复现的测试读取回归;base 4335a26e20b8b85b9862838b9f86dbbdbc36c4ab,目标分支 main。
  • Observable result: 原 causal 模块 8 项失败;恢复后联查发现相邻 deferred 模块 8 项失败;最终四个完整模块 42 项通过。

Author Declaration

Written by: model_agent — OpenAI Codex (GPT-6 family).

Implemented against

Specification: docs/quota-allocation.md#receipt-backed-settlement-progress 及这两个测试原有断言,revision 4335a26e20b8b85b9862838b9f86dbbdbc36c4ab。

Criterion Disposition Path / evidence
原 Turn 的 typed blocked 写回只结算一次,等待不扣额,后续独立工作可继续 implemented test_causal_blocked_closeout_cli.py 的原完整 8 案例
缩减的候选显示、新 replan 和 deferred/checked 状态不能替换原结算身份或授予执行资格 implemented test_deferred_original_turn_binding.py 的原完整 8 案例
原生 full/delta、inline/off 及非零退出读取各守其契约 implemented 复用现有 reader,保留真实 rc,所有原断言不变

Self-check: 阅读完整 diff、现有 reader、原失败及协议,运行真实 CLI/TypeScript 进程与隔离 File/SQLite 验收;未修改生产行为、transport 开关、预算、validator 或原有负例。

Scope And Continuation

本范围完成两个失效读取点的修复。复用同一现有 helper 并移除失用 import;不新增抽象。补丁可单独回退。

完整 CI、独立评审及实际 Host/安装采用仍按原资格流程接续。本 PR 不宣称生产结算缺陷或长期效果/费用收益已被修复或证明。

Validation

  • Tested revision: a230bffe07e367a48a3376c4b95951208f25e558.
  • Run state: finished.
  • Input classes: synthetic, public_fixture.
Check kind Result Public-safe evidence / limitation
regression_parity passed causal 原完整模块 8 failed (10.73s);采用 reader 后 8 passed (13.08s)。首次四模块联查 34 passed / 8 deferred 读取失败 (78.92s);保留原失败。
real_entrypoint / real_backend passed 四个完整模块 42 passed (92.58s):causal blocked closeout、deferred original Turn binding、generated deferred resume、Todo lease recovery;真实 CLI/TS 进程与隔离临时 File/SQLite。覆盖依赖 cycle、lease 退休、权限/声明、原身份、重放和零等待扣额。
static passed 仓库既有范围 Ruff、CLI output budget、两文件 public-boundary scan、staged bilingual RFC gate 及 diff check。
static failed 必需 mypy 的 17-source workload 在不可变 base 和候选 diff 上均 exit 1,完整错误一致:task_orchestration_admission.py:110 的 no-any-return。此必检仍阻塞,不因归因而豁免。
integration not_run 完整全库 pytest / required aggregate CI 尚未资格化;不以定向结果代替。
manual blocked CQR 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.py

Coverage gaps: 完整 CI、独评、真实 live Host/安装资格未包含在这次测试修复中;不新增或放宽这些资格。

Frontend / Visual Evidence

UI impact: none。没有界面或首屏改动,截图不适用。

Type of Change

  • Test update
  • Bug fix

LoopX Area

  • Control plane (goals, todos, quota, scheduler, registry, runtime)
  • Build, packaging, installer, or CI

Shared-authority RFC fixture impact

生产 schema、provider 路由与默认行为未变;本次只恢复既有合成 File/SQLite 测试消费。未申请 provider promotion 或 PostgreSQL 资格。

Boundary Checklist

  • Diff 与说明不包含私有状态、原始日志、凭据、内部链接或本机路径。
  • 未重复维护者 benchmark 工作。
  • 保持具名验收修复范围。
  • 没有成对 RFC 改动;staged bilingual gate 通过。
  • UI impact 已标记 none。
  • 唯一提交包含 DCO sign-off。

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@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)

动机 / 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

关键代码讲解

  1. 因果等待验收的 cli 继续调用真实 CLI,只把成功输出读法改成现有 helper。36条原断言保持:监控等待、Todo 完成/延后、循环依赖修复、租约退休以及独立工作继续均仍验证原业务结果。
  2. 原 Turn 延后重放 case 在第87行复用相同 reader;8条原断言仍要求重放保留原身份、fresh replan、隐藏投影下的正确候选及无提前交付/花费。
  3. 未改动的 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.

@huangruiteng
huangruiteng merged commit c63040d into main Nov 5, 2026
27 of 37 checks passed
@huangruiteng
huangruiteng deleted the codex/causal-closeout-adoption-20261104 branch November 5, 2026 03:22
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.

2 participants