doxa-maps/plugin-designs/my-upg-100-list
Doxa Maps 502d7107e3 Every zone a reader can pick resolves to its groups, Deaf included
The legend offers 28 zones; every place that turned a picked id back
into a zone spread clusters.json's three geographic buckets, which is
27. The missing one is Deaf, whose two deaf lists the legend collapses
into a single affinity-bloc row. So in the browser, silently:

  - the Prayer packet for Deaf returned on "if (!zone) return";
  - the Deaf poster titled itself by its slug;
  - a selection containing Deaf dropped it in .filter(Boolean);
  - the packet count read 27 while 28 packets exist, and that count
    prints on page 1 and at the tip of page 2's triangle.

The packet fetch also lacked rop1, the field the Deaf selector reads,
so even a found Deaf zone would have resolved to nobody.

The fix is one enumeration. legend-tree.js now exports DEAF_SELECTOR
(the unified row's selector, which exists nowhere in clusters.json) and
zonesWithSelectors(clusters): the legend's leaves with their selectors
attached. The plugin's printableZones() keeps the 27 catalogue objects
exactly as they were and adds only what the catalogue lacks, so the
packet, poster, selection and count all see the same 28. rop1 joins
both packet fetches.

The three hand-typed copies of the Deaf literal (the map, the poster
generator, the offline packet generator) now import the one
definition; the offline generator's own id-to-selector table is
replaced by zonesWithSelectors. The copies left are frozen snapshots and
proof scripts, which keep independent literals on purpose.

The offline sweep gate's coverage had the same 27: it never required a
Deaf packet. It now counts through the legend.

Verified: the live API carries exactly 123 A017 rows, matching the
legend's Deaf count; the default 3x4 posters for sudan, kerala, deaf
and west-africa are byte-identical before and after.
2026-09-29 02:16:27 +00:00
..
assets/previews Rename app-profiles -> plugin-designs; build green under new naming (load-bearing paths updated, guards pass) 2026-09-17 18:18:18 +00:00
data Every zone a reader can pick resolves to its groups, Deaf included 2026-09-29 02:16:27 +00:00
index.html Session work: strobe fix, grid layout, stacked tree legend, selection camera, chip bounding, asset inheritance, gates 2026-09-20 04:49:25 +00:00
index.js Eleven plugin entries import the element helper they call 2026-09-28 17:40:35 +00:00
poster-wall.meta.json check:studio-rail — a production profile must DECLARE its name 2026-09-28 08:31:18 +00:00
poster-wall.vue The wall-printed packet gets all five of its card pages 2026-09-28 23:13:47 +00:00
upg-100-list.meta.json check:studio-rail — a production profile must DECLARE its name 2026-09-28 08:31:18 +00:00
upg-100-list.vue Every zone a reader can pick resolves to its groups, Deaf included 2026-09-29 02:16:27 +00:00
upg-100-mfe.meta.json Plugin Studio and the gallery split production from experimental, from each bundle's own stage 2026-09-27 06:04:08 +00:00
upg-100-mfe.vue No "tap a coloured dot" on UPG-100 at all — its map is a poster preview 2026-09-27 02:40:26 +00:00