Skip to content

v0.58.0 — 验证阶段真实现、覆盖率口径修正、编辑核心修复

Choose a tag to compare

@lza6 lza6 released this 18 Oct 12:56
· 149 commits to main since this release

概述

三个实质变化:验证阶段从“诚实”变成“真的会验证”、修正了长期错误的覆盖率口径、修掉编辑核心两处真实缺陷。

1. 验证阶段真的会验证了

新增 src/workflow/verification_runner.py:

  • 默认命令:<cwd>/tests/ 存在 → python -m pytest -q --tb=short tests
  • CLAWD_VERIFY_COMMAND 可覆盖(Windows 引号/反斜杠已处理)
  • 以退出码判定,保留命令、耗时、输出尾部作为证据
  • passed / failed / timeout / error / not_configured
  • 未配置时返回 not_configured,绝不冒充通过

接线:

  • pipeline.py 的 ralph-verify:passed→SUCCESS,failed/timeout/error→FAILED,not_configured→SKIPPED
  • stages/ralph_verify_stage.py:未通过返回 failed(此前恒返回 completed),未配置时提前结束迭代

2. 所有 pipeline 阶段真实执行时崩溃(P0)

4 个内嵌阶段类都用 self._logger,但基类 PipelineStage 没有该属性 ——
真实执行第一个阶段就 AttributeError。此前只测注册与构造,从未真正跑过阶段。

修复后做了真实端到端验证:构造含 ralph-verify 的 pipeline,实际执行,verified=True。

3. 编辑核心两处真实缺陷

位置 问题 后果
udiff_parser._directly_apply_hunk 从 search_replace 导入不存在的 SearchTextNotUnique(该名字定义在本模块) apply_hunks 的直接应用分支永远 ImportError
search_replace.try_strategy 只捕获 (ValueError, IndexError, OSError);InvalidGitRepositoryError 穿透 非 git 目录下多策略回退矩阵中断,编辑失败

新增 tests/tools_runtime/test_udiff_parser.py(15 用例)。

4. 覆盖率口径修正

文档长期写“~20%”,来自 2026-10-15 的陈旧 coverage.json。全量 pytest --cov=src 实测:

覆盖率  46.15%(25,877 / 56,072 行)

仍低于 fail_under = 60,但 v0.53 目标(≥35%)已达成。
README / 指南 / workflow_status 中的旧数字已更正。

新增 scripts/coverage_gap.py:只对「生产可达」模块看覆盖缺口,
避免给死代码刷覆盖率数字。

5. 部署验证边界

  • 本地安装已验证:pip install -e . 成功;clawd.exe --version / agent keywords / catalog reload 全部实跑通过
  • 容器部署未验证:本机未安装 Docker,docker compose build/up 无法执行;
    docs/MAINTENANCE.md 已写清缺失条件与恢复验证步骤,不冒充已部署
  • 本项目是 CLI/库,无常驻服务进程;“线上热更新”没有可验证的落地路径

验证

pytest tests/ -q                     → 3079 passed / 0 failed
ruff --select F821,F811              → All checks passed
scripts/import_sweep.py              → 0 缺陷(640 模块)
scripts/reachability.py              → 431 生产可达(新增 verification_runner 与 verifier)
真实 pipeline 端到端(ralph-verify)  → SUCCESS, verified=True
pip install -e . + clawd.exe         → 通过

仍未闭合

覆盖率 46.15%(目标 60%)· 死模块 135 · 静默吞异常 101 · CLI 启动剩余 ~20s ·
容器部署与线上热更新(缺 Docker / 部署目标与凭证)。

🤖 Generated with Claude Code