Skip to content

test: reconcile release regressions with shipped contracts - #7734

Merged
loopx-agent merged 3 commits into
mainfrom
codex/release220-heartbeat-regressions-20261030
Oct 30, 2026
Merged

loopx-agent merged 3 commits into
mainfrom
codex/release220-heartbeat-regressions-20261030

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

发布前的完整回归暴露了六个现有测试文件与已交付合同之间的偏差。本 PR 只修这些测试:薄提示预算采用已合并的 4,900/5,300 值;可选提醒沿真实 scoped-wait 分类;显式错误的结算身份须读回准确拒绝;序列化失败检查临时目录和文件已清理。

超限输入仍然失败:增加一个合法长度的 scope,并让原始长路径继续超过现有预算。提示正文、原生 4,000 字符传输上限、5,400 字符 Agent JSON 检查和所有产品预算均未修改。等待期限、原 Todo、零扣费、后续独立工作,以及原错误类型和服务身份检查全部保留。

依据是已合并的 #7701、#7689、#7624 和 #7688 的现有行为。目标为 main,基线 225698b313f3bcd5c967220013b4a2254c586792;原始失败来自 51702131ff72c26d5d4e72f4b04c55ce9d93ef08,上述六个测试及其直接合同 owner 在两者间未变。分支另已合入基线中的报告恢复修复 #7724,PR diff 仍仅含六个测试文件。

Author Declaration

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

Implemented against: loopx/control_plane/heartbeat/budget.py、loopx/control_plane/work_items/interaction_contract.ts、loopx/control_plane/work_items/replan_semantics.ts、loopx/control_plane/effect_runtime.py,均以基线 225698b313f3bcd5c967220013b4a2254c586792 为准;同版 docs/reference/protocols/goal-vision-replan-contract-v0.md 的 Exact blocked-successor wait 与原 Turn 结算边界。

既有要求 交付与检查
保留完整正文、路由、权限和显式 envelope headroom 普通/captured-only 为 4,900,显式 envelope 为 5,300;真实 CLI、File/SQLite、Reward Memory 关闭及超限反例
可选提醒不阻塞已证明的自动等待 准确 scoped-wait 分类;原期限、Todo、支出及新增独立任务正常进入
错误的 selected identity 不得借当前 obligation 结算 无选择仍返回空;错误选择必须抛出原生 heartbeat_receipt_identity_conflict
错误输入保留真实序列化错误并清理私有临时资源 检查所有实际目录已删除;保留文件、错误 cause、传输 mode 与原服务 PID 断言

Validation

Tested revision: 3aceceabf6f24bdabbe442f239b414ad84e4a0d9。Input classes: synthetic, public_fixture.

检查 结果与边界
regression_parity 原始完整回归在这六个文件记录 18 个 call-phase 失败;原记录保留。三个原始 heartbeat 模块 77 项、等待/ACK 23 项、完整传输模块 25 项在修复内容上通过。
real_entrypoint / real_backend 在当前干净 head 上重新执行全部 125 项,125 passed、0 skipped;使用隔离真实 CLI/Node/File/SQLite,源码未变化且自有运行时清理完成。
independent negative 刻意保留三类错误输入的临时目录,底层 pytest 按预期返回 1,三个用例均在目录清理断言处失败;实验结束恢复并清理自有 fixture。正常传输模块 25/25 通过。
static Ruff、配置的 mypy、原 CLI output-budget smoke、diff advisory 与 diff 检查通过。没有新增支持的语义词表 carrier。
public_boundary 六路径扫描:0 errors、1 warning;已检查为原有合成反例。旧测试中的公开脱敏反例可能产生提示,无实际凭据。
premerge 5 项直接检查与 10 项选中检查全部通过,0 failure/skip/manual hold;准确范围 CQR cqr_c4f12ba2f1dea35a81d7 有效。

完整基线 collection 已结束:20 failed、30,892 passed、851 skipped。本 PR 对应其中六个文件的 18 个失败。其余缓存监督回退与打包技能资源引用问题继续由现有发布工作修复;原失败和对照均保留。完整发布资格另行验证。

Scope And Continuation

本次测试修复完成即可独立回滚和审阅。生产代码、模型调用、权限、存储和超时无改动。最终源码完整回归、模型/安装与正式渠道验证继续沿现有发布工作执行;不增加另一个发布或调度框架。

UI impact: none。没有界面、设置或首屏变更,截图不适用。六个路径均为现有回归;RFC 配对未修改,提交均有 DCO sign-off。未包含本地状态、原始日志、私有链接、路径或凭据。

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

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、原状态和失败恢复,当前精确提交 125 项通过。本 PR 不改变生产行为、预算或超时,也不交付完整版本发布。缓存监督回退、技能资源引用及最终同源发布资格和渠道读回仍由现有发布工作完成。

