T-2802 — Background Work 狀態可辨識:執行中/待交回/已遺失

2026-08-10 產出(已依用戶 Round 1 裁決改版)。涵蓋 before/after 雙欄對照、conv 側欄狀態色票(5 → 6)、ENDED 列的兩值交付 chip(三種嚴重度色)、第四顆燈新增 wait 態,含 default/hover 兩態。純預覽,不動 renderer/main/

用戶裁決(逐字)
Q1「我只要 EXEC 停止 等待 BACKGROUND 就是紫色狀態、失敗且沒有回覆 EXEC 就是還送狀態」
Q2「這種在我眼裡都是失敗」
→ 採納成:紫=我還在等(不管是子行程還活著、還是結論還沒回到 EXEC)、紅=結束了而且回不來了綠=全部交回。列上的交付 chip 只有兩個字面值,不做三值細分。

動畫在此頁真的會動:紫色 pill 的呼吸Before 欄裡 HANDOFF 燈的閃爍都是產品現行行為的複刻,用來說明「只靠動畫分辨」為什麼不可行。

1 · conv 側欄:同一批資料,兩種畫法

Before — 現況

15e75d1bc…
takeover sandbox7d6169b5…
GBa87b609b…
調查2fa0ac99a…
調查c8fff2bd…
架構f5dbb694…
shouldertap970f4924…
G838df4f5bc…
7 列同色。實測這 7 個 conversation 的 RUNNING 全部是 0——紫色代表的其實是「歷史上跑壞過東西」,而不是「現在有事」。只要壞過一次,除非手動清列,永遠退不掉。

After — 本單提案

15e75d1bc…子行程還活著
takeover sandbox7d6169b5…結論還沒回到 EXEC
GBa87b609b…全部交回
調查2fa0ac99a…全部交回
調查c8fff2bd…有結論回不來了
架構f5dbb694…
shouldertap970f4924…結論還沒回到 EXEC
G838df4f5bc…結論還沒回到 EXEC
同一份 durable 資料,三種顏色三種處置:紫=繼續等、紅=要去看、綠=沒事了。灰字只是本頁註解,產品不加這段文字。第一列(子行程還活著)保留呼吸動畫,其餘紫色為靜態——但即使完全看不到動畫,紫/紅/綠仍分得出來。

2 · conv 側欄狀態色票(Settings → Appearance 由 5 列變 6 列)

state預設色判準(前景 turn idle 後才往下走)motion
running#F4D48F前景 turn streaming(沿用,不改)
auto#D97706Auto chain 執行中(沿用,不改)
background#7C6CE7改判準:至少一列還沒回到 EXEC——子行程存活,已結束但 delivery 在途有活子行程 → pulse
否則 static
attention #DC2626沒有任何一列在等,且至少一列已結束且不會回到 EXECstatic
complete#04B84C全部結束且全部交回(不再因為 exit code 非 0 就失格)static
active#525252沒有任何可見 host rowstatic

優先序 auto > running > background > attention > complete > active關鍵改動attention 的判準從「process 結果不漂亮」改成「結論沒有、也不會回到這個對話」。一個 exit 1 但結論已經送達的 job,對話裡已經有那則訊息了,就不該再佔用警示色——這才是紫色永遠退不掉的根因。

3 · ENDED 列:狀態欄 + 兩值交付 chip

Before — 現況(附件截圖 2 複刻)

BACKGROUND WORK全部已結束
RUNNING0
沒有執行中的背景工作
ENDED3
T-2786 resumed AC9 wait for durable task_enrolled已中斷01:26 STARTRUNSAVEHANDOFF
T-2786 AC9 wait for enrollment or typed terminal已暫停45:02 STARTRUNSAVEHANDOFF
T-2786 AC9 wait for nested-git enrollment已暫停10:02 STARTRUNSAVEHANDOFF
卡片說「全部已結束」,同一張卡片有兩顆 HANDOFF 燈在閃「機器正在做」。第 1 列的 producer 早就死了(永遠不會交回),第 3 列的信封安穩躺在 inbox(下一輪就會出現)——兩者畫成同一顆閃燈。「已中斷/已暫停」也完全沒回答「結論到底回來了沒」。

After — 本單提案

BACKGROUND WORK1 個等待交回
RUNNING0
沒有執行中的背景工作
ENDED3
T-2786 resumed AC9 wait for durable task_enrolled已中斷未交回01:26 STARTRUNSAVEHANDOFF
T-2786 AC9 wait for enrollment or typed terminal已暫停已交回45:02 STARTRUNSAVEHANDOFF
T-2786 AC9 wait for nested-git enrollment已暫停未交回10:02 STARTRUNSAVEHANDOFF
狀態欄仍然只講 process 結果(T-2800 裁決不變);交付結果是另一個獨立標示的 chip,兩件事分開講、不混成一句。chip 文字只有「已交回/未交回」兩值(用戶:「這種在我眼裡都是失敗」),嚴重度差異只走顏色:琥珀=還可能回來、紅=回不來了。ENDED 區不再有任何閃燈。

4 · 交付 chip 的兩值三色(default / hover)

default
已完成已交回   已暫停未交回   已中斷未交回
hover(整列底色變化,chip 本身不變形)
已完成已交回   已暫停未交回   已中斷未交回

chip 不是可按的元件,因此沒有 focus/disabled 態;hover 只跟隨列的既有 hover 底色,不另外加互動樣式。

5 · 第四顆燈:新增一個 wait 態(其餘沿用)

HANDOFF
queue · 尚未輪到(沿用)
HANDOFF
run · 機器正在做,會閃(本單後不再出現在 ENDED 區
HANDOFF
wait · 球在使用者那邊,不閃
HANDOFF
done · 已交回(沿用)
HANDOFF
fail · 不會再交回(沿用,涵蓋「交付失敗」與「從未嘗試」)

語意分界:閃=機器正在動不閃的琥珀=球在你這邊紅=球沒了。現況把後兩者都畫成第一種。

6 · 詞彙修正

i18n key現值(zh-TW)改為理由
backgroundWork.status.orphaned已中斷已中斷不變
backgroundWork.status.interrupted已中斷狀態不明這是 enum 外的 fallback;與 orphaned 逐字相同等於把「host 知道它死了」和「host 不知道發生什麼」畫上等號
backgroundWork.status.checkpoint已暫停已暫停不變(對外用語)
backgroundWork.processStatus.checkpoint已保存檢查點已暫停(檢查點)同一列收合/展開必須是同一個詞
backgroundWork.handoff.handed 已交回 / Handed backchip
backgroundWork.handoff.notHanded 未交回 / Not handed backchip
backgroundWork.stageState.wait 等待交回 / waiting to hand back第四顆燈 hover
backgroundWork.summary.waiting {count} 個等待交回 / {count} waiting to hand back卡片標題摘要
backgroundWork.summary.lost {count} 個未交回 / {count} not handed back卡片標題摘要

依專案 i18n 分類規範:上表全屬 B 類(說明/狀態),en 填英文、zh-TW 填中文;區段名 RUNNINGENDED 與按鈕 Clear ended 屬 A 類,兩個 bundle 都維持英文(現況已正確,本單不動)。