Skip to content

v0.89.1 — CI Linux 矩阵清零(35 failed + 4 errors → 0)

Choose a tag to compare

@lza6 lza6 released this 30 Oct 23:54
· 24 commits to main since this release

主题

CI Linux 测试矩阵清零:35 failed + 4 errors → 0,并把两条真被掩盖的安全缺陷修掉。

为什么会有这个版本

v0.89.0 的 quality-checks 已绿,但 ci.yml 的测试矩阵跑在 Linux 上。
一批只在 Linux 暴露、Windows 本机完全看不见的缺陷在那里一直红着
(历史上被当作"存量 flaky"忽略)。本次逐条查实根因后修复。

产品缺陷(8 条)

# 缺陷 严重性
1 FileReadTool 在子线程用 signal.alarm(asyncio.to_thread 下必崩)→ 所有读文件工具失效(9 个测试) P1
2 platform_command 在 Linux 上 os.altsep is None → None in command TypeError(探活/which 全崩) P0
3 循环符号链接 a→b→a 被判安全(stat() ELOOP 被静默吞掉 → 循环检测失效)= 沙箱逃逸面 P0
4 损坏符号链接被判合法(resolve(strict=False) 假成功) P1
5 WorktreeManager.__init__ 对只读路径 mkdir → GitManager("/nonexistent") 构造即抛 P1
6 生成的 config.toml 在 Windows 非法(\p 是保留转义)→ 任何合规 TOML 解析器读不了 P1
7 CLAWD_CONFIG_DIR 被静默忽略(features.json 恒空) P2
8 codex 后端 available() 假 True(裸命令名被当路径校验) P2

测试自身缺陷(5 条)

git commit 无身份(4 ERROR)· rich 按终端宽度断行导致 --resume 子串断言假红 ·
Z:/... 在 Linux 是合法相对路径 · usage --json 取最后一行拿到 stderr 横幅 ·
顶层 import git 污染整文件收集。另 dev extras 补 pathspec。

验证(全部实跑)

  • Linux 容器(python:3.11-slim + git,复刻 ci.yml 矩阵):原失败集 464 passed / 0 failed
  • Windows 本机:全量非 slow 5441 passed / 0 failed(378.51s)
  • 装机 E2E(v0.89.1 安装包):0 失败 —— STEP1 版本/内嵌 host/prompts · STEP2 API×5 + 无 token 403 ·
    STEP2b 真浏览器 UI E2E 32/32 · STEP2c 重启持久化 · STEP3 残留 0 · STEP4 卸载 exit 0 · STEP5 注册表 0
  • 收集 5464 / 0 errors · IMPORT-FAIL 0 · 可达 503 · 生产可达未降
  • 静默吞异常 155 → 154(path_guard 的 except OSError: pass 消除),门禁同步收紧(只降不升)
  • ruff 硬指标(全仓)0 错误

产物

  • Clawd Desktop Setup 0.89.1.exe / ClawdDesktop-Portable-0.89.1.exe(自签名验证管线)
  • 本 tag 同时用于重新触发 ghcr 镜像构建(v0.89.0 的镜像因 opentelemetry-instrumentation-logging>=0.50.0
    这个永远无解的版本约束(PyPI 只有 0.xxb0 预发布版)而构建失败;该约束已修)。

已知边界(如实)

  • 正式 CA 代码签名仍需外部证书 → 已确认保持自签名并列为外部阻塞(SmartScreen 会提示未知发布者)
  • 真实视觉对话仍需支持 image_url 的端点(scripts/probe_vision_endpoint.py 可复现)

附注

  • 本 tag 内容里的 tests/scripts 基线断言(静默吞异常阈值 154)由紧随其后的提交 8ace867 修正;
    该文件只影响仓库内测试门禁,与安装包运行时行为无关。
  • 安装包与镜像均以本 Release 的产物为准。