diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json
index 4c2dcfc9..172629f0 100644
--- a/apps/web/messages/en.json
+++ b/apps/web/messages/en.json
@@ -427,6 +427,10 @@
"flowSourceTruthChain": "truth-chain / ADR-100",
"flowSourceHeuristic": "incident status heuristic",
"flowVerdictLabel": "Verdict",
+ "flowEvidenceMcp": "MCP {count}",
+ "flowEvidenceOps": "Ops {count}",
+ "flowEvidenceKm": "KM {count}",
+ "flowEvidenceRepair": "Repair {count}",
"flowTruthChainCurrent": "{stage} / {status}",
"flowComplete": "Complete",
"flowStages": {
diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json
index 48e2c463..547ca9e6 100644
--- a/apps/web/messages/zh-TW.json
+++ b/apps/web/messages/zh-TW.json
@@ -428,6 +428,10 @@
"flowSourceTruthChain": "truth-chain / ADR-100",
"flowSourceHeuristic": "事件狀態推導",
"flowVerdictLabel": "判定",
+ "flowEvidenceMcp": "MCP {count}",
+ "flowEvidenceOps": "操作 {count}",
+ "flowEvidenceKm": "KM {count}",
+ "flowEvidenceRepair": "修復 {count}",
"flowTruthChainCurrent": "{stage} / {status}",
"flowComplete": "已完成",
"flowStages": {
diff --git a/apps/web/src/components/incident/incident-card.tsx b/apps/web/src/components/incident/incident-card.tsx
index 78bc1053..f9f9e26b 100644
--- a/apps/web/src/components/incident/incident-card.tsx
+++ b/apps/web/src/components/incident/incident-card.tsx
@@ -313,6 +313,28 @@ export function IncidentCard({ incident, decision, statusChain, onApprovalChange
? chainValue(statusChain?.next_step)
: nextStage ? flowStageLabels[nextStage] : t('flowComplete')
const flowSourceText = hasTruthChain ? t('flowSourceTruthChain') : t('flowSourceHeuristic')
+ const statusChainEvidenceItems = hasTruthChain ? [
+ {
+ key: 'mcp',
+ label: t('flowEvidenceMcp', { count: statusChain?.evidence?.mcp_gateway_total ?? 0 }),
+ active: (statusChain?.evidence?.mcp_gateway_total ?? 0) > 0,
+ },
+ {
+ key: 'ops',
+ label: t('flowEvidenceOps', { count: statusChain?.evidence?.operation_records ?? 0 }),
+ active: (statusChain?.evidence?.operation_records ?? 0) > 0,
+ },
+ {
+ key: 'km',
+ label: t('flowEvidenceKm', { count: statusChain?.evidence?.knowledge_entries ?? 0 }),
+ active: (statusChain?.evidence?.knowledge_entries ?? 0) > 0,
+ },
+ {
+ key: 'repair',
+ label: t('flowEvidenceRepair', { count: statusChain?.evidence?.auto_repair_records ?? 0 }),
+ active: (statusChain?.evidence?.auto_repair_records ?? 0) > 0,
+ },
+ ] : []
const serviceName = incident.affected_services?.[0] ?? '--'
const duration = formatDuration(incident.created_at)
@@ -566,6 +588,24 @@ export function IncidentCard({ incident, decision, statusChain, onApprovalChange
{t('flowVerdictLabel')}: {chainValue(statusChain?.verdict)}
+ /
+
+ {statusChainEvidenceItems.map(item => (
+
+ {item.label}
+
+ ))}
+
>
)}