这次只修复发布检查的错误信号。原先的提示上限、等待原因码和错误身份处理已被合入的控制面合同改变;另一个测试把“分配后正确清理”也当成失败。继续保留旧断言会反复阻断发布,直接删掉断言则会漏过真正的边界问题。

改动思路 / Approach

生产控制面和保存格式在基线与本提交之间字节相同。测试继续调用原来的 CLI、调度和运行时 owner,只把预期对齐已交付的合同;正常路径和拒绝路径都保留。目录是否最终移除才是清理义务,是否曾经分配目录属于实现顺序。没有新增控制面状态、兼容分支或测试框架。

合同 当前正确预期 保留的反例
提示预算 thin 4900,显式 envelope 5300 四段合法长 scope 仍超限;正文、5400 Agent JSON 和 native 4000 边界保留
自动重试 可选人工通知不阻断同一 Todo 的等待 到期时间、不额外 spend、独立工作恢复继续校验
精确身份 显式错误 guard 抛出 typed rejection 未选择 guard 仍为 None;错误码必须精确匹配
编码失败清理 允许预分配,所有实际目录和文件必须移除 原始异常及 cause、相同 server PID;故意漏清理必须失败

具体改动 / Changes

审阅 head:3aceceabf6f24bdabbe442f239b414ad84e4a0d9;基线:225698b313f3bcd5c967220013b4a2254c586792。六个既有测试文件,23 行新增、11 行删除,没有生产文件变化。

  • 提示与 envelope:更新规范固定值,并将超限 fixture 从三段增至四段,确保它确实仍越界;没有把实现返回值作为自己的预期。
  • 精确重规划身份:保留未选择身份的 None 路径;显式无关身份必须以 heartbeat_receipt_identity_conflict 拒绝。
  • 传输失败清理:检查实际目录消失,原始错误、cause、文件清理和 PID 断言均保留。隔离 fixture 中人为阻止清理,三个原有错误输入均在新断言处失败,证明它没有放过泄漏。
  • registry 路由 fixture 的原始长路径仍超过新 allowance;真实 quota CLI 的自动等待仅更新原因码,其它状态与恢复验证保留。

规范依据:docs/development/good-smokes.md,spec_revision 225698b313f3bcd5c967220013b4a2254c586792。Start With The Contract:implemented,沿用既有真实 CLI/运行时边界;Prefer Semantic Pressure:implemented,以超限、错误身份和清理反转验证独立语义;Validate The Change:implemented,完成精确提交聚焦测试和仓库标准 premerge,保留历史失败及发布缺口。

对主干的风险 / Risks

主要风险是以“对齐预期”为名削弱测试。这里仍有真实超限输入、错误身份的精确诊断和清理反转实验;新增目录断言能够抓到“文件已删、空私有目录却残留”的反例。回滚只涉及六个测试,不迁移任何用户数据。

PASS:精确 head 聚焦 125 项,0 skip,源提交前后不变、清理无误;标准 premerge 5 个直接检查和 10 个风险选择检查全部通过。Ruff、mypy、语义 advisory、CLI 输出预算及公开边界扫描通过,扫描保留一个未改动的合成脱敏 fixture 警告。变更质量 receipt cqr_c4f12ba2f1dea35a81d7 有效。三项故意漏清理的 mutation 是预期失败的诊断实验,不能表述为产品测试通过。

历史全套在父提交 51702131ff72c26d5d4e72f4b04c55ce9d93ef08 为 20 failed / 30892 passed / 851 skipped,其中十八项对应本次陈旧断言。当前证据覆盖这些断言及原始负例,但不声称本 head 已跑完整全套。缓存监督回退与技能引用仍是发布阻塞;本 PR 未修复它们。遵守当前 review 契约,没有获取、轮询或等待 GitHub CI。

我的整体评价 / Verdict

APPROVE,交付判断为 justified_increment。long_horizon=preserved:生产等待、持久化与接续不变,保留无额外 spend 及独立工作恢复验证;user_experience=preserved:用户 CLI 和必需交互不变。六个测试文件不改变任何渲染入口,首屏截图不适用。未以本 PR 证明完整安装、外部模型或正式渠道交付。 这是已有回归的必要修正;完整发布资格仍须在后续最终同源提交重新完成。

English verdict: APPROVE the exact test-only head; shipped behavior is preserved, negative coverage remains effective, and final release qualification is separate.

@loopx-agent
loopx-agent merged commit fc4df26 into main Oct 30, 2026
8 of 30 checks passed
@loopx-agent
loopx-agent deleted the codex/release220-heartbeat-regressions-20261030 branch October 30, 2026 07: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