country-map.vue fetched /api/people-groups/list and mapped the posts straight to
points, without applyPeopleGroupList(). Every other consumer of that endpoint
calls it -- DataSourceManager, useDashboardData, useCsvExport, peopleGroupRecords
and the people-groups grid. So a host that asked for one curated list got the
WHOLE endpoint drawn on its country map, and nothing said so: the pins looked
like data rather than like the wrong list.
The list is applied to the raw posts, before they become points, which is where
every other consumer applies it. That is what keeps this element and a dashboard
showing the same country from disagreeing about which groups are in it -- the
same reason the country filter beside it is client-side.
The default list returns the rows untouched and makes no fetch, so an
unconfigured host pays nothing. A list whose membership cannot be loaded yields
NO groups rather than the wrong ones: applyPeopleGroupList's own contract, and
the safer failure for a prayer surface.
Measured three ways, with a temporary copy of check:universal-props that adds
country-map to its BUNDLES list (the reason the gate never saw this: 19 bundles
listed, this one absent):
- RED on the base: BYPASS country-map LIST-FETCH country-map.vue:98, exit 1;
- GREEN here: 20 bundles read engine, token, locale and list through the
library, exit 0, the gate's 9 planted-bypass self-tests still caught;
- a real list value changes the drawn count, through the shipped
applyPeopleGroupList and the served membership files: Nepal draws 34 points
on the default list, 29 on "frontier", 0 on "frontier-500k". That last zero
is data, not a failed load: the same membership matches 2 India rows.
Rebuilt on this base rather than carrying the earlier bundle, because
development rebuilt the same files in between and generated output is
regenerated, never merged. The list-membership URL is present in the built
bundle; the manifest diff is integrity hashes only, 0 other lines.
|
||
|---|---|---|
| .. | ||
| dx-maps | ||
| README.md | ||
public/ — the built output
This folder is GENERATED by bun run build; do not edit it by hand. It holds exactly one thing:
dx-maps/— the output folder: 25 plugin bundles and 37 pages, self-contained. Copy this one folder to any web host (or open it from disk) and it works.dx-maps/index.html— the front page: the Plugin Studio, every plugin in one place.dx-maps/<plugin>/<plugin>.js— a plugin's bundle (a custom element; load it with a<script>tag).dx-maps/<plugin>/<page>/index.html— a ready-made page for one plugin view (embed it in an<iframe>).dx-maps/manifest.json— every plugin, page and embed snippet, machine-readable.dx-maps/assets/— the data, fonts and images the plugins fetch at runtime.
The folder's name comes from name in vite.doxa-maps-build-config.json. Sources live in
plugin-designs/, library/ and data/; rm -rf public/ && bun run build recreates all of this.