import assert from "node:assert/strict"; import { after, before, test } from "node:test"; import { readFile } from "node:fs/promises"; import { createServer } from "vite"; let server; let fetchM48TRiskQualityResult; const resultId = `m48q-native-risk-quality-lab-${"a".repeat(64)}`; before(async () => { server = await createServer({ appType: "custom", logLevel: "silent", server: { middlewareMode: true }, }); ({ fetchM48TRiskQualityResult } = await server.ssrLoadModule( "/src/core/laboratory/m48tRiskQuality.ts", )); }); after(async () => server?.close()); function response(value) { return { ok: true, status: 200, json: async () => value }; } function payload() { return { schema_version: "missioncore.m48q-native-risk-quality-view/v1", variant: "native-risk-review", result_id: resultId, created_at_utc: "2026-08-26T10:00:00Z", status: "complete-review-ready-quality-not-adjudicated", access: "read-only", ground_truth: false, source: { source_id: "RAVNOVES00", frame_count: 4489, raster_width: 800, raster_height: 600, geometric_resampling: false, rectification: false, warp: false, }, configuration: { candidate: { provider_id: "triton-rf-detr-large-coco-native-kb4-risk-fp16-shadow/v0", model_id: "rf_detr_large_native_kb4:1", preprocess_id: "raw-kb4-uint8-fused-mask-rgb-pad8-imagenet-trt/v0", minimum_score: 0.25, }, }, method: { schema_version: "missioncore.laboratory-method/v1", completeness: "complete", execution_class: "hybrid", pipeline_id: "m48q-native-raw-fisheye-risk-case-review/v1", components: [{ kind: "model", name: "RF-DETR-L native KB4 TensorRT", version: "rf_detr_large_native_kb4:1", role: "risk proposals", identity_sha256: "b".repeat(64), }], }, execution: { effective_world_state_fps: 11.84338, world_state_completion_p95_ms: 47.940779, detector_total_p95_ms: 21.19895, gpu_utilization_p95_percent: 53, gpu_memory_used_maximum_mib: 9718, additional_inference_passes: 0, }, metrics: { selection: { case_count: 24, minimum_sequence_separation: 12, selected_bucket_coverage: { person: 22, animal: 3 }, selected_class_counts: { person: 44, dog: 3 }, }, runtime: { delivery_ratio: 1, integrated_runtime_gate_passed: true, operating_target_gate_passed: true, }, native_tensor_parity: { risk_detection_precision: 0.9887, risk_detection_recall: 0.9831, matched_mean_iou: 0.9882, }, }, acceptance: { review_ready: true, integrated_runtime_gate_passed: true, independent_quality_evaluated: false, semantic_candidate_accepted: false, }, review: { source_raster: { width: 800, height: 600 }, overlay: { client_rendered: true, toggleable: true }, cases: Array.from({ length: 24 }, (_, index) => { const caseId = String(index * 20 + 12).padStart(6, "0"); return { case_id: caseId, sequence: Number(caseId), frame_id: `frame-${caseId}`, evidence_time_ns: 35_000_000_000 + index * 1_000_000, image_url: `/review/${caseId}.jpg`, media_type: "image/jpeg", width: 800, height: 600, byte_length: 1000 + index, sha256: String(index.toString(16)).padStart(64, "0"), geometric_resampling: false, selection_buckets: [index % 2 ? "person" : "animal"], comparison: { native_detection_count: 1, legacy_704_detection_count: 1, matched_detection_count_iou_at_least_0_5: 1, }, proposals: [{ proposal_id: `proposal-${index}-0`, class_name: index % 2 ? "person" : "dog", risk_family: index % 2 ? "person" : "animal", score: 0.75, box_xyxy: [10, 20, 100, 200], }], }; }), }, limitations: ["No independent route truth."], }; } test("M4.8Q parser accepts only the native 800x600 no-resampling review contract", async () => { const result = await fetchM48TRiskQualityResult(resultId, { fetcher: async () => response(payload()), }); assert.equal(result.variant, "native-risk-review"); assert.equal(result.review.cases.length, 24); assert.equal(result.review.cases[0].width, 800); assert.equal(result.review.cases[0].proposals[0].className, "dog"); assert.equal(result.execution.additionalInferencePasses, 0); assert.equal(result.acceptance.independentQualityEvaluated, false); }); test("M4.8Q parser fails closed if raw-fisheye geometry is resampled", async () => { const invalid = payload(); invalid.source.geometric_resampling = true; await assert.rejects( fetchM48TRiskQualityResult(resultId, { fetcher: async () => response(invalid), }), /source resampling/, ); }); test("M4.8Q reuses the canonical image scene and viewer overlay toggle", async () => { const source = await readFile( new URL("../src/workspaces/laboratory/M48TRiskQualityVisual.tsx", import.meta.url), "utf8", ); assert.match(source, /