Compare commits

...

2 commits

Author SHA1 Message Date
Doxa Maps
0af5a2a7f1 Rebuild posterverse for the confirmed Bible Posters row
BUNDLE=posterverse vite build only. The tree is regenerated once on the merged
tree that also carries the bible-posters bundle (generate-tree refuses the new
composes ref until that bundle is present).
2026-10-01 10:23:15 +00:00
Doxa Maps
987c982a5d Posterverse: Bible Posters' ids are confirmed, and composes declares it
bible-posters/bible-posters is the id the Bible Posters plugin ships, so its
Experimental row is no longer provisional, and posterverse.meta.json composes
it. Lands in the SAME push as the bible-posters bundle: without it the ref is
unresolved (check:capability-derived), and with the bundle but without this
commit check:posterverse-shelf fails arm D.
2026-10-01 10:23:08 +00:00
3 changed files with 9 additions and 9 deletions

View file

@ -1,11 +1,12 @@
{
"_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.",
"_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. A new row's ref joins this 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"
"wall-of-people-groups/wall-of-people-groups",
"bible-posters/bible-posters"
],
"label": "Posterverse (vertical-tab app shell: every poster plugin)"
}

View file

@ -10,10 +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: 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).
* before its plugin lands: mark it `provisional: true` and it 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 new 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
@ -32,8 +32,7 @@ export const TABS = [
{ id: 'country-posters', section: 'posters', icon: 'map', bundle: 'country-posters', profile: 'country-posters-mfe' },
{ 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' },
// Provisional ids: no bible-posters bundle exists yet, so this row is pruned until one does.
{ id: 'bible-posters', section: 'experimental', icon: 'flask', bundle: 'bible-posters', profile: 'bible-posters', provisional: true },
{ id: 'bible-posters', section: 'experimental', icon: 'flask', bundle: 'bible-posters', profile: 'bible-posters' },
]
// Bundles that must never be a Posterverse row. The allow-list above already excludes them; this set

File diff suppressed because one or more lines are too long