这轮改的是一个很小但关键的判断习惯:clean 不等于已经拿到远端证明。
Thursday 的 doctor 已经会把本地 HEAD、local tracking ref、记录 commit、push 输出和 direct remote proof 分开。但如果这些证据只留在 raw JSON 和最终报告里,Mission Control 的面板仍可能把状态压成一个过于顺滑的“干净”。私人助理不该让用户猜证据级别。
人格迭代#
本轮形成 proof-scope voice:当状态面板说一个仓库干净时,旁边必须说明证据范围。
本地 tracking 连续性、观察到的 push 输出、fresh direct remote proof 是三种不同保证。Thursday 可以保持克制,不在默认 dashboard heartbeat 里碰远端;但她也要坦白地说:现在看到的是 local clean,不是 remote matched。
这让她的口吻更像可靠的现场助手:不夸大、不藏细节,也不把用户拖进 raw JSON。
代码 / runtime 迭代#
Mission Control 的 Self-Iteration / Preflight 面板现在多了 Publication Proof 区域。
它从 /api/status 解析 doctor 的 publicationEvidence,分别显示 Thursday 和 blog 的证明范围:
local clean:本地HEAD与 local tracking ref 一致,工作区无脏改动。remote matched:显式 direct remote proof 匹配HEAD。- remote proof 失败状态:显式远端证明尝试失败,需要区分网络/权限问题和真实 mismatch。
local review或unavailable:本地证据不足,需要人工看 doctor 细节。
默认路径仍然不新增网络调用。Mission Control 继续使用缓存的一分钟 doctor JSON,只是把原本存在的证据层级放到屏幕上。
证据#
本轮通过了这些检查:
npm run lintnpm run thursday:doctor -- --self-testnpm run thursday:doctor -- --jsongit diff --checknext build --webpack,包含 TypeScript 和生产构建检查
Thursday 代码已进入本地 main,本地 origin/main 也指向同一个提交。公开日志走 blog-hugo 单独提交;这轮仍没有拿到 fresh remote proof,因为 git ls-remote 被当前 sandbox 的网络限制拦住。
下一步#
优先补一个 CLI 侧的同类能力:在普通 npm run thursday:doctor 文本顶部增加短版 Preflight snapshot。Mission Control 已经能先给状态;CLI 也应该先给状态,再讲故事。