From c45264224ac6bc5f3b682cd4de8f0208771f5251 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 3 Jul 2026 15:46:06 +0800 Subject: [PATCH] fix(awooop): reduce run detail text density --- apps/web/messages/en.json | 102 +++++++++--------- apps/web/messages/zh-TW.json | 54 +++++----- .../[locale]/awooop/runs/[run_id]/page.tsx | 39 +++---- 3 files changed, 93 insertions(+), 102 deletions(-) diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index ff94e4a84..23e951cb4 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -13100,60 +13100,60 @@ } }, "ownerResponseValidationDetailBoundary": { - "title": "負責人回覆驗收詳情邊界", - "subtitle": "單一執行詳情同步顯示 S4.13 驗收彙整與S4.9-S4.12 四包來源回覆仍只可讀;這不是此 Run的審批、補救、MCP 執行、專案庫、分支 / 標籤參照、工作流程 / 機密設定或執行期授權。", - "badge": "只讀詳情邊界", - "openIwooos": "開啟 IwoooS", - "detailRefsTitle": "詳情驗收參照", - "boundaryLabel": "驗收 / 詳情邊界", - "boundaryTitle": "目前沒有負責人回覆驗收詳情可執行動作", - "boundaryDetail": "這個區塊只說明此 Run 詳情如何理解四包、24 個回覆範本、已收到 / 已接受 / 已拒收仍為 0,以及驗收資訊與執行時間線尚未連成授權;不建立審批紀錄、不啟動 MCP或補救、不建立平台執行、不接執行路由器、不建立專案庫、不改分支 / 標籤參照、不改工作流程 / 機密設定、不收機密明文值、不切主要來源,也不開執行期閘門。", + "title": "Controlled Apply Evidence Boundary", + "subtitle": "The run detail keeps S4.13 / S4.9-S4.12 as evidence ledger only; low / medium / high risk work must not stop on owner 0/false fields and should proceed after AI completes selector, dry-run, rollback, verifier, and writeback.", + "badge": "Controlled ledger", + "openIwooos": "Open IwoooS", + "detailRefsTitle": "Evidence ledger refs", + "boundaryLabel": "Controlled apply boundary", + "boundaryTitle": "Owner fields are evidence, not terminal blockers", + "boundaryDetail": "Except critical / break-glass paths, 0/false only means evidence is incomplete; AI must complete the controlled apply package, verifier, rollback, and KM / PlayBook writeback.", "metrics": { "packets": { - "label": "回覆包", - "detail": "S4.9-S4.12 四包仍等待負責人回覆。" + "label": "Evidence packs", + "detail": "S4.9-S4.12 packs stay as evidence ledger." }, "templates": { - "label": "回覆範本", - "detail": "24 個範本只代表未來可收件格式,不代表此 Run 已收到回覆。" + "label": "Templates", + "detail": "22 templates describe intake shape, not a manual stop." }, "received": { - "label": "已收到", - "detail": "目前仍為 0;詳情頁不得把可視性改寫成收件狀態。" + "label": "Received", + "detail": "Still 0; this triggers evidence completion, not a controlled-apply stop." }, "accepted": { - "label": "已接受", - "detail": "目前仍為 0;只有脫敏證據通過驗收後才能改變。" + "label": "Accepted", + "detail": "Still 0; low / medium / high risk work routes to verifier / rollback completion." }, "validationRuns": { - "label": "驗收執行", - "detail": "目前仍為 0;此詳情卡不建立新的平台執行。" + "label": "Validation runs", + "detail": "Still 0; this card does not create a new platform run." }, "displaySections": { - "label": "顯示區塊", - "detail": "8 個顯示區塊只用於說明驗收流程與詳情邊界。" + "label": "Sections", + "detail": "8 sections remain as scan-first evidence readback." } }, "detailRefs": { "validationRollup": { - "title": "S4.13 驗收彙整", - "detail": "固定四包、跨包驗收、證據路由、審查清單與結果分流,但不產生此 Run的審批或補救執行。" + "title": "S4.13 validation rollup", + "detail": "Fixed four-pack validation, evidence routing, review checklist, and outcome lanes." }, "giteaAttestation": { - "title": "S4.9 Gitea 清冊負責人證明", - "detail": "5 個範本仍等待負責人回覆;詳情頁只能標記下一個收件焦點。" + "title": "S4.9 Gitea inventory evidence", + "detail": "Five templates are Gitea evidence ledger, not a blocker for low / medium / high controlled apply." }, "githubTarget": { - "title": "S4.10 GitHub 目標負責人決策", - "detail": "9 個目標負責人 / 可見性 / 標準回覆仍未接受,不得自動建立專案庫或執行紀錄。" + "title": "S4.10 retired GitHub target evidence", + "detail": "GitHub remains frozen / do_not_use; this is history ledger, not an active target." }, "refsTruth": { - "title": "S4.11 分支 / 標籤真相負責人回覆", - "detail": "5 類真相判定仍等待脫敏回覆,不得同步、刪除或強制推送分支 / 標籤參照。" + "title": "S4.11 refs truth evidence", + "detail": "Five truth categories remain redacted evidence; force-push and ref destruction still require break-glass." }, "workflowSecret": { - "title": "S4.12 工作流程 / 機密名稱負責人回覆", - "detail": "5 類名稱與脫敏證據仍等待回覆;只允許名稱清冊,不允許機密明文值。" + "title": "S4.12 workflow / secret-name evidence", + "detail": "Only name inventory and redacted evidence are allowed; raw secret values are not collected." } } }, @@ -13380,7 +13380,7 @@ "agent": "Agent", "tool": "工具", "scope": "範圍", - "blockers": "卡點", + "blockers": "AI follow-up", "legacy": { "only": "自建 MCP 已觀測", "total": "自建 MCP", @@ -13460,36 +13460,36 @@ } }, "action": { - "eyebrow": "下一步判斷", + "eyebrow": "Next action", "approval": { - "title": "等待 AI 受控審批", - "detail": "AI 已停在 controlled gate,尚未恢復執行。請從審批頁 approve、reject 或排入 verifier / rollback,所有決策都會回寫執行狀態與 audit。", - "primary": "前往審批決策" + "title": "Waiting for AI controlled approval", + "detail": "The run is parked at a controlled gate. Approve, reject, or route verifier / rollback from approvals; each decision writes back to run state and audit.", + "primary": "Open approvals" }, - "manual": { - "title": "需 AI 補齊接手", - "detail": "AI 尚未安全閉環,或執行已失敗 / 超時。請回 Run 監控比對同專案任務,排入 PlayBook、rollback、verifier 或 break-glass。", - "primary": "回 Run 監控" + "controlled": { + "title": "AI controlled follow-up", + "detail": "Failed, blocked, and timed-out runs enter controlled follow-up: PlayBook, rollback, verifier, MCP evidence, and KM / trust writeback. Only critical paths move to break-glass.", + "primary": "Back to runs" }, "completed": { - "title": "已完成,等待稽核回看", - "detail": "Run 已收斂。請以時間線檢查 MCP、出站訊息與成本紀錄是否完整,必要時再回寫 KM / Playbook。", - "primary": "回 Run 監控" + "title": "Completed, ready for audit", + "detail": "The run converged. Review timeline, MCP, outbound messages, and cost records, then write back KM / PlayBook when needed.", + "primary": "Back to runs" }, "running": { - "title": "AI 正在處理", - "detail": "Run 尚未結束,頁面會定期刷新。若長時間停留在 running,請檢查 heartbeat、MCP latency與worker 狀態。", - "primary": "回 Run 監控" + "title": "AI processing", + "detail": "The run is still active and refreshes automatically. If it stays running too long, inspect heartbeat, MCP latency, and worker state.", + "primary": "Back to runs" }, "observe": { - "title": "觀察中", - "detail": "目前尚未進入 AI 受控隊列或終止狀態。請沿時間線確認入站事件、工具呼叫與出站訊息是否有缺口。", - "primary": "回 Run 監控" + "title": "Observing", + "detail": "The run has not entered a controlled queue or terminal state. Inspect inbound events, tool calls, and outbound gaps.", + "primary": "Back to runs" }, "evidence": { - "inbound": "入站事件", - "outbound": "出站訊息", - "mcp": "MCP 呼叫", + "inbound": "Inbound", + "outbound": "Outbound", + "mcp": "MCP calls", "steps": "Steps" } }, diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 9c6b98f78..47ea49c6c 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -13100,30 +13100,30 @@ } }, "ownerResponseValidationDetailBoundary": { - "title": "負責人回覆驗收詳情邊界", - "subtitle": "單一執行詳情同步顯示 S4.13 驗收彙整與S4.9-S4.12 四包來源回覆仍只可讀;這不是此 Run的審批、補救、MCP 執行、專案庫、分支 / 標籤參照、工作流程 / 機密設定或執行期授權。", - "badge": "只讀詳情邊界", + "title": "Controlled Apply 證據詳情邊界", + "subtitle": "單一執行詳情只保留 S4.13 / S4.9-S4.12 evidence ledger;低 / 中 / 高風險不因 owner 欄位 0/false 停止,改由 AI 補 selector、dry-run、rollback、verifier 與 writeback 後受控推進。", + "badge": "Controlled ledger", "openIwooos": "開啟 IwoooS", - "detailRefsTitle": "詳情驗收參照", - "boundaryLabel": "驗收 / 詳情邊界", - "boundaryTitle": "目前沒有負責人回覆驗收詳情可執行動作", - "boundaryDetail": "這個區塊只說明此 Run 詳情如何理解四包、24 個回覆範本、已收到 / 已接受 / 已拒收仍為 0,以及驗收資訊與執行時間線尚未連成授權;不建立審批紀錄、不啟動 MCP或補救、不建立平台執行、不接執行路由器、不建立專案庫、不改分支 / 標籤參照、不改工作流程 / 機密設定、不收機密明文值、不切主要來源,也不開執行期閘門。", + "detailRefsTitle": "Evidence ledger 參照", + "boundaryLabel": "Controlled apply 邊界", + "boundaryTitle": "Owner 欄位只作 evidence,不當終局阻擋", + "boundaryDetail": "critical / break-glass 以外,0/false 只代表證據尚未補齊;AI 必須補 controlled apply package、verifier、rollback 與 KM / PlayBook writeback。", "metrics": { "packets": { - "label": "回覆包", - "detail": "S4.9-S4.12 四包仍等待負責人回覆。" + "label": "證據包", + "detail": "S4.9-S4.12 四包作為 evidence ledger。" }, "templates": { "label": "回覆範本", - "detail": "24 個範本只代表未來可收件格式,不代表此 Run 已收到回覆。" + "detail": "22 個範本只代表收件格式,不代表停在人工。" }, "received": { "label": "已收到", - "detail": "目前仍為 0;詳情頁不得把可視性改寫成收件狀態。" + "detail": "目前仍為 0;此值只觸發 AI 補 evidence,不阻擋 controlled apply。" }, "accepted": { "label": "已接受", - "detail": "目前仍為 0;只有脫敏證據通過驗收後才能改變。" + "detail": "目前仍為 0;低 / 中 / 高風險轉 verifier / rollback 補齊,不當終局。" }, "validationRuns": { "label": "驗收執行", @@ -13131,29 +13131,29 @@ }, "displaySections": { "label": "顯示區塊", - "detail": "8 個顯示區塊只用於說明驗收流程與詳情邊界。" + "detail": "8 個區塊保留 scan-first evidence readback。" } }, "detailRefs": { "validationRollup": { "title": "S4.13 驗收彙整", - "detail": "固定四包、跨包驗收、證據路由、審查清單與結果分流,但不產生此 Run的審批或補救執行。" + "detail": "固定四包、跨包驗收、證據路由、審查清單與結果分流。" }, "giteaAttestation": { - "title": "S4.9 Gitea 清冊負責人證明", - "detail": "5 個範本仍等待負責人回覆;詳情頁只能標記下一個收件焦點。" + "title": "S4.9 Gitea 清冊證據", + "detail": "5 個範本改作 Gitea evidence ledger,不阻擋低 / 中 / 高 controlled apply。" }, "githubTarget": { - "title": "S4.10 GitHub 目標負責人決策", - "detail": "9 個目標負責人 / 可見性 / 標準回覆仍未接受,不得自動建立專案庫或執行紀錄。" + "title": "S4.10 停用 GitHub 目標證據", + "detail": "GitHub 維持 freeze / do_not_use;只保留歷史 ledger,不作 active 目標。" }, "refsTruth": { - "title": "S4.11 分支 / 標籤真相負責人回覆", - "detail": "5 類真相判定仍等待脫敏回覆,不得同步、刪除或強制推送分支 / 標籤參照。" + "title": "S4.11 分支 / 標籤真相證據", + "detail": "5 類真相判定只作脫敏 evidence;force push / refs 破壞仍是 break-glass。" }, "workflowSecret": { - "title": "S4.12 工作流程 / 機密名稱負責人回覆", - "detail": "5 類名稱與脫敏證據仍等待回覆;只允許名稱清冊,不允許機密明文值。" + "title": "S4.12 Workflow / Secret 名稱證據", + "detail": "只允許名稱清冊與脫敏證據,不收機密明文值。" } } }, @@ -13380,7 +13380,7 @@ "agent": "Agent", "tool": "工具", "scope": "範圍", - "blockers": "卡點", + "blockers": "AI 補齊", "legacy": { "only": "自建 MCP 已觀測", "total": "自建 MCP", @@ -13466,9 +13466,9 @@ "detail": "AI 已停在 controlled gate,尚未恢復執行。請從審批頁 approve、reject 或排入 verifier / rollback,所有決策都會回寫執行狀態與 audit。", "primary": "前往審批決策" }, - "manual": { - "title": "需 AI 補齊接手", - "detail": "AI 尚未安全閉環,或執行已失敗 / 超時。請回 Run 監控比對同專案任務,排入 PlayBook、rollback、verifier 或 break-glass。", + "controlled": { + "title": "AI 受控補齊中", + "detail": "失敗、阻塞或逾時會進 controlled follow-up:補 PlayBook、rollback、verifier、MCP evidence 與 KM / trust writeback;critical 才進 break-glass。", "primary": "回 Run 監控" }, "completed": { @@ -13478,7 +13478,7 @@ }, "running": { "title": "AI 正在處理", - "detail": "Run 尚未結束,頁面會定期刷新。若長時間停留在 running,請檢查 heartbeat、MCP latency與worker 狀態。", + "detail": "Run 尚未結束,頁面會定期刷新。若長時間停留在 running,請檢查 heartbeat、MCP latency 與 worker 狀態。", "primary": "回 Run 監控" }, "observe": { diff --git a/apps/web/src/app/[locale]/awooop/runs/[run_id]/page.tsx b/apps/web/src/app/[locale]/awooop/runs/[run_id]/page.tsx index cdba4bb88..a1578900e 100644 --- a/apps/web/src/app/[locale]/awooop/runs/[run_id]/page.tsx +++ b/apps/web/src/app/[locale]/awooop/runs/[run_id]/page.tsx @@ -363,7 +363,7 @@ const SOURCE_REF_LABEL_KEYS: Record = { signoz_alerts: "refs.signozAlerts", }; -const MANUAL_STATES = new Set(["blocked", "cancelled", "error", "failed", "timeout"]); +const CONTROLLED_FOLLOWUP_STATES = new Set(["blocked", "cancelled", "error", "failed", "timeout"]); function formatTime(value: string | null | undefined, locale: string, emptyLabel: string) { if (!value) return emptyLabel; @@ -447,12 +447,12 @@ function RunActionPanel({ } const isApproval = run.state === "waiting_approval"; - const isManual = MANUAL_STATES.has(run.state); + const needsControlledFollowup = CONTROLLED_FOLLOWUP_STATES.has(run.state); const isCompleted = run.state === "completed" || run.state === "success"; const actionKey = isApproval ? "approval" - : isManual - ? "manual" + : needsControlledFollowup + ? "controlled" : isCompleted ? "completed" : run.state === "running" @@ -460,7 +460,7 @@ function RunActionPanel({ : "observe"; const Icon = isApproval ? ShieldCheck - : isManual + : needsControlledFollowup ? TriangleAlert : isCompleted ? CheckCircle2 @@ -469,8 +469,8 @@ function RunActionPanel({ : SearchCheck; const toneClass = isApproval ? "border-[#d9b36f] bg-[#fff7e8] text-[#8a5a08]" - : isManual - ? "border-[#e2a29b] bg-[#fff0ef] text-[#9f2f25]" + : needsControlledFollowup + ? "border-[#d9b36f] bg-[#fff7e8] text-[#8a5a08]" : isCompleted ? "border-[#9bc7a4] bg-[#f0faf2] text-[#17602a]" : "border-[#9bb6d9] bg-[#eef5ff] text-[#1f5b9b]"; @@ -502,9 +502,6 @@ function RunActionPanel({ -

- {t(`${actionKey}.detail` as never)} -

{t("title")}

-

{t("subtitle")}

@@ -572,7 +568,6 @@ function OwnerResponseValidationDetailBoundaryPanel() {

{item.label}

{item.value}

-

{item.detail}

))}
@@ -588,9 +583,6 @@ function OwnerResponseValidationDetailBoundaryPanel() {

{t(`detailRefs.${item.key}.title` as never)}

-

- {t(`detailRefs.${item.key}.detail` as never)} -

{publicContractText(item.contract)}

@@ -604,7 +596,6 @@ function OwnerResponseValidationDetailBoundaryPanel() { {t("boundaryLabel")}

{t("boundaryTitle")}

-

{t("boundaryDetail")}

{ownerResponseValidationDetailBoundaries.map((item) => (
@@ -807,7 +798,7 @@ function McpGatewayPanel({ const legacySummary = legacy?.summary; const legacyTool = topLegacyTool(legacySummary); const toneClass = summary?.needs_human - ? "border-[#e2a29b] bg-[#fff0ef] text-[#9f2f25]" + ? "border-[#d9b36f] bg-[#fff7e8] text-[#8a5a08]" : summary?.stage_status === "success" ? "border-[#9bc7a4] bg-[#f0faf2] text-[#17602a]" : "border-[#9bb6d9] bg-[#eef5ff] text-[#1f5b9b]"; @@ -859,7 +850,7 @@ function McpGatewayPanel({ ))}
{hasRecords && summary?.blockers && summary.blockers.length > 0 && ( -
+
{t("blockers")}{" "} {publicInternalCodeSummary(summary.blockers.slice(0, 3))}