- ONE REGISTRY PER PAGE. Every bundle inlines its own copy of posterTypes.js, and <dxm-poster-section> is
defined by whichever bundle loads first, so with a module-level Map that element saw only its own bundle's
types: type="upg100-list" rendered "none" when the country-posters bundle had defined it. The registry now
lives on the page (globalThis.__DXM_POSTER_TYPES__, created once): every copy registers into it and reads
from it; a name registered twice keeps the first (a dev warning; the built-in country is silent); every
registration is announced on window (dxm-poster-type-registered), and PosterSectionView looks again when
its type arrives after it asked.
- COLUMNS (carried from the Poster Sections plugin PR so the element's library lands once): columns="1".."5"
maps to profile-config.columns and to PosterWall's existing columns prop; absent or out of range is
today's default, and a reader's saved per-row choice still wins.
- check:poster-type-registry (gates:pre; self-test in gates:post): two independent copies of the module side
by side, as two bundles on one page; a type registered through one is found through the other; first wins;
announced. The self-test's per-bundle registry fails.