Update wasm port validation state

This commit is contained in:
wangdequan
2026-07-10 03:22:55 -04:00
parent 49a8bad404
commit 2e922ad628
91 changed files with 3292 additions and 1488 deletions

View File

@@ -986,7 +986,7 @@ TOOL_TABLE = browser-shell-tool.tbl
);
assertEqual(
workflowOverviewReleaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "promotion-candidate-layers")?.value,
"evidence-ready=8 inventory-ready=2",
"evidence-ready=8 inventory-ready=19",
"shell workflow overview release artifact URL workflow candidate layers",
);
assertEqual(

View File

@@ -438,7 +438,7 @@
preferredGcodePath: "linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc",
blockedCandidateIds: [],
explicitBrowserDiagnosticsCount: 8,
inventoryBaseline: "executed=82 passed=82 skipped=77 unexpected_fail=0",
inventoryBaseline: "executed=29 passed=29 skipped=130 unexpected_fail=0",
},
virtualHalSimConfigMacroLoadFixtures: createVirtualHalSimConfigMacroLoadFixtureReport({
manifestEntries: [
@@ -664,7 +664,7 @@
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "promotion-candidate-layers")?.value,
"evidence-ready=8 inventory-ready=2",
"evidence-ready=8 inventory-ready=19",
"workflow overview release artifact URL workflow candidate layers",
);
assertEqual(
@@ -809,7 +809,7 @@
);
assertEqual(
releaseArtifactUrlWorkflowSummary.rows.find(({ id }) => id === "virtual-hal-promotion-candidate-baseline")?.value,
"executed=82 passed=82 skipped=77 unexpected_fail=0",
"executed=29 passed=29 skipped=130 unexpected_fail=0",
"workflow overview release artifact URL workflow candidate baseline",
);
assertEqual(
@@ -985,7 +985,7 @@
);
assertEqual(
workflowDoc.querySelector('[data-workflow-overview-release-readiness-artifact-url-workflow-value="promotion-candidate-layers"]').textContent,
"evidence-ready=8 inventory-ready=2",
"evidence-ready=8 inventory-ready=19",
"workflow overview fixed URL workflow form candidate layer row",
);
assertEqual(

View File

@@ -308,8 +308,10 @@
if (!wasmNode || !boundary) {
throw new Error(`${row.path}: missing browser row proof prerequisite`);
}
assertEqual(row.native_pass_ready, "1", `${row.path}: native pass prerequisite`);
assertEqual(row.wasm_node_pass_ready, "1", `${row.path}: row proof Node prerequisite`);
assertEqual(row.execution_enabled, "0", `${row.path}: locked row execution guard`);
if (!row.blockers.includes("manual_promotion_lock")) {
throw new Error(`${row.path}: manual promotion lock prerequisite missing`);
}
assertEqual(wasmNode.wasm_node_pass_ready, "1", `${row.path}: Node artifact prerequisite`);
assertEqual(wasmNode.proof_status, "wasm_node_row_runtime_bridge_passed", `${row.path}: Node artifact proof status`);
assertEqual(boundary.ini, row.ini, `${row.path}: boundary INI drift`);
@@ -363,7 +365,7 @@
row.path,
row.ini,
row.family,
row.wasm_node_pass_ready,
wasmNode.wasm_node_pass_ready,
flagValue(start.runtimeExecutionReady),
flagValue(planResult.status === "row_runtime_adapter_plan_executed"),
flagValue(rowValidation.moduleImportReady),

View File

@@ -1951,7 +1951,7 @@
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.candidateCount !== 8 ||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.readyCandidateCount !== 8 ||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.sourceFileCount !== 17 ||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.inventoryBaseline !== "executed=82 passed=82 skipped=77 unexpected_fail=0" ||
diagnosticsArtifact.virtualHalPromotionCandidateSummary?.inventoryBaseline !== "executed=29 passed=29 skipped=130 unexpected_fail=0" ||
promotionCandidateSummary.ready !== true ||
promotionCandidateSummary.preferredIniPath !== "linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini" ||
doc.body.dataset.promotionCandidateReady !== "true" ||
@@ -2149,8 +2149,8 @@
doc.body.dataset.evidenceSessionHandoffExternalShellBadgeSnapshotAction !== "save HAL session" ||
doc.body.dataset.evidenceSessionHandoffExternalShellBadgeSnapshotPreflight !== "2/4 ready" ||
doc.querySelector('[data-promotion-candidate-summary-value="preferred-candidate"]')?.textContent !== "qtdragon-multi-joint-on-abort" ||
doc.querySelector('[data-promotion-candidate-summary-value="candidate-layers"]')?.textContent !== "evidence-ready=8 inventory-ready=2" ||
doc.querySelector('[data-promotion-candidate-summary-value="inventory-baseline"]')?.textContent !== "82/82 pass; 77 skip" ||
doc.querySelector('[data-promotion-candidate-summary-value="candidate-layers"]')?.textContent !== "evidence-ready=8 inventory-ready=19" ||
doc.querySelector('[data-promotion-candidate-summary-value="inventory-baseline"]')?.textContent !== "29/29 pass; 130 skip" ||
doc.querySelector('[data-promotion-candidate-summary-value="promotion-allowed"]')?.textContent !== "0 baseline changes" ||
doc.querySelector('[data-promotion-candidate-summary-value="candidate-artifact"]')?.textContent !== "promotion-candidates.tsv" ||
!diagnosticsArtifact.virtualHalSimConfigPromotionCandidates?.familyRows?.some((row) =>

View File

@@ -24,7 +24,11 @@ cleanup() {
kill "$SERVER_PID" 2>/dev/null || true
wait "$SERVER_PID" 2>/dev/null || true
fi
rm -rf "$TMP_DIR"
for _ in $(seq 1 5); do
rm -rf "$TMP_DIR" 2>/dev/null && return 0
sleep 0.1
done
rm -rf "$TMP_DIR" 2>/dev/null || true
}
trap cleanup EXIT

View File

@@ -20,6 +20,8 @@ CHROME_PROFILE="$TMP_DIR/chrome-profile"
mkdir -p "$CHROME_PROFILE"
ARTIFACT_DIR="${AXIS_SCREENSHOT_ARTIFACT_DIR:-}"
FULL_DIAGNOSTICS="${AXIS_SCREENSHOT_FULL_DIAGNOSTICS:-0}"
CHROME_SMOKE_TIMEOUT="${AXIS_SCREENSHOT_CHROME_SMOKE_TIMEOUT:-45s}"
CHROME_SCREENSHOT_TIMEOUT="${AXIS_SCREENSHOT_CHROME_TIMEOUT:-180s}"
if [[ -n "$ARTIFACT_DIR" ]]; then
mkdir -p "$ARTIFACT_DIR"
fi
@@ -70,35 +72,55 @@ run_case() {
local size="$2"
local query="${3:-}"
local out="$TMP_DIR/axis-${name}.dom"
local chrome_stderr="$TMP_DIR/axis-${name}.chrome.stderr"
local shot="$TMP_DIR/axis-${name}.png"
local diagnostics_json="$TMP_DIR/axis-${name}-diagnostics.json"
local full_diagnostics_json="$TMP_DIR/axis-${name}-full-diagnostics.json"
local screenshot_url="$SCREENSHOT_URL$query"
local case_profile="$TMP_DIR/chrome-profile-$name"
mkdir -p "$case_profile"
"$CHROMIUM" \
if ! timeout --kill-after=5s "$CHROME_SMOKE_TIMEOUT" "$CHROMIUM" \
--headless=new \
--disable-gpu \
--disable-dev-shm-usage \
--disable-background-networking \
--disable-extensions \
--disable-features=PaintHolding \
--no-sandbox \
--user-data-dir="$CHROME_PROFILE" \
--user-data-dir="$case_profile" \
--virtual-time-budget=10000 \
--dump-dom \
"$SMOKE_URL" >"$out" 2>&1
"$SMOKE_URL" >"$out" 2>&1; then
echo "AXIS screenshot prerequisite smoke timed out or failed for $name" >&2
sed -n '1,260p' "$out" >&2 || true
exit 1
fi
if ! grep -Fq "browser_real_simulation_page_smoke=ok" "$out"; then
echo "AXIS screenshot prerequisite smoke failed for $name" >&2
sed -n '1,260p' "$out" >&2
exit 1
fi
"$CHROMIUM" \
if ! timeout --kill-after=5s "$CHROME_SCREENSHOT_TIMEOUT" "$CHROMIUM" \
--headless=new \
--disable-gpu \
--disable-dev-shm-usage \
--disable-background-networking \
--disable-extensions \
--disable-features=PaintHolding \
--run-all-compositor-stages-before-draw \
--no-sandbox \
--user-data-dir="$CHROME_PROFILE" \
--user-data-dir="$case_profile" \
--window-size="$size" \
--virtual-time-budget=60000 \
--screenshot="$shot" \
"$screenshot_url" \
>/dev/null 2>&1
>/dev/null 2>"$chrome_stderr"; then
echo "AXIS screenshot capture timed out or failed for $name" >&2
sed -n '1,120p' "$chrome_stderr" >&2 || true
exit 1
fi
if [[ ! -s "$shot" ]]; then
echo "AXIS screenshot output missing for $name" >&2