From 6f5da3d6afa5ecb0fa1dc00568e24680d23d48da Mon Sep 17 00:00:00 2001 From: Codex Date: Wed, 8 Jul 2026 21:19:24 +0200 Subject: [PATCH] fix(monitor): register sentinel recovery findings --- .../hwlab-web-probe-sentinel/check-catalog.yaml | 16 ++++++++++++++++ scripts/src/hwlab-node-web-sentinel-config.ts | 8 ++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/config/hwlab-web-probe-sentinel/check-catalog.yaml b/config/hwlab-web-probe-sentinel/check-catalog.yaml index ee61d384..dbdae438 100644 --- a/config/hwlab-web-probe-sentinel/check-catalog.yaml +++ b/config/hwlab-web-probe-sentinel/check-catalog.yaml @@ -1011,3 +1011,19 @@ sentinel: actionZh: 按详情中的状态码和路径追溯后端日志/OTel,先修复 5xx 响应。 blocking: true order: 1240 + - code: WBC-125 + id: workbench-automatic-recovery-fanout-authority + level: error + titleZh: Workbench 自动恢复来源违规 + summaryZh: Workbench 自动恢复使用了直接 trace/session/turn 扇出,而不是 sync replay authority。 + actionZh: 检查 web-performance runtime diagnostics、network artifact 和 sync replay 证据,恢复自动恢复入口的 authority 约束。 + blocking: true + order: 1250 + - code: WBC-126 + id: workbench-sync-replay-evidence-missing + level: warning + titleZh: Workbench sync replay 证据缺失 + summaryZh: 已采集到 Workbench 恢复诊断,但 artifact 窗口内缺少 sync replay 诊断或 /v1/workbench/sync 网络记录。 + actionZh: 检查 web-performance runtime diagnostics 和 network artifact 采集,补齐 sync replay authority 证据。 + blocking: false + order: 1260 diff --git a/scripts/src/hwlab-node-web-sentinel-config.ts b/scripts/src/hwlab-node-web-sentinel-config.ts index ca189b7a..45ca9c88 100644 --- a/scripts/src/hwlab-node-web-sentinel-config.ts +++ b/scripts/src/hwlab-node-web-sentinel-config.ts @@ -529,11 +529,11 @@ function renderWebProbeSentinelConfigPlan(value: WebProbeSentinelConfigPlan): st "", "Blocked detail:", sentinelTable(["KIND", "VALUE"], [ - ...value.conflicts.map((item) => ["conflict", short(item, 140)]), + ...value.conflicts.map((item) => ["conflict", item]), ...value.refs.flatMap((ref) => [ - ...(ref.error === null ? [] : [[`${ref.key}.error`, short(ref.error, 140)]]), - ...(ref.missingFields.length === 0 ? [] : [[`${ref.key}.missing`, short(ref.missingFields.join(","), 140)]]), - ...(ref.conflicts.length === 0 ? [] : [[`${ref.key}.conflict`, short(ref.conflicts.join(" | "), 140)]]), + ...(ref.error === null ? [] : [[`${ref.key}.error`, ref.error]]), + ...(ref.missingFields.length === 0 ? [] : [[`${ref.key}.missing`, ref.missingFields.join(",")]]), + ...(ref.conflicts.length === 0 ? [] : [[`${ref.key}.conflict`, ref.conflicts.join(" | ")]]), ]), ]), ];