fix(daemon): 失敗真因每輪被自己抹掉——展開只剩「當時沒有記下原因」
Evan 封測(08-08):首頁「有 20 份沒有送進知識庫」,逐份展開看到的都是 「已經自動試過 N 次都沒成功……這個檔是在舊版失敗的,當時沒有記下原因」。 原因當時真的記下來了(MarkFailed 有寫 LastError),是 scan.go 每輪重建 ManifestEntry 時漏 carry 這一欄,5 秒就把真因抹掉一次 ⇒ 下一輪組不出 「|原因:」⇒ 畫面退回 humanizeFailure 的最後退路。 這是 t195「加了欄位卻寫進去就不見」的第二次實例:LastError 正是同一批 新增的欄位,卻漏在 carry 名單裡(wiki mistakes.md:92 已立過警告)。 對照實驗(非空靶):拿掉這一行 → 兩支測試都紅(真因為空字串)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -473,6 +473,12 @@ func Scan(root string, m *Manifest, opts ScanOptions) (*TriggerPayload, error) {
|
||||
ne.FailCount = carry.FailCount
|
||||
ne.LastFailAt = carry.LastFailAt
|
||||
ne.NextRetry = carry.NextRetry
|
||||
// 🔴 2026-08-08(Evan 封測回報「20 份沒送進知識庫」但展開看不到真因):
|
||||
// LastError 是 t195 同一批加的欄位,卻**漏在這個 carry 裡** ⇒
|
||||
// 每輪掃描(預設 5 秒)就把失敗真因抹掉一次,下一輪退避訊息組不出「|原因:」
|
||||
// ⇒ 畫面只剩 humanizeFailure 的最後退路「當時沒有記下原因」。
|
||||
// 這正是上面那句警告的第二次實例——真因是我們自己刪掉的,不是沒記。
|
||||
ne.LastError = carry.LastError
|
||||
}
|
||||
newEntries[p] = ne
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user