Repository navigation
v0.89.1 — CI Linux 矩阵清零(35 failed + 4 errors → 0)
主题
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 的产物为准。