Posterverse: Poster Design's ids are confirmed, and composes declares it

poster-design/poster-design-mfe is the id poster-design-plugin ships, so its row
is no longer provisional, and posterverse.meta.json composes it. This commit
must land in the SAME push as the poster-design bundle: without the bundle the
ref is unresolved (check:capability-derived) and check:posterverse-shelf fails
arm D; with the bundle and without this commit, arm D fails the other way.
This commit is contained in:
Doxa Maps 2026-09-30 21:49:57 +00:00
parent 939db5b6c7
commit 2f2fba1229
2 changed files with 7 additions and 6 deletions

View file

@ -1,9 +1,10 @@
{
"_comment": "Declares the composability tier. 'nested-mfe-spa' = capability 5: an app shell whose single element <posterverse-app> renders a vertical-tab rail of whole poster plugins, each mounted as its own real element from the manifest (no iframes). The tier is DERIVED from `composes` at tree generation (composing a cap-4 makes this cap-5) and this `type` is checked against it. `composes` lists every row in src/tabs.js whose bundle exists today; a provisional row (poster-design, bible-posters) joins the list when its bundle lands, since an unresolved ref fails check:capability-derived.",
"_comment": "Declares the composability tier. 'nested-mfe-spa' = capability 5: an app shell whose single element <posterverse-app> renders a vertical-tab rail of whole poster plugins, each mounted as its own real element from the manifest (no iframes). The tier is DERIVED from `composes` at tree generation (composing a cap-4 makes this cap-5) and this `type` is checked against it. `composes` lists every row in src/tabs.js whose bundle exists; a provisional row (bible-posters) joins the list in the SAME push as its bundle, since an unresolved ref fails check:capability-derived and a missing one fails check:posterverse-shelf.",
"type": "nested-mfe-spa",
"composes": [
"my-upg-100-list/upg-100-mfe",
"country-posters/country-posters-mfe",
"poster-design/poster-design-mfe",
"wall-of-people-groups/wall-of-people-groups",
"all-people-groups/all-people-groups",
"upg-neighbor/upg-neighbor"

View file

@ -10,9 +10,10 @@
* appears, whatever the manifest holds.
*
* ★ A ROW WHOSE BUNDLE IS NOT IN THE TREE IS PRUNED, not painted dead. That is how a row can be listed
* before its plugin lands: Poster Design and Bible Posters are declared with PROVISIONAL ids and stay
* invisible until a bundle of that id exists. Their owners confirm the ids when they start; change the
* `bundle`/`profile` here to match, never the row `id` (the id is the stable key for ?tab= links).
* before its plugin lands: Bible Posters is declared with PROVISIONAL ids and stays invisible until a
* bundle of that id exists. Its owner confirms the ids; change the `bundle`/`profile` here to match,
* never the row `id` (the id is the stable key for ?tab= links). A provisional row's `composes` entry
* lands in the same push as its bundle (check:posterverse-shelf arm D).
*
* ★ MOUNT THE COMPOSITE, NOT A LEAF. The profile named here is the one that mounts. my-upg-100-list and
* country-posters each ship a leaf map, a leaf wall and the capability-4 composite of the two; the
@ -29,8 +30,7 @@ export const SECTIONS = [
export const TABS = [
{ id: 'upg-100', section: 'posters', icon: 'list', bundle: 'my-upg-100-list', profile: 'upg-100-mfe' },
{ id: 'country-posters', section: 'posters', icon: 'map', bundle: 'country-posters', profile: 'country-posters-mfe' },
// Provisional ids: no poster-design bundle exists yet, so this row is pruned until one does.
{ id: 'poster-design', section: 'posters', icon: 'poster', bundle: 'poster-design', profile: 'poster-design-mfe', provisional: true },
{ id: 'poster-design', section: 'posters', icon: 'poster', bundle: 'poster-design', profile: 'poster-design-mfe' },
{ id: 'wall-of-people-groups', section: 'experimental', icon: 'flask', bundle: 'wall-of-people-groups', profile: 'wall-of-people-groups' },
{ id: 'all-people-groups', section: 'experimental', icon: 'flask', bundle: 'all-people-groups', profile: 'all-people-groups' },
{ id: 'upg-neighbor', section: 'experimental', icon: 'flask', bundle: 'upg-neighbor', profile: 'upg-neighbor' },