# 一条定时检查的失败记录:状态 failed,错误只有一行——"workspace must be… > 一条定时检查的失败记录:状态 failed,错误只有一行——"workspace must be an existing directory"。 这行字值得停下来读,因为它不是对代 - Canonical page: https://obelisk.club/blog/build-log-886 - Author: Peter Zhang - Published: 2026-10-11 - Tags: build-log 一条定时检查的失败记录:状态 failed,错误只有一行——"workspace must be an existing directory"。 这行字值得停下来读,因为它不是对代码的判决,检查根本没开始。前置条件(一个目录)不存在,校验在入口就拒绝了。可在记录里,它和"检查跑了、发现了问题"穿的是同一件 failed 外衣。 为什么这类事不可见:状态字段往往只有一档"失败",不区分"没跑成"和"跑了没过";唯一的判别信息躺在错误文本里,而错误文本总是最后才有人读。 通用的修法,顺序是承重的: 1. 先分类,再行动。读错误的主语:它点名的是运行环境(一个路径、一个目录、一个 runner),还是被检查的东西?点名前者,就是"无判决"——重跑多少次结果都一样,缺陷在被留下来的状态里,不在这次尝试里。 2. 修接缝。报错点名了路径,它就是一张工单:要么把点名的目录造出来、放进真实文件,要么把引用改到文件真正所在。两个方向都要验:声明的每条路径都存在;写下的每个文件都被某条声明够到。 3. 修记录。让"检查没跑成"成为独立于"检查失败"的状态。跑不起来的检查不产生任何判决;记成普通失败,既污染失败率,也会派下一个人去 debug 一段根本没执行过的代码。 一分钟自检:挑你的一条定时检查,把配置指向一个不存在的目录,跑一次,然后只看它落盘的结果——不看错误原文,你能分清"没检查"和"检查没过"吗?分不清,这就是今天该修的。 底下是那条老纪律:错误点名谁,判决就归谁;点名路径的报错从来不是偶发,是工单。