import assert from "node:assert/strict"; import { access, readFile } from "node:fs/promises"; import { after, before, test } from "node:test"; import { createServer } from "vite"; let server; let fetchVegetationShadowResult; before(async () => { server = await createServer({ appType: "custom", logLevel: "silent", server: { middlewareMode: true }, }); ({ fetchVegetationShadowResult } = await server.ssrLoadModule( "/src/core/laboratory/vegetationShadow.ts", )); }); after(async () => { await server?.close(); }); const resultId = `lab-v1-vegetation-shadow-${"a".repeat(64)}`; function candidate(candidateKey, vegetationIou) { return { loaded_model_name: candidateKey === "ddrnet" ? "ddrnet_39" : "pp_lite_t_seg", checkpoint_sha256: (candidateKey === "ddrnet" ? "b" : "c").repeat(64), validation_metrics: { mean_iou_percent: 44.2, published_mean_iou_percent: 46.53, vegetation_mean_iou: vegetationIou, }, validation_timing: { latency_ms_p95: 22.4, throughput_fps_from_mean_inference: 48.1, }, shadow_timing: { prewarm_latency_ms: 612.4, latency_ms_p95: 21.8, throughput_fps_from_mean_inference: 49.2, }, resource: { peak_reserved_vram_bytes: 2_000_000_000, gpu_name: "NVIDIA GeForce RTX 4090", }, }; } function visualCase(sourceKind, index) { const caseId = `case-${index}`; const keys = sourceKind === "goose" ? ["source", "truth", "ddrnet", "ppliteseg", "ddrnet_error", "ppliteseg_error"] : ["source", "ddrnet", "ppliteseg", "urban", "rural", "offroad"]; return { case_id: caseId, source_kind: sourceKind, width: sourceKind === "goose" ? 512 : 800, height: sourceKind === "goose" ? 512 : 600, center_crop_xyxy: sourceKind === "goose" ? [0, 0, 512, 512] : [100, 0, 700, 600], outside_crop_state: sourceKind === "goose" ? "not-applicable" : "undefined", focus: sourceKind === "goose" ? { class_name: "high_grass", label_id: 51, truth_pixels: 16384, truth_fraction: 0.0625, stratum_rank: index + 1, } : null, assets: Object.fromEntries(keys.map((key) => [key, { path: `visual/${sourceKind}/${caseId}/${key}.png`, sha256: "d".repeat(64), }])), }; } function routeVideo() { return { worker_result_id: `lab-v1-ravnoves-video-ddrnet-${"e".repeat(64)}`, m47_reference_graph_result_id: `m47-reference-graph-lab-${"f".repeat(64)}`, base_m4_result_id: `m4-threat-replay-${"1".repeat(64)}`, frame_count: 4489, width: 800, height: 600, center_crop_xyxy: [100, 0, 700, 600], outside_crop_state: "undefined", sequence_binding: "sequence-0-to-masks/frame-000001.png", taxonomy: { schema_version: "missioncore.lab-v1-vegetation-taxonomy/v1", classes: Array.from({ length: 64 }, (_, classId) => ({ class_id: classId, label: classId === 0 ? "undefined" : `class-${classId}`, color_rgb: [classId, classId, classId], disposition: classId === 0 ? "undefined" : "prediction", })), }, aggregate_prediction_pixels: Array(64).fill(0), mask_archive: { path: "video/ddrnet-semantic-masks.zip", sha256: "9".repeat(64), byte_length: 1024, }, }; } function coarseRouteVideo() { return { ...routeVideo(), view_kind: "coarse-material-policy-review", linked_tgs_result_id: `m49-tgs-full-shadow-${"2".repeat(64)}`, taxonomy: { schema_version: "missioncore.lab-v1-terrain-policy-taxonomy/v1", classes: Array.from({ length: 9 }, (_, classId) => ({ class_id: classId, label: `policy-${classId}`, color_rgb: [classId, classId, classId], disposition: classId === 0 ? "ambiguous" : "prediction", material_class: classId === 0 ? null : "grass", evidence_state: classId === 0 ? "UNOBSERVED" : "SUPPORTED_GROUND", })), }, aggregate_prediction_pixels: Array(9).fill(0), mask_archive: { path: "video/coarse-material-policy-masks.zip", sha256: "8".repeat(64), byte_length: 2048, }, policy: { presets: { urban: { grass: "NO_GO" }, rural: { grass: "HIGH_COST" }, offroad: { grass: "HIGH_COST" }, }, }, fusion: { mode: "synchronised-multilayer-review", pixel_raster_fusion: false, camera_semantic_temporal_filter: "none", }, }; } function labPayload(route = routeVideo()) { return { schema_version: "missioncore.lab-v1-vegetation-shadow/v1", result_id: resultId, created_at_utc: "2026-08-27T20:00:00Z", status: "visual-shadow-ready-policy-not-authorized", ground_truth: false, identity: { selected_candidate: "ddrnet" }, metrics: { candidates: { ddrnet: candidate("ddrnet", 0.64), ppliteseg: candidate("ppliteseg", 0.61), }, }, decision: { selected_candidate: "ddrnet", visual_shadow_ready: true, mission_policy_ready_for_configuration: true, navigation_accepted: false, production_accepted: false, }, limitations: ["shadow only"], authority: { commands_enabled: false, navigation_or_safety_accepted: false, actuation_accepted: false, camera_semantics_can_clear_rigid_geometry: false, }, catalogs: { goose: Array.from({ length: 12 }, (_, index) => visualCase("goose", index)), ravnoves: [], }, route_video: route, access: "read-only", }; } test("vegetation LAB keeps autonomous assets and fail-closed authority", async () => { let requestedUrl = ""; const result = await fetchVegetationShadowResult(resultId, { fetcher: async (url) => { requestedUrl = String(url); return new Response(JSON.stringify(labPayload()), { status: 200, headers: { "Content-Type": "application/json" }, }); }, }); assert.equal( requestedUrl, `/api/v1/laboratory/vegetation-shadow/${resultId}`, ); assert.equal(result.selectedCandidate, "ddrnet"); assert.equal(result.candidates[0].vegetationMeanIouPercent, 64); assert.equal(result.routeCases.length, 0); assert.equal(result.validationCases.length, 12); assert.equal(result.routeVideo.frameCount, 4489); assert.equal(result.routeVideo.viewKind, "fine-semantic-prediction"); assert.equal(result.routeVideo.linkedTgsResultId, null); assert.equal(result.routeVideo.taxonomy[0].disposition, "undefined"); assert.equal(result.validationCases[0].focus.className, "high_grass"); assert.match(result.validationCases[0].assets.ddrnet_error, /\/assets\/visual\/goose\//); assert.deepEqual(result.authority, { commandsEnabled: false, navigationOrSafetyAccepted: false, actuationAccepted: false, cameraSemanticsCanClearRigidGeometry: false, }); }); test("vegetation LAB parses coarse material policy and sealed TGS binding", async () => { const result = await fetchVegetationShadowResult(resultId, { fetcher: async () => new Response(JSON.stringify(labPayload(coarseRouteVideo())), { status: 200, headers: { "Content-Type": "application/json" }, }), }); assert.equal(result.routeVideo.viewKind, "coarse-material-policy-review"); assert.match(result.routeVideo.linkedTgsResultId, /^m49-tgs-full-shadow-/); assert.equal(result.routeVideo.taxonomy.length, 9); assert.equal(result.routeVideo.taxonomy[0].evidenceState, "UNOBSERVED"); assert.equal(result.routeVideo.policyPresets.urban.grass, "NO_GO"); assert.equal(result.routeVideo.fusionMode, "synchronised-multilayer-review"); }); test("vegetation LAB reuses the admitted M4.8 and M4.7 instruments", async () => { const resultSource = await readFile( new URL("../src/workspaces/laboratory/VegetationShadowResult.tsx", import.meta.url), "utf8", ); assert.match(resultSource, /M48MaskComparisonVisual/); assert.match(resultSource, /M4ReplayThreatVisual/); assert.match(resultSource, /M49TgsFullShadowEvidence/); assert.match(resultSource, /semanticOverride/); assert.equal(resultSource.match(/