Rebuild local Blender WASM environment and recovery evidence
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
const TASK_ID = /^M\d+-GAP-\d{5}$/u;
|
||||
const TASK_ID = /^(?:M\d+-GAP-\d{5}|WBV2-[A-Z0-9-]+)$/u;
|
||||
|
||||
function add(issues, code, detail) {
|
||||
issues.push({ code, detail });
|
||||
@@ -32,6 +32,123 @@ export function collectGeneratedGapPreflight({ root, task, entry }) {
|
||||
? entry.desktopCommand.match(/\s--python\s+(\S+)/u)?.[1]
|
||||
: undefined;
|
||||
if (generator) required.push(["generator", generator]);
|
||||
if (task === "WBV2-P0-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P0-003-workflow-freeze_capability_error_budget_contract.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P0-003.py"]);
|
||||
}
|
||||
if (task === "WBV2-P1-001") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P1-001-workflow-stabilize_runtime_variants_and_source_receipts.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P1-001.py"]);
|
||||
}
|
||||
if (task === "WBV2-P1-002") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P1-002-workflow-unify_sceneir_stable_ids_and_binary_deltas.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P1-002.py"]);
|
||||
}
|
||||
if (task === "WBV2-P1-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P1-003-workflow-unify_main_transaction_history_and_save.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P1-003.py"]);
|
||||
}
|
||||
if (task === "WBV2-P1-004") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P1-004-workflow-harden_worker_cancel_restart_and_dispose.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P1-004.py"]);
|
||||
}
|
||||
if (task === "WBV2-P1-005") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P1-005-workflow-harden_opfs_indexeddb_journal_recovery.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P1-005.py"]);
|
||||
}
|
||||
if (task === "WBV2-P2-001") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P2-001-EDITOR.OPEN_SCENE.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P2-001.py"]);
|
||||
}
|
||||
if (task === "WBV2-P2-002") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P2-002-OBJECT.TRANSFORM_HIERARCHY.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P2-002.py"]);
|
||||
}
|
||||
if (task === "WBV2-P2-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P2-003-MESH.EDIT_CORE.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P2-003.py"]);
|
||||
}
|
||||
if (task === "WBV2-P2-004") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P2-004-VIEWPORT.MAIN_OFFSCREEN.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P2-004.py"]);
|
||||
}
|
||||
if (task === "WBV2-P2-005") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P2-005-WORKFLOW.P0_USER_LOOP.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P2-005.py"]);
|
||||
}
|
||||
if (task === "WBV2-P3-001") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P3-001-MATERIAL.PBR_UV.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P3-001.py"]);
|
||||
}
|
||||
if (task === "WBV2-P3-002") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P3-002-ANIMATION.TRS_ACTION.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P3-002.py"]);
|
||||
}
|
||||
if (task === "WBV2-P3-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P3-003-RIG.POSE_SKIN.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P3-003.py"]);
|
||||
}
|
||||
if (task === "WBV2-P3-004") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P3-004-IO.GLB_ROUNDTRIP.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P3-004.py"]);
|
||||
}
|
||||
if (task === "WBV2-P3-005") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P3-005-ASSET.LIBRARY_OPERATIONS.blend"]);
|
||||
required.push(["sourceLibrary", "tests/files/web/generated/WBV2P3005Library.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P3-005.py"]);
|
||||
}
|
||||
if (task === "WBV2-P4-001") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P4-001-MODIFIER.DECLARED_SLICES.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P4-001.py"]);
|
||||
}
|
||||
if (task === "WBV2-P4-002") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P4-002-NODES.ALLOWLIST.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P4-002.py"]);
|
||||
}
|
||||
if (task === "WBV2-P4-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P4-003-SCULPT.NONMESH.PAINT_BOUNDED.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P4-003.py"]);
|
||||
}
|
||||
if (task === "WBV2-P4-004") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P4-004-SIMULATION.CACHE_LIFECYCLE.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P4-004.py"]);
|
||||
}
|
||||
if (task === "WBV2-P5-001") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P5-001-RENDER.ROUTING.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P5-001.py"]);
|
||||
}
|
||||
if (task === "WBV2-P5-002") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P5-002-MEDIA.BOUNDED_WORKFLOW.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P5-002.py"]);
|
||||
}
|
||||
if (task === "WBV2-P5-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P5-003-SERVER.JOB_BINDING.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P5-003.py"]);
|
||||
}
|
||||
if (task === "WBV2-P6-001") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P6-001-SECURITY.SCRIPTING.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P6-001.py"]);
|
||||
}
|
||||
if (task === "WBV2-P6-002") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P6-002-workflow-performance_fault_and_recovery_matrix.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P6-002.py"]);
|
||||
}
|
||||
if (task === "WBV2-P6-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P6-003-workflow-offline_ci_sbom_and_rollback_release.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P6-003.py"]);
|
||||
}
|
||||
if (task === "WBV2-P7-001") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P7-001-workflow-cluster_full_blender_gap_inventory.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P7-001.py"]);
|
||||
}
|
||||
if (task === "WBV2-P7-002") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P7-002-workflow-generate_atomic_family_gap_queue.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P7-002.py"]);
|
||||
}
|
||||
if (task === "WBV2-P7-003") {
|
||||
required.push(["fixture", "tests/files/web/generated/WBV2-P7-003-workflow-full_parity_candidate_release_gate.blend"]);
|
||||
required.push(["generator", "tools/web/generated/WBV2-P7-003.py"]);
|
||||
}
|
||||
for (const [role, relativePath] of required) {
|
||||
const resolved = path.resolve(root, relativePath);
|
||||
if (!fs.existsSync(resolved)) add(issues, "INPUT_MISSING", `${role}=${relativePath}`);
|
||||
|
||||
Reference in New Issue
Block a user