import assert from "node:assert/strict"; import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../.."); const limitationsPath = path.join(repoRoot, "docs/web/KNOWN_LIMITATIONS.md"); const limitations = fs.readFileSync(limitationsPath, "utf8"); const notes = fs.readFileSync(path.join(repoRoot, "docs/web/RELEASE_NOTES.md"), "utf8"); const engine = JSON.parse(fs.readFileSync(path.join(repoRoot, "web/app/public/engine-manifest.json"), "utf8")); assert.ok(notes.includes("[Known limitations](KNOWN_LIMITATIONS.md)"), "release notes do not link known limitations"); for (const variant of engine.variants) { assert.equal(variant.memory.initialPages, 256); assert.equal(variant.memory.maximumPages, 32_768); } for (const required of [ "Chromium is the only V1 browser baseline", "crossOriginIsolated", "SharedArrayBuffer", "PTHREAD_REQUIRED", "SINGLE_REQUIRED", "ENGINE_VARIANT_INTEGRITY_FAILED", "REFRESH_REQUIRED", "256 initial WebAssembly pages (16 MiB)", "32,768-page ceiling (2 GiB)", "bound to the exact scheme, host and port", "reserves no minimum capacity", "64 MiB", "16,384 pixels per dimension", "256 requested", "VDB input is bounded to 512 MiB", "NanoVDB bundle to 1 GiB", "residency to at most 512 MiB", "Automatic viewport page-fault feedback", ]) { assert.ok(limitations.includes(required), `known limitations omit: ${required}`); } const renderAssets = fs.readFileSync(path.join(repoRoot, "web/protocol/render-assets.ts"), "utf8"); assert.match(renderAssets, /MAX_GPU_TEXTURE_BYTES = 64 \* 1024 \* 1024/); assert.match(renderAssets, /MAX_GPU_TEXTURE_DIMENSION = 16_384/); assert.match(renderAssets, /MAX_GPU_TEXTURE_ASSETS = 256/); const volume = fs.readFileSync(path.join(repoRoot, "web/protocol/volume-vdb.ts"), "utf8"); assert.match(volume, /VDB_MAX_RESOURCE_BYTES = 512 \* 1024 \* 1024/); assert.match(volume, /NANOVDB_MAX_BUNDLE_BYTES = 1024 \* 1024 \* 1024/); assert.match(volume, /NANOVDB_MAX_GPU_RESIDENT_BYTES = 512 \* 1024 \* 1024/); for (const link of ["V1_SCOPE.md", "parity-ledger.json", "DEPLOYMENT.md", "operations-diagnostics.json"]) { assert.ok(limitations.includes(`](${link})`), `known limitations omit link: ${link}`); } process.stdout.write(`rc-known-limitations-ok variants=${engine.variants.length} wasmMaximumPages=${engine.variants[0].memory.maximumPages}\n`);