doxa-maps/public/README.md
Doxa Maps 1d3a929d51 Gate the country-name join, and record that the wiring was already done
Two cards, BUILD-LOCALIZED-COUNTRY-NAMES-ISO3-TO-ISO2 and
BUILD-ISO3-TABLE-COVERS-ALL-242-COUNTRIES. I measured before building and most
of both already exists: countryName(iso3, lang) is in library/utils, and the
bridge is already 242 entries with an exact correspondence to countries.json —
0 codes missing, 0 orphans, verified in both directions rather than by trusting
the table's own _meta. All 242 resolve in en, ar and zh today.

So what was actually missing is the thing that keeps it true. Writing the table
and keeping it correct are separate acts, and only the first one looks like work
— which is the same reason this repo already has a gate for orphaned gates.

check:country-names asserts both directions of drift (a data code with no
alpha-2, an alpha-2 the data never uses) and that every code resolves to a real
NAME rather than to its own input, which is what Intl returns for a well-formed
code it does not know.

★ IT CARRIES TWO ARMS THAT MUST FAIL. A coverage gate that only counts hits
passes identically on 242 correct entries and on a table where every lookup
silently returns its input, so the last block feeds it an unassigned code and a
malformed one and FAILS if either is reported as resolved. Mutation-tested in
both directions before committing: deleting TCD from the bridge fails with
"1 code(s) with no alpha-2"; pointing TCD at a bogus QQ fails with three
unresolved lookups, one per locale. Table restored byte-identical after.

ar and zh are not decoration: ar is our only RTL locale, and zh uses a script
where an untranslated Latin code is unmistakable on sight.

NOT WIRED INTO THE REGIONS TABLES AND POPUPS, deliberately, against the brief.
All four regions fetches already send &lang=, so the API returns country labels
in the reader's language and summarizeRegions names each country from that
label — those surfaces are already localized. Swapping countryName() in would
replace a correct localized name with a differently-spelled one: Intl's English
differs from our canonical names for 42 of 242 countries ("Cabo Verde" ->
"Cape Verde", "Bonaire, Sint Eustatius, and Saba" -> "Caribbean Netherlands").
I re-measured that 42 rather than trusting the header that claims it. Changing
which name is canonical is a product decision and it would break clone parity
against live doxa.life, so it is not mine to make inside a localization card.

public/README.md's bundle count moves 24 -> 25: generated by bun run tree when
the country-map bundle was added on the parent commit, not hand-edited.
2026-09-29 01:38:07 +00:00

968 B

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.