packet-render.js resolved the prayer points with `L.points || EN.points`. That is a whole-block fallback when the key is ABSENT, and TRUNCATING when a translator has done some of the 12 — a 3-element array is truthy. Measured at the rendered layer with a deliberately partial locale block: a page headed "12 Prayer Points" containing THREE, points 4..12 silently gone, including the Mark 5:1-20 passage point 4 prints in full. Nothing blank, no error raised. Invisible in all 11 shipping locales because every one of them is complete. It would have appeared on the next language added — and "a new language is a NEW BLOCK, never a code change" only holds if a PARTIAL block degrades per key, since half-finished is the normal state of a language in progress. Now merges per point and per field against English: English fixes the LENGTH and supplies every missing field, so a point translated for `text` but not `sub` keeps the English `sub` — and keeps its NUMBER, which the merge supplies. The sheet-sum invariant could not see this: a 3-point page is still exactly one sheet, so every number check-packet-render printed stayed correct while nine points were missing. It now measures and asserts the count. Mutation-tested — reverting the fix prints "prayer points : 2 / 12" and fails. All 11 locales regenerated with photos and swept: check:packets-all 11/11, each 12/12 points, including RTL ar and Devanagari hi. Renderer, generator and gate synced to doxa-maps-plugin-studio, which also lacked the .points-title and .wheel-title test hooks the new assertion needs. Also wires check:capability-exemplars into gates:post (33 -> 34 steps). It reads public/doxa-maps/manifest.json, a build artifact, so ordering mattered: `tree` writes the manifest and is &&-chained immediately before gates:post, and the gate SKIPs rather than fails when the manifest is absent. Full wave: 34/34. The quoted gates:post line in the README is re-synced in the same commit, because check:quoted-scripts goes red on the drift this commit creates.
4.2 KiB
Reference — capability exemplars (GENERATED)
Do not hand-edit. Regenerate with
bun run capability-exemplars;bun run check:capability-exemplarsfails if this file falls behind the manifest.This answers one question authoritatively: which bundles are the capability-N examples right now? It is derived from
public/doxa-maps/manifest.json, which is what the build computed from each folder's real shape — so it cannot drift from what ships.Cite this file rather than remembering. The same citation has been wrong in three separate places: a gate, the README, and the
/plugin-designerskill. The trap is that a folder's apparent simplicity does not decide its tier — an*.instances.jsonmakes a bundleparameterized(cap-2) no matter how light it looks, and ameta.jsontypedeclares tiers 3/4/5.
Generated from 22 bundle(s).
One canonical exemplar per tier (generated — quote these)
| Capability | Machine key | Cite this |
|---|---|---|
| 1 — single-element | single |
all-people-groups |
| 2 — preset-element (prop-table) | parameterized |
doxa-simple-map |
| 3 — multi-view-element (monolithic) | monolithic |
research-dashboard |
| 4 — composite-element (nested-element SPA) | nested-elements-mfe |
big-picture |
| 5 — app-shell (nested-SPA) | nested-mfe-spa |
doxa-maps-spa |
Known-wrong citations this block replaces (both measured 2026-09-22, both in the
/plugin-designerskill, which lives outside this repo and so cannot be gated from here):unified-research-dashboardas the cap-4 reference — that bundle does not exist; it becameresearch-dashboard(cap-3) plusdashboard-plus-grid(cap-4). Anddoxa-vision-cardas the cap-1 example — it ships adoxa-vision-card.instances.jsonwith 2 instances, which makes it cap-2 parameterized by the project's own rule.
Capability 1 — single-element
| Bundle | Profile | Machine key |
|---|---|---|
all-people-groups |
all-people-groups |
single |
cities-internet |
connectivity-list |
single |
cities-internet |
connectivity-map |
single |
cities-internet |
data-tables |
single |
country-posters |
countries-map |
single |
country-posters |
country-poster-wall |
single |
golden-path-check |
golden-path-check |
single |
gospel-resources |
charts |
single |
gospel-resources |
data-tables |
single |
gospel-resources |
resources-list |
single |
gospel-resources |
resources-map |
single |
my-upg-100-list |
poster-wall |
single |
my-upg-100-list |
upg-100-list |
single |
prayer-walk-planner |
prayer-walk-planner |
single |
regions-dashboard |
region-dashboards |
single |
regions-dashboard |
regions-list |
single |
template-bundle |
template-map-a |
single |
template-bundle |
template-map-b |
single |
Capability 2 — preset-element (prop-table)
| Bundle | Profile | Machine key |
|---|---|---|
demo-map |
demo-map |
parameterized |
doxa-simple-map |
doxa-simple-map |
parameterized |
doxa-vision-card |
doxa-vision-card |
parameterized |
people-groups-grid |
people-groups-grid |
parameterized |
upg-neighbor |
upg-neighbor |
parameterized |
Capability 3 — multi-view-element (monolithic)
| Bundle | Profile | Machine key |
|---|---|---|
doxa-research-map |
research-map |
monolithic |
research-dashboard |
research-dashboard |
monolithic |
Capability 4 — composite-element (nested-element SPA)
| Bundle | Profile | Machine key |
|---|---|---|
big-picture |
big-picture |
nested-elements-mfe |
country-posters |
country-posters-mfe |
nested-elements-mfe |
dashboard-plus-grid |
dashboard-plus-grid |
nested-elements-mfe |
my-upg-100-list |
upg-100-mfe |
nested-elements-mfe |
regions-dashboard |
regions-mfe |
nested-elements-mfe |
research-map-plus-grid |
research-map-plus-grid |
nested-elements-mfe |
stack-demo |
stack-demo |
nested-elements-mfe |
Capability 5 — app-shell (nested-SPA)
| Bundle | Profile | Machine key |
|---|---|---|
doxa-maps-spa |
doxa-maps-spa |
nested-mfe-spa |
plugin-studio |
plugin-studio |
nested-mfe-spa |