The link ran one way. A choice on the map narrowed the grid — region, religion
family and language, verified on both engines — and a choice in the grid moved
nothing. A reader who filtered the list down to 83 peoples had no idea where in
the world they were.
★ IT IS THE GRID'S FILTERED SET, NOT A ROW SELECTION, AND THAT IS A FINDING.
The card says "selecting N rows". people-groups-grid has no row selection — no
checkboxes, no selection state — and the desktop pair's fly-to-selection is
driven by the DASHBOARD's own data table through its selection bus
(useSelectionCamera.js), not by this grid. So building "select rows" here would
have meant inventing a control nobody asked for. The grid already reports the
slugs it is showing on every `groups-filtered`, so that existing signal is the
wire: no new UI, and a grid mounted alone still emits into a room with no
listener.
The composite sends slugs rather than a bbox because it has no coordinates —
this map is the half that knows where anything is, so it frames them itself.
CAPPED AT 400, and the cap is the point rather than a performance worry: a
larger set is not a selection, it is "almost everything", and framing it would
swing the camera to a world view that tells the reader nothing while moving a
lot.
CAMERA POLICY COPIED, DELIBERATELY, from research-dashboard's
useSelectionCamera.js, which worked all of this out for the desktop pair: a
single row has a zero-area bbox and would fit at street level for what is really
a country-scale centroid; several peoples in one place are the same problem by
another route; a set spanning most of the globe animates the wrong way around
the antimeridian if framed literally. One shared composable in library/ is the
right end state — cited rather than imported because a library move cannot be
landed from this lane today, and a later move should delete this block rather
than leave a third copy.
⚠ MOTION SAFETY. The Driver is photosensitive, and a camera that re-animates on
every keystroke is the strobe class this repo has already paid for. An identical
slug set never re-flies, and a reduced-motion preference jumps rather than eases
— same destination, no traversal.
VERIFIED HEADLESS, per the browser policy: both bundles build, `fitSlugs`
appears in the sender and the receiver, SRI and composite-freshness are clean
and no other bundle goes stale. The behaviour itself NEEDS EYES.