Merge remote-tracking branch 'origin/main' into G14

This commit is contained in:
Codex
2026-05-26 01:17:53 +08:00
+39 -56
View File
@@ -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",