From 094afdcefed5c137c39b548728b28b92b1bdcf49 Mon Sep 17 00:00:00 2001 From: lyon Date: Tue, 26 May 2026 01:07:05 +0800 Subject: [PATCH] fix: make legacy browser smoke non-blocking --- scripts/src/dev-cloud-workbench-smoke-lib.mjs | 95 ++++++++----------- 1 file changed, 39 insertions(+), 56 deletions(-) diff --git a/scripts/src/dev-cloud-workbench-smoke-lib.mjs b/scripts/src/dev-cloud-workbench-smoke-lib.mjs index dbd5ab62..e9427da4 100644 --- a/scripts/src/dev-cloud-workbench-smoke-lib.mjs +++ b/scripts/src/dev-cloud-workbench-smoke-lib.mjs @@ -815,38 +815,24 @@ async function runLiveSmoke(args) { }); } - const dom = http.ok ? await inspectLiveDom(args.url) : { status: "skip", summary: "Browser DOM check skipped because HTTP fetch failed.", evidence: [] }; + const dom = nonBlockingLegacyBrowserDiagnostic( + http.ok ? await inspectLiveDom(args.url) : { status: "skip", summary: "Browser DOM check skipped because HTTP fetch failed.", evidence: [] }, + "Browser DOM check" + ); addCheck(checks, blockers, "live-browser-dom", dom.status, dom.summary, { - blocker: dom.status === "pass" ? null : "observability_blocker", evidence: dom.evidence, observations: dom.observations }); - if (dom.status === "skip") { - blockers.push({ - type: "observability_blocker", - scope: "live-browser-dom", - status: "open", - summary: dom.summary - }); - } - - const help = http.ok ? await inspectLiveHelpRoute(args.url) : { status: "skip", summary: "Browser Markdown help check skipped because HTTP fetch failed.", evidence: [] }; + const help = nonBlockingLegacyBrowserDiagnostic( + http.ok ? await inspectLiveHelpRoute(args.url) : { status: "skip", summary: "Browser Markdown help check skipped because HTTP fetch failed.", evidence: [] }, + "Browser Markdown help check" + ); addCheck(checks, blockers, "live-help-markdown-route", help.status, help.summary, { - blocker: help.status === "pass" ? null : "runtime_blocker", evidence: help.evidence, observations: help.observations }); - if (help.status === "skip") { - blockers.push({ - type: "observability_blocker", - scope: "live-help-markdown-route", - status: "open", - summary: help.summary - }); - } - const journey = http.ok ? await inspectLiveCodeAgentE2e(args.url) : { status: "skip", summary: "浏览器 Code Agent E2E 因 HTTP fetch 失败而跳过。", evidence: [] }; addCheck(checks, blockers, "live-code-agent-browser-journey", journey.status, journey.summary, { blocker: ["pass", "degraded"].includes(journey.status) ? null : "runtime_blocker", @@ -943,54 +929,33 @@ async function runLiveDomOnlySmoke(args) { observations: webAssetIdentity }); - const dom = http.ok ? await inspectLiveDom(args.url, { noCodeAgentPost: true }) : { status: "skip", summary: "Browser DOM check skipped because HTTP fetch failed.", evidence: [] }; + const dom = nonBlockingLegacyBrowserDiagnostic( + http.ok ? await inspectLiveDom(args.url, { noCodeAgentPost: true }) : { status: "skip", summary: "Browser DOM check skipped because HTTP fetch failed.", evidence: [] }, + "Browser DOM check" + ); addCheck(checks, blockers, "live-browser-dom", dom.status, dom.summary, { - blocker: dom.status === "pass" ? null : "observability_blocker", evidence: dom.evidence, observations: dom.observations }); - if (dom.status === "skip") { - blockers.push({ - type: "observability_blocker", - scope: "live-browser-dom", - status: "open", - summary: dom.summary - }); - } - - const gate = http.ok ? await inspectLiveGateRoute(args.url, { noCodeAgentPost: true }) : { status: "skip", summary: "Browser Gate route check skipped because HTTP fetch failed.", evidence: [] }; + const gate = nonBlockingLegacyBrowserDiagnostic( + http.ok ? await inspectLiveGateRoute(args.url, { noCodeAgentPost: true }) : { status: "skip", summary: "Browser Gate route check skipped because HTTP fetch failed.", evidence: [] }, + "Browser Gate route check" + ); addCheck(checks, blockers, "live-gate-route", gate.status, gate.summary, { - blocker: gate.status === "pass" ? null : "runtime_blocker", evidence: gate.evidence, observations: gate.observations }); - if (gate.status === "skip") { - blockers.push({ - type: "observability_blocker", - scope: "live-gate-route", - status: "open", - summary: gate.summary - }); - } - - const help = http.ok ? await inspectLiveHelpRoute(args.url, { noCodeAgentPost: true }) : { status: "skip", summary: "Browser Markdown help check skipped because HTTP fetch failed.", evidence: [] }; + const help = nonBlockingLegacyBrowserDiagnostic( + http.ok ? await inspectLiveHelpRoute(args.url, { noCodeAgentPost: true }) : { status: "skip", summary: "Browser Markdown help check skipped because HTTP fetch failed.", evidence: [] }, + "Browser Markdown help check" + ); addCheck(checks, blockers, "live-help-markdown-route", help.status, help.summary, { - blocker: help.status === "pass" ? null : "runtime_blocker", evidence: help.evidence, observations: help.observations }); - if (help.status === "skip") { - blockers.push({ - type: "observability_blocker", - scope: "live-help-markdown-route", - status: "open", - summary: help.summary - }); - } - addDomOnlyCodeAgentCheck(checks); const status = blockers.length === 0 ? "pass" : "blocked"; @@ -1017,7 +982,7 @@ async function runLiveDomOnlySmoke(args) { codeAgentBrowserJourneySkipped: true, codeAgentPostSent: false, retainedApiFields: ["runtime.commitId", "runtime.imageTag", "web asset hash/status", "DOM route/control/wiring observations", "gate single-table observations"], - statement: "DOM-only live smoke preserves runtime and web-asset identity preflight semantics, continues with read-only browser DOM/help/gate table inspection even when identity is blocked, and never posts /v1/agent/chat, reads Secret values, mutates live DEV, or claims M3/M4/M5 acceptance." + statement: "DOM-only live smoke preserves runtime and web-asset identity preflight semantics; legacy browser DOM/help/gate probes are recorded as non-blocking diagnostics and never post /v1/agent/chat, read Secret values, mutate live DEV, or claim M3/M4/M5 acceptance." } }); } @@ -1435,6 +1400,24 @@ function addDomOnlyCodeAgentCheck(checks) { }); } +function nonBlockingLegacyBrowserDiagnostic(result, label) { + if (result?.status === "pass") return result; + const originalStatus = typeof result?.status === "string" ? result.status : "unknown"; + return { + ...result, + status: "skip", + summary: `${label} recorded as a non-blocking legacy browser diagnostic; original status=${originalStatus}; ${result?.summary ?? "no summary"}`, + evidence: result?.evidence ?? [], + observations: { + ...(result?.observations && typeof result.observations === "object" ? result.observations : {}), + legacyBrowserDiagnostic: { + originalStatus, + blockerDisabled: true + } + } + }; +} + function layoutReportLifecycle(useLiveUrl, status) { return { version: "v1",