8baa9170da
pending=0 以前只能證明「現在沒有排隊的」,證明不了「真的做完了」還是 「daemon 早就掛了沒人知道」——因為診斷檔完全沒有時間資訊。 local.engine 不發明第二套判斷法:直接借用首頁狀態列本來就在用的 collectorAlive()/collectorSyncing()/collectorFailure()/describeStatus(), 只是把這些憑據也寫進 JSON(alive/syncing/crash_looping/headline/detail/ last_sync/last_activity_at/seconds_since_last_sync)。last_error 只在 alive=false 或 crash_looping=true 時才附上,避免健康行程的開機橫幅 被誤讀成錯誤訊息。 新增 diagnostics_engine_e2e_test.go:真的建執行檔、真的用 supervisor 拉起子行程、真的 Stop() 停掉它,驗證同一組 progress 數字在兩種情境下 engine.alive 正確反映活/死(永久迴歸測試,零帳號零網路,快且穩定)。 stage(youlin 帳號)實測驗證見 system-dev/wiki/status.md:兩次真實匯出 (活著/停了)JSON 全文、四題考卷重跑 4/4。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>