Summary
The population scatter chart draws its canvas once per data change using getBoundingClientRect() with no ResizeObserver — after a window resize the bitmap is stretched while the cached dotAreasRef hit-test positions keep the old coordinates.
Evidence
apps/web/src/pages/Population.tsx:113-253; the canvas is CSS w-full. (Contrast PatientDetail's OrchestratorCanvas, which correctly uses feedsRef + ResizeObserver.)
Impact
After any window resize, clicks within a dot's radius can navigate to a different patient than the one visually clicked.
Summary
The population scatter chart draws its canvas once per data change using
getBoundingClientRect()with noResizeObserver— after a window resize the bitmap is stretched while the cacheddotAreasRefhit-test positions keep the old coordinates.Evidence
apps/web/src/pages/Population.tsx:113-253; the canvas is CSSw-full. (ContrastPatientDetail'sOrchestratorCanvas, which correctly usesfeedsRef+ResizeObserver.)Impact
After any window resize, clicks within a dot's radius can navigate to a different patient than the one visually clicked.