From 941b308c29442b7a38e5e8e7d70ff1ba4f8af570 Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Sat, 17 Oct 2026 05:34:41 +0400 Subject: [PATCH] test(qa): floor verification logs each contact's probe answer and DEM prior (10b review 6) On Navara each contact row now carries the surface probe's source and tile size and the coarse DEM floor (cachedGroundFloor). The buried contacts (SWA4871 60.5 m and AAL2592 -27 m against a 121-126 m mesh) have no DEM prior (null: the terrain proxy answers 503 here) and the mesh floor sampler latches nothing without one, so their sprite heights stay the barometric fallback; the same rows bury on Cesium when the same contacts are low. --- scripts/qa-floor-verify.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/qa-floor-verify.mjs b/scripts/qa-floor-verify.mjs index 756f4cfe3..22f842afe 100644 --- a/scripts/qa-floor-verify.mjs +++ b/scripts/qa-floor-verify.mjs @@ -100,6 +100,7 @@ const report = await page.evaluate(async () => { const center = geo.cartesian3.fromDegrees(window.__QA_SITE.lon, window.__QA_SITE.lat, 200); const nearby = layer.getNearby(center, 15000, 60); const exclude = engine.movers.list().map(({ id }) => id).filter((id) => id.startsWith('flights')); + const { cachedGroundFloor } = await import('/src/data/groundFloor.js'); const out = []; for (const p of nearby) { const c = geo.cartographic.fromCartesian(p.position); @@ -113,6 +114,10 @@ const report = await page.evaluate(async () => { renderAltM: +c.height.toFixed(1), meshM: meshH != null ? +meshH.toFixed(1) : null, aboveMeshM: meshH != null ? +(c.height - meshH).toFixed(1) : null, + // Why a contact sits where it does (10b review 6): the probe's own + // answer (source, tile size) and the coarse DEM floor (the prior). + probe: answer ? { source: answer.source, tileSizeM: answer.tileSizeM ?? null } : null, + demFloorM: cachedGroundFloor(c.latitude * 180 / Math.PI, c.longitude * 180 / Math.PI) ?? null, }); } let shown = 0, hidden = 0;