Driver decisions (cards BUILD-OUTPUT-IS-ONE-FOLDER, BUILD-PLUGIN-STUDIO-IS-THE-OUTPUT-FRONT-PAGE).
- public/ holds only <tree>/ and a generated README.md. The build no longer writes public/index.html,
public/assets/ or public/__gallery/; `rm -rf public && bun run build` recreates exactly these two.
- The Plugin Studio is <tree>/index.html (tree-base "."), replacing the staging-forge chooser; nothing
is written above the tree. check:staging-lang, which tested that chooser, is retired with it.
- Assets are gathered in a temp directory and the fetched allowlist staged into <tree>/assets/ as
before. fonts/, images/, brand/ and legacy/ existed ONLY in public/assets: they are sources and move
to data/ (git mv). Poster previews keep their tracked sources in plugin-designs/*/assets/previews
(all 378 verified present).
- __gallery/ is archived out of public/ (a copy kept in the umbrella's _qa-cycle/archive) and out of
the build; generate-gallery renders only on request, into a directory you name, never public/.
- Native shells load the output folder: capacitor webDir public/<tree> (cap copy needs an index.html
there), Tauri frontendDist + window url relative to it. internal/sync-app-shells.mjs keeps both in
step with the tree's name on every build, so the coming rename stays one config line; the Capacitor
start page resolves its leaf tree-relative.
- dropin.include now lists only extras (README.md): the tree is always shipped and never named twice;
excludes are tree-relative ({tree}/...). clean.mjs removes the old root entries from existing
checkouts; the build lock and public/.gitignore's rules move out of public/.
- check:wp-embed read the BUILT manifest from gates:pre, before the build, so a from-scratch build
could never pass; it runs in gates:post and reads the tree name from config.
- Stale bundles refreshed by the clean build (key-cities, template-bundle, wall-of-people-groups);
the CLI doc's quoted scripts re-synced; capability exemplars regenerated; the '#' note leaves
check:stale-sweep-claim's command (it was already in //scripts).
Proof: rm -rf public && bun run build -> public/ = README.md + doxa-maps/; check:sri, check:drop,
check:parse, check:public-hygiene, check:quoted-scripts, check:capability-exemplars PASS; all 57 pages
(the front page + 56 leaves) mount under /doxa-maps/ on this tree. check:facet-cascade is red as on main.
26 lines
2.1 KiB
Markdown
26 lines
2.1 KiB
Markdown
# data/ — the bundler's source-of-truth data
|
|
|
|
**The law: data lives here; `public/` is generated.** `public/` holds only the output folder
|
|
(`public/<tree>/`, named by `name` in `vite.doxa-maps-build-config.json`) and a generated README. The
|
|
build (`internal/generate-tree.mjs`) copies what the plugins FETCH at runtime from here into
|
|
`<tree>/assets/`, alongside the per-profile data in `plugin-designs/*/data/`. You should be able to
|
|
`rm -rf public/` and get it all back with `bun run build`.
|
|
|
|
| Folder | Served at | What it is |
|
|
|---|---|---|
|
|
| `people-groups/` | `<tree>/assets/people-groups/` (the fetched cuts only) | People-group datasets (CSV/JSON) the maps read at runtime |
|
|
| `vendor/` | `<tree>/assets/vendor/` | Third-party runtime assets (e.g. table libraries) |
|
|
| `posters/` | `<tree>/assets/posters/` (opt-in: `bundlePosters` / `posterSources`) | Rendered poster set (heavy pipeline output; the export button fetches these) |
|
|
| `tables/` | `<tree>/assets/tables/` | The MERGED served table set (its index.json is the merge; per-profile `plugin-designs/*/data/tables` are build-time sources) |
|
|
| `pplr/` | `<tree>/assets/pplr/` (the fetched files only) | The PPLR data maps' derived datasets |
|
|
| `fonts/` | `<tree>/assets/fonts/` | Vendored typefaces (SIL OFL), e.g. Bebas Neue for the regions clone |
|
|
| `images/` | `<tree>/assets/images/` | Images the plugins fetch (e.g. the regions list's world-map watermark; see its PROVENANCE) |
|
|
| `brand/` | not served | Logos and brand imagery (sources; the optional `library/layouts/app-wrapper-material` shell references them) |
|
|
| `legacy/` | not served | Archived standalone builds kept for reference (e.g. the original upg-neighbor page) |
|
|
| `external-bundles/` | not served | Prebuilt map IIFEs vendored from sibling projects (not built here); only the optional `layouts/` shell mounted them |
|
|
|
|
`fonts/`, `images/`, `brand/` and `legacy/` moved here from `public/assets/` on 2026-09-25 (card
|
|
BUILD-OUTPUT-IS-ONE-FOLDER): they were sources that existed only in the generated folder.
|
|
|
|
Don't edit anything under `public/` by hand — change it here (or in `plugin-designs/*/data/`,
|
|
`layouts/*/assets/`) and rebuild.
|