From 7c511f1cfa90003342252c04e123fb7c29038e6b Mon Sep 17 00:00:00 2001
From: Your Name
Date: Fri, 3 Jul 2026 15:18:51 +0800
Subject: [PATCH] fix(awooop): reduce approvals text density
---
apps/web/messages/en.json | 54 +++++++++----------
apps/web/messages/zh-TW.json | 54 +++++++++----------
.../app/[locale]/awooop/approvals/page.tsx | 51 ++++++------------
3 files changed, 71 insertions(+), 88 deletions(-)
diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json
index 122c01eb8..636615308 100644
--- a/apps/web/messages/en.json
+++ b/apps/web/messages/en.json
@@ -10906,7 +10906,6 @@
"mcpCount": "MCP 調查 {count} 次",
"route": "MCP:{route}",
"emptyShort": "尚未連到 AI 證據",
- "manualGate": "下一步:AI 受控決策",
"filters": {
"label": "AI 證據篩選",
"all": "所有 AI 證據",
@@ -10950,7 +10949,8 @@
"noEvidenceDetail": "列表尚未連到 ADR-100 乾跑或MCP evidence",
"approvalReadOnlyDetail": "審批前已有只讀補救證據可回看",
"approvalNoEvidenceDetail": "審批前仍缺 AI 證據,需進 執行時間線 檢查"
- }
+ },
+ "controlledGate": "下一步:AI 受控決策"
},
"sourceDossierCoverage": {
"title": "來源事件覆蓋率",
@@ -12680,9 +12680,9 @@
}
},
"badges": {
- "humanGate": "AI 受控隊列",
"gate5Projection": "Gate 5 投影",
- "executorHandoffPending": "等待 executor handoff"
+ "executorHandoffPending": "等待 executor handoff",
+ "controlledGate": "AI 受控隊列"
},
"assetLedger": {
"column": "資產沉澱",
@@ -12848,25 +12848,25 @@
}
},
"githubPrimaryReadinessGate": {
- "title": "GitHub 主要來源就緒度審批邊界",
- "subtitle": "審批佇列只顯示 GitHub 主要來源前置負責人回覆缺口;這不是 GitHub 主要來源批准,也不會建立專案庫、改分支 / 標籤參照、收機密明文值或停用 Gitea。",
- "badge": "只讀審批邊界",
- "responseLanesTitle": "負責人回覆路線",
- "boundaryLabel": "GitHub 主要來源邊界",
- "boundaryTitle": "目前沒有可批准的主要來源切換",
- "boundaryDetail": "這個面板只把 S4.9-S4.12的收件順序放到審批視野;所有回覆仍為已收到=0 / 已接受=0,不建立審批紀錄、不切 GitHub 主要來源、不改 Gitea 主要來源,也不觸發執行期閘門。",
+ "title": "Source Control Freeze 審批邊界",
+ "subtitle": "審批佇列只保留歷史 source-control freeze 與 Gitea SSH truth 證據;GitHub 維持 stopped / do_not_use,不作為 active 審批目標。",
+ "badge": "歷史證據邊界",
+ "responseLanesTitle": "Freeze / Gitea 證據路線",
+ "boundaryLabel": "Source-control 邊界",
+ "boundaryTitle": "目前沒有可批准的 GitHub 恢復動作",
+ "boundaryDetail": "這個面板只把 S4.9-S4.12 的歷史收件順序放到審批視野;不建立審批紀錄、不切 GitHub primary、不改 Gitea 主要來源,也不觸發執行期閘門。",
"openIwooos": "開啟 IwoooS",
"metrics": {
"giteaOwner": "Gitea 負責人",
"giteaOwnerDetail": "S4.9的 5 個負責人證明項目仍未收到 / 接受。",
- "githubTargetOwner": "GitHub 目標負責人",
- "githubTargetOwnerDetail": "S4.10的 9 個目標負責人 / 可見性 / 標準回覆仍未接受。",
+ "githubTargetOwner": "Freeze target evidence",
+ "githubTargetOwnerDetail": "S4.10 只保留為 GitHub freeze / do_not_use 背景證據,不建立專案庫或變更可見性。",
"refsTruth": "分支 / 標籤真相",
"refsTruthDetail": "S4.11的 5 類分支 / 標籤真相負責人回覆仍未接受。",
"workflowSecretNames": "工作流程 / 機密名稱",
"workflowSecretNamesDetail": "S4.12的 5 類工作流程 / 機密名稱負責人回覆仍未接受。",
- "primaryReady": "主要來源就緒數",
- "primaryReadyDetail": "仍為 0;審批可見不等於可切主要來源。"
+ "primaryReady": "GitHub active target",
+ "primaryReadyDetail": "仍為 0;審批可見不等於可切主要來源或恢復 GitHub mirror。"
},
"responseLanes": {
"giteaOwnerAttestation": {
@@ -12874,12 +12874,12 @@
"detail": "先確認公開來源限定 / 本地差異、組織 / 使用者端點、gateway-adjacent來源、標準負責人與舊版處置。"
},
"githubTargetOwner": {
- "title": "GitHub 目標負責人決策",
- "detail": "再確認 9 個範圍內目標的負責人、可見性與標準目標,不自動建立專案庫。"
+ "title": "停用 GitHub 目標證據",
+ "detail": "保留目標、可見性與標準回覆作為 freeze ledger,不自動建立專案庫。"
},
"refsTruthOwner": {
"title": "分支 / 標籤真相負責人回覆",
- "detail": "接著確認主要 / 開發分支真相、棄用漂移、發布標籤與僅存在於 GitHub的參照,不同步、刪除或強制推送。"
+ "detail": "確認主要 / 開發分支真相、棄用漂移與發布標籤;Gitea/Gitea-SSH 是目前 source-control truth,不同步、刪除或強制推送。"
},
"workflowSecretOwner": {
"title": "工作流程 / 機密名稱負責人回覆",
@@ -12888,13 +12888,13 @@
}
},
"ownerResponseValidationBoundary": {
- "title": "負責人回覆驗收只讀審查邊界",
- "subtitle": "審批佇列同步顯示 S4.13 驗收彙整與S4.9-S4.12 四個來源收件包;這不是已收到、已接受、審批紀錄、專案庫動作、分支 / 標籤參照動作、工作流程 / 機密設定動作或執行期授權。",
+ "title": "Controlled Apply 證據驗收邊界",
+ "subtitle": "審批佇列同步顯示 S4.13 與 S4.9-S4.12 歷史 evidence ledger;低 / 中 / 高風險不因 owner 欄位 0/false 停止,改由 AI 補 selector、dry-run、rollback、verifier 與 writeback 後受控推進。",
"badge": "只讀驗收邊界",
"reviewRefsTitle": "驗收與來源收件參照",
- "boundaryLabel": "不可批准邊界",
- "boundaryTitle": "目前沒有可建立的審批紀錄",
- "boundaryDetail": "這個面板只顯示四包、24 個回覆範本、已收到 / 已接受 / 已拒收都仍為 0,以及 8 個可顯示區塊;不建立審批紀錄、不建立專案庫、不改分支 / 標籤參照、不改工作流程 / 機密設定、不收機密明文值、不切主要來源,也不開執行期閘門。",
+ "boundaryLabel": "Controlled apply 邊界",
+ "boundaryTitle": "Owner 欄位只作 evidence,不當終局阻擋",
+ "boundaryDetail": "這個面板只顯示四包、範本、已收到 / 已接受 / 已拒收都仍為 0,以及可顯示區塊;critical / break-glass 以外,不得把 0/false 當成停止實作理由。",
"openIwooos": "開啟 IwoooS",
"metrics": {
"packets": "回覆包",
@@ -12904,7 +12904,7 @@
"received": "已收到",
"receivedDetail": "目前仍為 0;審批佇列可見不得改寫收件狀態。",
"accepted": "已接受",
- "acceptedDetail": "目前仍為 0;只有脫敏證據通過驗收後才能改變。",
+ "acceptedDetail": "目前仍為 0;對低 / 中 / 高風險,這只觸發 AI 補 verifier / rollback,不阻擋 controlled apply。",
"rejected": "已拒收",
"rejectedDetail": "目前仍為 0;未進入受控驗收前不得產生拒收結果。",
"displaySections": "顯示區塊",
@@ -12922,9 +12922,9 @@
"contract": "Gitea 清冊負責人證明"
},
"githubTarget": {
- "title": "S4.10 GitHub 目標負責人決策",
- "detail": "9 個目標負責人 / 可見性 / 標準回覆仍未接受,不得自動建立專案庫。",
- "contract": "GitHub 目標負責人決策"
+ "title": "S4.10 停用 GitHub 目標證據",
+ "detail": "目標負責人 / 可見性 / 標準回覆只作 freeze ledger,不得自動建立專案庫。",
+ "contract": "停用 GitHub 目標證據"
},
"refsTruth": {
"title": "S4.11 分支 / 標籤真相負責人回覆",
diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json
index 3708553aa..17a2c2c41 100644
--- a/apps/web/messages/zh-TW.json
+++ b/apps/web/messages/zh-TW.json
@@ -10906,7 +10906,6 @@
"mcpCount": "MCP 調查 {count} 次",
"route": "MCP:{route}",
"emptyShort": "尚未連到 AI 證據",
- "manualGate": "下一步:AI 受控決策",
"filters": {
"label": "AI 證據篩選",
"all": "所有 AI 證據",
@@ -10950,7 +10949,8 @@
"noEvidenceDetail": "列表尚未連到 ADR-100 乾跑或MCP evidence",
"approvalReadOnlyDetail": "審批前已有只讀補救證據可回看",
"approvalNoEvidenceDetail": "審批前仍缺 AI 證據,需進 執行時間線 檢查"
- }
+ },
+ "controlledGate": "下一步:AI 受控決策"
},
"sourceDossierCoverage": {
"title": "來源事件覆蓋率",
@@ -12680,9 +12680,9 @@
}
},
"badges": {
- "humanGate": "AI 受控隊列",
"gate5Projection": "Gate 5 投影",
- "executorHandoffPending": "等待 executor handoff"
+ "executorHandoffPending": "等待 executor handoff",
+ "controlledGate": "AI 受控隊列"
},
"assetLedger": {
"column": "資產沉澱",
@@ -12848,25 +12848,25 @@
}
},
"githubPrimaryReadinessGate": {
- "title": "GitHub 主要來源就緒度審批邊界",
- "subtitle": "審批佇列只顯示 GitHub 主要來源前置負責人回覆缺口;這不是 GitHub 主要來源批准,也不會建立專案庫、改分支 / 標籤參照、收機密明文值或停用 Gitea。",
- "badge": "只讀審批邊界",
- "responseLanesTitle": "負責人回覆路線",
- "boundaryLabel": "GitHub 主要來源邊界",
- "boundaryTitle": "目前沒有可批准的主要來源切換",
- "boundaryDetail": "這個面板只把 S4.9-S4.12的收件順序放到審批視野;所有回覆仍為已收到=0 / 已接受=0,不建立審批紀錄、不切 GitHub 主要來源、不改 Gitea 主要來源,也不觸發執行期閘門。",
+ "title": "Source Control Freeze 審批邊界",
+ "subtitle": "審批佇列只保留歷史 source-control freeze 與 Gitea SSH truth 證據;GitHub 維持 stopped / do_not_use,不作為 active 審批目標。",
+ "badge": "歷史證據邊界",
+ "responseLanesTitle": "Freeze / Gitea 證據路線",
+ "boundaryLabel": "Source-control 邊界",
+ "boundaryTitle": "目前沒有可批准的 GitHub 恢復動作",
+ "boundaryDetail": "這個面板只把 S4.9-S4.12 的歷史收件順序放到審批視野;不建立審批紀錄、不切 GitHub primary、不改 Gitea 主要來源,也不觸發執行期閘門。",
"openIwooos": "開啟 IwoooS",
"metrics": {
"giteaOwner": "Gitea 負責人",
"giteaOwnerDetail": "S4.9的 5 個負責人證明項目仍未收到 / 接受。",
- "githubTargetOwner": "GitHub 目標負責人",
- "githubTargetOwnerDetail": "S4.10的 9 個目標負責人 / 可見性 / 標準回覆仍未接受。",
+ "githubTargetOwner": "Freeze target evidence",
+ "githubTargetOwnerDetail": "S4.10 只保留為 GitHub freeze / do_not_use 背景證據,不建立專案庫或變更可見性。",
"refsTruth": "分支 / 標籤真相",
"refsTruthDetail": "S4.11的 5 類分支 / 標籤真相負責人回覆仍未接受。",
"workflowSecretNames": "工作流程 / 機密名稱",
"workflowSecretNamesDetail": "S4.12的 5 類工作流程 / 機密名稱負責人回覆仍未接受。",
- "primaryReady": "主要來源就緒數",
- "primaryReadyDetail": "仍為 0;審批可見不等於可切主要來源。"
+ "primaryReady": "GitHub active target",
+ "primaryReadyDetail": "仍為 0;審批可見不等於可切主要來源或恢復 GitHub mirror。"
},
"responseLanes": {
"giteaOwnerAttestation": {
@@ -12874,12 +12874,12 @@
"detail": "先確認公開來源限定 / 本地差異、組織 / 使用者端點、gateway-adjacent來源、標準負責人與舊版處置。"
},
"githubTargetOwner": {
- "title": "GitHub 目標負責人決策",
- "detail": "再確認 9 個範圍內目標的負責人、可見性與標準目標,不自動建立專案庫。"
+ "title": "停用 GitHub 目標證據",
+ "detail": "保留目標、可見性與標準回覆作為 freeze ledger,不自動建立專案庫。"
},
"refsTruthOwner": {
"title": "分支 / 標籤真相負責人回覆",
- "detail": "接著確認主要 / 開發分支真相、棄用漂移、發布標籤與僅存在於 GitHub的參照,不同步、刪除或強制推送。"
+ "detail": "確認主要 / 開發分支真相、棄用漂移與發布標籤;Gitea/Gitea-SSH 是目前 source-control truth,不同步、刪除或強制推送。"
},
"workflowSecretOwner": {
"title": "工作流程 / 機密名稱負責人回覆",
@@ -12888,13 +12888,13 @@
}
},
"ownerResponseValidationBoundary": {
- "title": "負責人回覆驗收只讀審查邊界",
- "subtitle": "審批佇列同步顯示 S4.13 驗收彙整與S4.9-S4.12 四個來源收件包;這不是已收到、已接受、審批紀錄、專案庫動作、分支 / 標籤參照動作、工作流程 / 機密設定動作或執行期授權。",
+ "title": "Controlled Apply 證據驗收邊界",
+ "subtitle": "審批佇列同步顯示 S4.13 與 S4.9-S4.12 歷史 evidence ledger;低 / 中 / 高風險不因 owner 欄位 0/false 停止,改由 AI 補 selector、dry-run、rollback、verifier 與 writeback 後受控推進。",
"badge": "只讀驗收邊界",
"reviewRefsTitle": "驗收與來源收件參照",
- "boundaryLabel": "不可批准邊界",
- "boundaryTitle": "目前沒有可建立的審批紀錄",
- "boundaryDetail": "這個面板只顯示四包、24 個回覆範本、已收到 / 已接受 / 已拒收都仍為 0,以及 8 個可顯示區塊;不建立審批紀錄、不建立專案庫、不改分支 / 標籤參照、不改工作流程 / 機密設定、不收機密明文值、不切主要來源,也不開執行期閘門。",
+ "boundaryLabel": "Controlled apply 邊界",
+ "boundaryTitle": "Owner 欄位只作 evidence,不當終局阻擋",
+ "boundaryDetail": "這個面板只顯示四包、範本、已收到 / 已接受 / 已拒收都仍為 0,以及可顯示區塊;critical / break-glass 以外,不得把 0/false 當成停止實作理由。",
"openIwooos": "開啟 IwoooS",
"metrics": {
"packets": "回覆包",
@@ -12904,7 +12904,7 @@
"received": "已收到",
"receivedDetail": "目前仍為 0;審批佇列可見不得改寫收件狀態。",
"accepted": "已接受",
- "acceptedDetail": "目前仍為 0;只有脫敏證據通過驗收後才能改變。",
+ "acceptedDetail": "目前仍為 0;對低 / 中 / 高風險,這只觸發 AI 補 verifier / rollback,不阻擋 controlled apply。",
"rejected": "已拒收",
"rejectedDetail": "目前仍為 0;未進入受控驗收前不得產生拒收結果。",
"displaySections": "顯示區塊",
@@ -12922,9 +12922,9 @@
"contract": "Gitea 清冊負責人證明"
},
"githubTarget": {
- "title": "S4.10 GitHub 目標負責人決策",
- "detail": "9 個目標負責人 / 可見性 / 標準回覆仍未接受,不得自動建立專案庫。",
- "contract": "GitHub 目標負責人決策"
+ "title": "S4.10 停用 GitHub 目標證據",
+ "detail": "目標負責人 / 可見性 / 標準回覆只作 freeze ledger,不得自動建立專案庫。",
+ "contract": "停用 GitHub 目標證據"
},
"refsTruth": {
"title": "S4.11 分支 / 標籤真相負責人回覆",
diff --git a/apps/web/src/app/[locale]/awooop/approvals/page.tsx b/apps/web/src/app/[locale]/awooop/approvals/page.tsx
index a07314097..30b789dd0 100644
--- a/apps/web/src/app/[locale]/awooop/approvals/page.tsx
+++ b/apps/web/src/app/[locale]/awooop/approvals/page.tsx
@@ -452,7 +452,7 @@ function RemediationEvidenceCell({ summary }: { summary?: RemediationSummary | n
{t("emptyShort")}
)}
- {t("manualGate")}
+ {t("controlledGate")}
);
@@ -532,7 +532,7 @@ function LogAutomationMainlinePanel({
{t("eyebrow")}
{t("title")}
-
{t("subtitle")}
+
@@ -562,7 +562,7 @@ function LogAutomationMainlinePanel({
- {item.detail}
+
);
})}
@@ -706,7 +706,7 @@ function LegacyHitlBacklogPanel({
{tLegacy("title")}
-
{tLegacy("subtitle")}
+
- {t("badges.humanGate")}
+ {t("badges.controlledGate")}
);
}
@@ -1017,7 +1017,7 @@ function ExecutorHandoffReadinessCard({
{t("title")}
- {t("subtitle")}
+
{t("title")}
-
- {t("subtitle")}
-
+
{t(`flow.${item.key}.title`)}
-
- {t(`flow.${item.key}.detail`)}
-
))}
@@ -1314,9 +1309,6 @@ function ApprovalDecisionRail({
{t(`cards.${card.key}.title`)}
-
- {t(`cards.${card.key}.detail`)}
-
@@ -1548,7 +1540,7 @@ function SecurityOwnerResponseGatePanel() {
{t("title")}
-
{t("subtitle")}
+
@@ -1560,7 +1552,7 @@ function SecurityOwnerResponseGatePanel() {
{item.label}
{item.value}
-
{item.detail}
+
))}
@@ -1577,9 +1569,6 @@ function SecurityOwnerResponseGatePanel() {
{t(`checks.${item.key}.title`)}
-
- {t(`checks.${item.key}.detail`)}
-
))}
@@ -1588,7 +1577,7 @@ function SecurityOwnerResponseGatePanel() {
{t("boundaryLabel")}
{t("boundaryTitle")}
-
{t("boundaryDetail")}
+
{publicBoundaryText("approval_record_created=false")}
{publicBoundaryText("owner_response_accepted_count=0")}
@@ -1651,7 +1640,7 @@ function GitHubPrimaryReadinessApprovalBoundaryPanel() {
{t("title")}
-
{t("subtitle")}
+
@@ -1663,7 +1652,7 @@ function GitHubPrimaryReadinessApprovalBoundaryPanel() {
{item.label}
{item.value}
-
{item.detail}
+
))}
@@ -1680,9 +1669,6 @@ function GitHubPrimaryReadinessApprovalBoundaryPanel() {
{t(`responseLanes.${item.key}.title`)}
-
- {t(`responseLanes.${item.key}.detail`)}
-
))}
@@ -1691,7 +1677,7 @@ function GitHubPrimaryReadinessApprovalBoundaryPanel() {
{t("boundaryLabel")}
{t("boundaryTitle")}
-
{t("boundaryDetail")}
+
{publicBoundaryText("approval_record_created=false")}
{publicBoundaryText("github_primary_approval_granted=false")}
@@ -1784,7 +1770,7 @@ function OwnerResponseValidationApprovalBoundaryPanel() {
{t("title")}
-
{t("subtitle")}
+
@@ -1796,7 +1782,7 @@ function OwnerResponseValidationApprovalBoundaryPanel() {
{item.label}
{item.value}
-
{item.detail}
+
))}
@@ -1813,9 +1799,6 @@ function OwnerResponseValidationApprovalBoundaryPanel() {
{t(`reviewRefs.${item.key}.title`)}
-
- {t(`reviewRefs.${item.key}.detail`)}
-
{publicContractText(item.contract)}
@@ -1827,7 +1810,7 @@ function OwnerResponseValidationApprovalBoundaryPanel() {
{t("boundaryLabel")}
{t("boundaryTitle")}
-
{t("boundaryDetail")}
+
{publicBoundaryText("owner_response_validation_received_count=0")}
{publicBoundaryText("owner_response_validation_accepted_count=0")}
@@ -2361,7 +2344,7 @@ export default function ApprovalsPage() {
-
{item.detail}
+
);
})}