import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../.."); const resourceRoot = path.resolve(process.env.VDB_RESOURCE_ROOT ?? "/home/mes123456/resource-library/blender-web-vdb"); const catalog = JSON.parse(fs.readFileSync(path.join(resourceRoot, "manifest.json"), "utf8")); if (catalog.schemaVersion !== 1 || !Array.isArray(catalog.entries) || catalog.entries.length === 0) throw new Error("VDB_RESOURCE_CATALOG_INVALID"); const evidence = { schemaVersion: 1, resourceLibrary: resourceRoot, browserOpenVDB: false, desktopOpenVDB: true, serverJobConfigured: true, serverIsolation: "bwrap-unshare-all+readonly-root+prlimit", opfsStreamingConfigured: true, webgpuRendererConfigured: true, mainVolumeRoundtripConfigured: true, primaryViewportVolumeIntegrated: false, materialSemantics: { supported: ["DENSITY_GRID_FLOAT32", "CONSTANT_COLOR", "CONSTANT_EMISSION", "ANISOTROPY", "NEAREST", "LINEAR"], explicitLosses: ["COLOR_GRID", "TEMPERATURE_BLACKBODY", "EMISSION_GRID", "VELOCITY_MOTION"], }, chromiumWebGPU: { renderer: "SwiftShader WebGPU", densityPayloadBytes: 2563744, nativeCpuGpuSamples: 5, imageWidth: 96, imageHeight: 96, imageSha256: "7aab6639d8d173a4b22d913d16b9c61eeea4cc00cb8ccec2202edf75a1b1f978", }, releaseStatus: "BLOCKED", remainingReleaseBlockers: [ "primary-offscreen-viewport-volume-scene-integration", "color-temperature-emission-grid-shading", "three-view-desktop-chromium-pixel-goldens", "64MiB-512MiB-1GiB-stream-device-loss-oom-gates", ], toolchain: catalog.toolchain, licenses: catalog.licenses, resources: catalog.entries, validations: [ "source-byte-length-and-sha256", "official-git-lfs-sha256", "openvdb13-nanovdb32-real-conversion", "same-source-conversion-determinism", "semantic-grid-conversion-determinism", "official-sphere-conversion-determinism", "truncated-vdb-rejection", "browser-manifest-validation", "browser-openvdb-disabled", "native-cancel-timeout-atomic-output", "isolated-server-job-idempotency-signature-cancel", "desktop-server-bundle-hash-equality", "real-bundle-opfs-atomic-commit-worker-reopen-tamper-gate", "nanovdb-float32-native-cpu-webgpu-sample-equality", "chromium-webgpu-volume-integration-golden", "bounded-material-mapping-loss-report", "volume-main-undo-redo-save-reopen", ], }; const output = path.join(root, "docs", "status", "vdb-native-evidence.json"); fs.writeFileSync(output, `${JSON.stringify(evidence, null, 2)}\n`); process.stdout.write(`vdb-evidence-snapshot-ok resources=${evidence.resources.length} output=${output}\n`);