doxa-maps/documentation
Doxa Maps e3d25ff6db The people-group list is a universal prop: the same maps can show any project's list
Every map showed DOXA's people groups, and only those. The same maps must serve other projects'
lists: Project 7000 (unreached), 4700 (frontier), 700 (frontier of 500,000 or more), 2000 (DOXA).
The list is now chosen the way the engine is:
  profile-config `list` > ?list= > window.MAP_LIST > 'doxa' (exactly today's behaviour)
with ids or project aliases ('700', 'project-7000').

- library/lists/lists.json: each list is a FILTER over the IMB / peoplegroups.org dataset already
  in the repo (Lostness Priority, Population, Engagement Status), never a hand-kept roster.
- library/scripts/people-groups/build-lists.mjs (`bun run lists`): writes each list's DOXA members
  to data/people-groups/lists/<id>.json, joined the way the Vision Card funnel joins, so the
  counts agree with it: unreached 7,341 (2,082 DOXA), frontier 4,754 (1,745), frontier-500k 737
  (71), unengaged 2,982 (1,929).
- library/lists/peopleGroupList.js: resolvePeopleGroupList and applyPeopleGroupList(rows, cfg).
  The default list returns the same array, unfetched. A list whose membership cannot load shows no
  groups (fails closed) rather than DOXA's whole list under another list's name.
- Tier A, every production map: DataSourceManager applies it (and the maps that build one pass
  their profileConfig), and so does every direct people-group fetch: people-groups-grid, the
  Big Picture header, research-dashboard (data, CSV export; the DOXA-wide /statistics baselines
  are skipped under another list), Regions (list, dashboards, their table), UPG-100 (4 fetches +
  the poster wall), Gospel's roster, and the Experimental upg-neighbor and Wall. The composites
  thread `list` to their children like `provider`.

Gates: check:universal-props gains a `list` column (LIST-FETCH, LIST-DSM, LIST-KEYS; its
self-test now plants 9 bypasses) and passes across 18 bundles, with all-people-groups allowed:
it draws the IMB dataset, so its list is Tier B. New check:list-prop-unit (Node, 17 cases, in
gates:post); poisoning the ladder order or deleting a membership file fails it. Documented in
documentation/reference-universal-props.md section 5.

Headless: all 14 touched bundles build; check:composites-mount 20/20 and check:composite-interop
17 links pass on this tree; no-orphan-gates, script-flags, quoted-scripts, doc-scripts pass. Not
rendered in a browser.
2026-09-26 05:16:02 +00:00
..
architecture Research Gallery: embed on someone else's page, in both modes 2026-09-24 19:03:37 +00:00
assets consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
contributing README: lead with the objectives, showcase the Research Gallery, teach the agent swarm 2026-09-24 18:34:02 +00:00
needs-eyes The partner-embed check becomes something a person can open 2026-09-26 00:47:12 +00:00
readme-images README screenshots retaken after ce42977c 2026-09-25 22:43:23 +00:00
screenshots consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
CONTRIBUTING.md README: three outputs, not five methods; a Languages section; screenshot gates see every shot again 2026-09-25 19:40:03 +00:00
develop-a-plugin-and-see-it-live.md README: three outputs, not five methods; a Languages section; screenshot gates see every shot again 2026-09-25 19:40:03 +00:00
explanation.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
how-to.md Place search makes no Mapbox call without a real token, and says so 2026-09-26 03:34:31 +00:00
README-embed-example.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
README-SECTION-3-cli-commands.md Docs: an iframe updates itself; a script embed's integrity hash pins the bytes, so re-copy it after each release 2026-09-26 02:07:14 +00:00
README.md README: lead with the objectives, showcase the Research Gallery, teach the agent swarm 2026-09-24 18:34:02 +00:00
reference-capability-exemplars.md Rename the output folder to dx-maps 2026-09-25 19:26:14 +00:00
reference-library-index.md Merge main into bundler-1/work (regenerate the tree, re-hash) 2026-09-24 05:33:32 +00:00
reference-universal-props.md The people-group list is a universal prop: the same maps can show any project's list 2026-09-26 05:16:02 +00:00
reference.md README: three outputs, not five methods; a Languages section; screenshot gates see every shot again 2026-09-25 19:40:03 +00:00
tutorial.md Docs: every build line a reader copies now carries BUILD_ALLOW=1 2026-09-25 03:07:52 +00:00
vendored-font-noto-serif-devanagari.md Move the vendored font's README out of the served folder 2026-09-24 04:15:26 +00:00
why.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00

documentation/ — pick your path

        "what is this?"          "teach me"        "how do I …?"       "look it up"      "all the detail"
             │                       │                   │                  │                  │
         why.md  ──────────►  tutorial.md  ────►  how-to.md  ────►  reference.md  ───►  architecture/
        (2 min, 1 diagram)   (first map)         (task recipes)     (tables)           (contracts)
  • why.md — the problem and the "map islands" idea. Start here.
  • tutorial.md — build your first map, no jargon.
  • how-to.md — recipes: embed, iframe, SPA, colors, CDN, mobile, tokens.
  • reference.md — config fields, build scripts, the profile-config contract.
  • explanation.md — the model in 15 lines.
  • architecture/ — the deep end: full contracts, the per-file catalog.
  • README-embed-example.md — the drop-in README used when this bundler is embedded inside a host repo.

Working on the repo:

Nothing on the simple path is longer than a few minutes; everything complex lives in architecture/, linked from where you'd need it.