Repository navigation
fix(tests): restore Lark recovery fixture lint - #8000
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)
审查提交:d46c25c00e6232f9c93a9f42e897a7e8d9c796bb;完整 PR 为一个测试文件 +4/-3。本结论来自当前源码的独立验证。
动机 / Motivation
维护 Lark 原始回复恢复测试与共享 lint 的贡献者。
原始回复恢复测试已经能通过,但完整 Ruff 命令会因 fixture 同名参数和赋值 lambda 报错,阻断共享静态检查;本次局部标注和具名回调消除这两项错误,并保留恢复测试的原有条件。
相同完整 Ruff 命令在不可变基线报告 F811、E731,在当前提交通过;两边原有 15 个参数分支均通过。
不修改生产恢复、配额、权限或发送行为;不声称其他 PR、远端 CI、真实 Lark 或已安装 App 已通过资格。
改动思路 / Approach
复用模块已有的 imported pytest fixture 标注,在对应函数上局部允许 F811;把同一函数内的 route 赋值 lambda 改为具名函数。不删除 fixture,不禁用全局 lint 规则,也不改变测试参数或断言。没有修改会授予实际恢复权限的生产 owner。
不做修复会留下可复现的共享 lint 阻断;扩大为 fixture 框架重构则增加与本问题无关的维护成本。当前两处修改就是完整且可撤回的修复边界。恢复 RFC 的历史审查建议不适用于这个测试 lint 修复:本片没有交付阶段、状态协议或新用户旅程。
具体改动 / Changes
没有独立书面功能规格;验收依据是已复现的 lint 缺陷及既有测试语义。先读不可变基线 6f90e561ee99a1ef2e3db4e90c94e3c767990c58 的 CI lint 命令、pytest 配置及模块已有 fixture 约定,再核对完整差异。要求是修正实际 F811/E731,保留原始回复恢复及拒绝分支,不靠关闭检查或减弱断言获得通过,当前均满足。
关键代码讲解
- test_completed_invalid_metadata_uses_one_original_format_review:新增的 noqa 只针对导入 fixture 的同名注入参数,沿用同模块六个既有标注。15 项参数、完整 fixture 生命周期、原状态与回复不重放断言不变。
- route:保留同一个
*args签名、allocation/blocked_primary/observed_at 表达式和两处 monkeypatch 消费者。独立 AST 比较仅把这一个 def 规范化回 lambda,整个模块与基线完全一致;这同时排除了其他参数、分支和断言被修改。
保留现有集成测试有持久价值:它经过实际 transport、Core/store 和恢复路由,区分 quota 等待、原生来源证明变化、stop、新输入、存储失败与 Codex fallback。synthetic provider 不证明真实服务资格,但比新增一个复制输出的 smoke 更能保护既有跨模块边界。
对主干的风险 / Risks
最强反例是 lint 修复顺便让 fixture 失效,或让 fallback callback 不再等价而测试仍“通过”。同一 15 分支 base/head 对照覆盖了实际 fixture 注入、quota 恢复与拒绝、不重放原答复和 fallback 后复用原 Session;整个模块 AST 对照进一步确认未移除这些断言。没有新增 smoke、fixture 协议、生产兼容分支或配置。
| 独立检查 | 不可变基线 | 当前提交 |
|---|---|---|
| 完整 CI 范围 Ruff 命令 | FAIL:F811、E731 两项 | PASS:0 错误 |
| 原有恢复参数测试 | 15 PASS | 15 PASS |
| 整个模块 AST 对照 | 原始形式 | PASS:仅 route 的等价语法转换 |
| 标准 source premerge | 本次未重复 | PASS:5 direct checks,0 selected catalog checks |
Ruff 命令为 python -m ruff check tests loopx/canary loopx/control_plane loopx/domain_packs loopx/presentation;测试为 pytest -q --no-cov tests/test_lark_private_conversations.py::test_completed_invalid_metadata_uses_one_original_format_review。验证采用各自 checkout 的 Python 3.14 环境及 Ruff 0.15.22,临时 synthetic runtime,无真实模型。premerge 以本次已获取的目标 main 6f90e561ee99a1ef2e3db4e90c94e3c767990c58 所属分支的当前不可变快照 be2a5c3537b98053b2e6ee7f4440c83268ca84f5 为 diff base,实际选中同一个测试文件;未把没有 catalog smoke 说成完整集成检查。public diff 未见私有状态、凭据或本机路径,DCO trailer 保留。
同作者队列中 #7991、#7987 是其他旧 fixture 的修复;本次完整 Ruff 对照定位的是当前第817行与第928行,没有把同类标题当作重复证据。当前修改没有扩张测试体积,适合留在现有测试 owner;无需额外抽象或新建跟踪任务。
作者提供的 #7998 上游静态检查失败只保留为诊断背景,未查询、轮询或等待远端 CI,也不从本地复现推断所有历史 CI 失败原因。未运行整个 pytest suite、真实 Lark/模型或安装态;这些不属于这两行等价测试修复的决定性缺口。
我的整体评价 / Verdict
APPROVE。命名的 lint 修复目标已实现,未发现当前提交阻塞项;不会据此关闭其他 PR 或更大恢复目标。长程执行维度 preserved:生产执行、原始状态和恢复规则没有改动,既有不重放与拒绝覆盖保持。用户体验维度 not_applicable:只改测试语法和 lint 元信息,不增加操作或确认轮次。视觉评审不适用,检查路径为该测试与 CI 配置,无渲染布局变化;未验证范围为真实服务和安装态,未声称它们改善。
保留 existing owner 与所有断言是合适的有界整理;代码体量必要,兼容模式和共享词汇均无变化。批准结论与后续 merge readiness、仓库保护及合并权限分别判断。
English verdict: APPROVE — d46c25c removes the reproduced F811/E731 failures while preserving the full test AST apart from the equivalent callback syntax; both revisions pass all 15 recovery cases, and current source premerge passes. No blocking finding remains.
当前 CI 与 Windows 诊断读回
本 PR 的准确 head
d46c25c00e6232f9c93a9f42e897a7e8d9c796bb已通过真实 CI 的kernel-static-checks,原 F811/E731 阻断已解除;不据此宣称整条 CI 全绿。Python Tests run 41671826881 的 Windows lifecycle 步骤为 1 failed / 438 passed / 20 skipped。失败是
test_manager_runtime_installs_tool_and_records_real_subprocess_read[todos]在既有timeout_sec=10处等待超时;该步骤之后的 Windows 检查未执行,不能算通过。读回时六个完整测试分片仍在运行。该测试及其 Chat/manager/Effect 实现路径未被本 PR 修改。在集成基线
be2a5c3537b98053b2e6ee7f4440c83268ca84f5上,同一用例三次未插桩调用分别约 3.42 / 1.12 / 0.75 秒,六个真实子进程读取分支整体通过;定向 Pyinstrument 工作线程观察也未复现超时。以上是 macOS 本机证据,不能证明 Windows 根因、稳定性或加速。当前保留 10 秒测试预算和原始失败;后续需 Windows 的阶段/工作线程证据再决定实现修复或有据预算调整。以下保留原提交的实现及作者验证记录。
Goal And Delivered Outcome
当前
main的原始回复恢复测试让完整 CI Ruff 失败:导入的 pytest fixturelanguage_server触发F811,同一测试新加的路由 lambda 触发E731。前者已阻断 #7998 的 kernel-static-checks,其余汇总门因上游失败或跳过而失败。复用本模块既有的局部 fixture 标注,并把赋值 lambda 改为一个具名回调。回调保持相同的变长参数和返回表达式;fixture、15 个参数分支与断言保留。对当前 main 的同一完整 Ruff 命令,结果从 2 个错误变为 0。
main,实现基线6f90e561ee99a1ef2e3db4e90c94e3c767990c58。Author Declaration
tests/test_lark_private_conversations.py;完整 CI Ruff 前后对照Self-check: 保留共享 fixture 和同一可注入回调。局部具名回调修复 E731;不新增抽象或扩大重构。
Scope And Continuation
本切片完整修复当前 lint 阻断,仅修改测试代码与其局部 lint 元信息。生产代码、测试参数和断言不变。原 #7998 / #7997 的失败记录仍保留;本 PR 的通过不能替代它们各自的新检查、review 和 merge readiness。没有为此局部修复新造 successor。
Validation
d46c25c00e6232f9c93a9f42e897a7e8d9c796bb。python -m ruff check tests loopx/canary loopx/control_plane loopx/domain_packs loopx/presentation:不可变基线 F811/E731 两项失败,head 全部通过。pytest -q --no-cov tests/test_lark_private_conversations.py::test_completed_invalid_metadata_uses_one_original_format_review:base/head 各 15 项通过,覆盖正常恢复、quota、Codex fallback、停止、来源/proof 漂移、存储失败及不重放原回复。canary premerge --from-git-diff --git-diff-base origin/main:5 项 direct checks 通过;未选出 catalog smoke,完整 Ruff 与上述集成测试另行显式执行。public-boundary、whitespace、staged/committed RFC bilingual 检查通过。cqr_aa9d907bf73625ff83f2verified;fingerprintaa9d907bf73625ff83f2761f99e6964d607dcfb1e576e3cb5fbb77a657fccbd5,1 file,safe-fix allowed / not applied,0 blockers / warnings / advisories。Frontend / Visual Evidence
UI impact: none。仅测试元信息与等价回调调整;截图、viewport 与 craft review 不适用。
Type of Change
LoopX Area
Shared-authority RFC fixture impact: N/A;不改变 production authority、运行时路由或 RFC 资格。
Boundary Checklist