doxa-maps/internal
doxa-maps-88655c70 0574fe7ffa A gate that looks at the map, because every other one passed over a blank rectangle
Injecting mapbox-gl.css collapsed this profile's canvas to a white strip, and
every assertion I owned went green over it: verify-gospel-map counted 2,107 of
2,107 pins "rendered", leaves-mount found a full shadow root, the i18n gates
found every label translated and nothing clipped. queryRenderedFeatures does not
care whether anything is visible. I caught it by opening the screenshot, which is
not a system.

So: screenshot the map region and count distinct colours — a basemap has
hundreds, a blank rectangle one or two — and check the map still fills its
element.

THE POISON ARM CORRECTED THIS GATE TWICE, which is the argument for having one.

First it hid the canvas, and the region still showed 316 colours: the sample was
taken over the whole custom element, and the legend card is itself full of
colour. The sample is now clipped to the right of the legend, so it looks at map
alone.

Then it collapsed the container, and the gate still passed — because I was
comparing the canvas to its own container, and in the real incident BOTH
collapsed together, leaving that ratio at 1.0. The check would have passed the
exact defect it was written for. The ratio that matters is map-to-ELEMENT, and
the poison now reproduces the incident rather than approximating it: 1440x300
inside a 1440x900 host, caught at 33%.

Measured after: 644 distinct colours, map filling 100% of the element, and the
poison arm red.
2026-09-25 15:54:03 +00:00
..
acceptance Make the interop harness see through shadow DOM, and wait long enough 2026-09-23 15:13:14 +00:00
element-census check:element-census-vs-live: what is on one side and not the other, ours vs the live page we clone 2026-09-25 14:15:19 +00:00
fixtures Gate the scrim-covers-viewport rule, and say what was not verified 2026-09-22 21:54:39 +00:00
lib Add deepFindAll to the shared browser helper, so counting probes stop being hand-rolled 2026-09-22 06:19:13 +00:00
plugin-gallery Studio first run: dev lists what the build lists, and the self-test finds its manifest 2026-09-25 03:43:38 +00:00
_serve-reaped.mjs Make a gate's dev server die with the gate 2026-09-24 22:54:11 +00:00
_serves-this-tree.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
atomic-public-swap.sh Session work: strobe fix, grid layout, stacked tree legend, selection camera, chip bounding, asset inheritance, gates 2026-09-20 04:49:25 +00:00
browser-slot.sh browser-slot: a slot is held for at most BROWSER_MAX_HOLD seconds, and only by the wrapper 2026-09-25 13:46:33 +00:00
build-lock.sh Move internal files out of the repo; fix five dead links; a fuller delegation diagram 2026-09-25 05:14:10 +00:00
build-packet-fixtures.mjs packets: fixtures at the PAGE BOUNDARY, which nothing had ever rendered 2026-09-24 23:53:07 +00:00
check-a11y-button-names.mjs Browser gates now prove the server is serving THIS checkout 2026-09-24 12:54:35 +00:00
check-aria-labels-localized.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-backlog-refs.mjs poster cards: the print-options row stays inside its own card 2026-09-24 19:19:02 +00:00
check-backlog-status-enum.mjs The backlog-status enum was too narrow, not the nine cards wrong 2026-09-24 11:58:39 +00:00
check-basemap-labels-localized.mjs check:basemap-labels: the basemap's place names follow the reader's language on both engines 2026-09-25 10:48:42 +00:00
check-capability-citations.mjs Widen the capability-citation gate to the documentation folder 2026-09-22 10:50:55 +00:00
check-capability-exemplars.mjs consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
check-card-deck.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-catalog-currency.mjs catalog-currency: a bundle missing from the catalog now fails instead of passing 2026-09-22 04:06:55 +00:00
check-catalog-identity.mjs prove the live server serves the catalog's exact bytes 2026-09-21 12:46:48 +00:00
check-composite-embed-knobs.mjs Gate the embed contract: a composite must pass tk and provider down 2026-09-24 20:26:33 +00:00
check-composite-freshness.mjs check:composite compares bytes, not mtimes: rebuild each composite and diff it with the committed bundle 2026-09-25 10:10:08 +00:00
check-composite-registration.mjs Compare every silently-failing side effect, not just strategy keys 2026-09-22 20:09:46 +00:00
check-composite-srcs.mjs Make the two gates say where the tree name came from 2026-09-23 11:29:05 +00:00
check-csv-export-shape.mjs Checkpoint the swarm's in-flight work 2026-09-22 21:42:18 +00:00
check-deck-click.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-dependency-names.mjs Gate: every declared dependency must be a real package name 2026-09-22 06:49:21 +00:00
check-doc-quotes-scripts.mjs Check that the CLI doc still quotes package.json correctly 2026-09-23 04:19:42 +00:00
check-done-evidence.mjs check:done-evidence knew one card schema and failed the best-evidenced cards on the board 2026-09-24 11:38:17 +00:00
check-dxlife-untouched.mjs add a VCS-independent witness for the read-only DX-life clone 2026-09-20 09:45:25 +00:00
check-element-census-vs-live.mjs check:element-census-vs-live: what is on one side and not the other, ours vs the live page we clone 2026-09-25 14:15:19 +00:00
check-embed-base-resolution.mjs embedBase: the asset pool is INSIDE the tree, not beside it 2026-09-25 01:30:56 +00:00
check-embed-basemap-paints.mjs Six more browser gates measure THIS build or nothing 2026-09-25 10:03:16 +00:00
check-embed-targets-exist.mjs Track the embed-target gate, which was registered but never committed 2026-09-22 14:57:36 +00:00
check-experimental-shelf.mjs check:experimental-shelf: every experimental plugin, measured working, and two label fonts that 404'd 2026-09-25 11:35:18 +00:00
check-facet-cascade.mjs Land the swarm's dashboard work: colour, rails, cascade, scroll 2026-09-22 18:57:39 +00:00
check-facet-changes-map.mjs Merge main into bundler-2/work 2026-09-24 17:00:25 +00:00
check-facet-one-field.mjs Gate the scrim-covers-viewport rule, and say what was not verified 2026-09-22 21:54:39 +00:00
check-filter-width-stable.mjs Plugin studio: an Explorer tree for the rail, imitating VS Code 2026-09-24 21:40:48 +00:00
check-fits-the-screen.mjs Plugin studio: an Explorer tree for the rail, imitating VS Code 2026-09-24 21:40:48 +00:00
check-fixed-anchoring.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-gospel-all.mjs A gate that looks at the map, because every other one passed over a blank rectangle 2026-09-25 15:54:03 +00:00
check-gospel-composed-filters.mjs A gate that asks whether anything is there — and it caught a dead bundle 2026-09-25 09:52:25 +00:00
check-gospel-coverage-consistent.mjs Hold the gap table to the split it publishes 2026-09-25 00:24:29 +00:00
check-gospel-english-leaks.mjs Translate the list and the table headers; correct a claim I had not checked 2026-09-25 12:36:41 +00:00
check-gospel-leaves-mount.mjs A gate that asks whether anything is there — and it caught a dead bundle 2026-09-25 09:52:25 +00:00
check-gospel-map-paints.mjs A gate that looks at the map, because every other one passed over a blank rectangle 2026-09-25 15:54:03 +00:00
check-heartbeat-threshold.mjs Assert the shipped heartbeat ramp, not just the panel's fallback 2026-09-22 22:44:10 +00:00
check-host-locale-contract.mjs browser-slot: a slot is held for at most BROWSER_MAX_HOLD seconds, and only by the wrapper 2026-09-25 13:46:33 +00:00
check-i18n-never-translated.mjs gate: a key copied into all 11 catalogs is not a translated key 2026-09-25 01:06:08 +00:00
check-i18n-parity.mjs All eleven locales complete — the last 162 keys of i18n debt, and the ratchet empties 2026-09-24 08:48:02 +00:00
check-kpi-unit-once.mjs Translate the chrome that was English in all eleven locales 2026-09-25 06:10:27 +00:00
check-label-joins.mjs add a label-join gate: fail on any new equality predicate comparing two independently-derived values 2026-09-20 09:05:18 +00:00
check-legend-export-reachable.mjs Six more browser gates measure THIS build or nothing 2026-09-25 10:03:16 +00:00
check-legend-info-localized.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-legend-matches-source.mjs gates: two unwired checks were red on main, and nothing could tell us 2026-09-24 15:53:58 +00:00
check-library-index.mjs library-index gate: ask whether the menu drifted, not whether a file is older 2026-09-24 13:29:58 +00:00
check-link-rot-sample.mjs Check 5fish links too, and say why YouVersion stays out 2026-09-25 02:44:37 +00:00
check-locale-reachable.mjs locale gate: read the function it names, not the gap between two landmarks 2026-09-25 06:33:04 +00:00
check-manifest-covers-discovery.mjs Catch a plugin the manifest forgets, without calling a gated one a defect 2026-09-22 15:21:27 +00:00
check-map-embed-cells.mjs All People Groups loads fast on a light map; the Vision Card becomes a true funnel from data 2026-09-25 07:18:30 +00:00
check-map-unmount-guard.mjs useMapInstance: a map unmounted mid-initialise returns quietly instead of throwing 2026-09-25 05:01:13 +00:00
check-map-unmount-mid-init.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-maplibre-layer-drops.mjs Browser gates: prove the server is THIS build before believing it 2026-09-24 17:00:11 +00:00
check-mfe-two-tab.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-mjs-parses.mjs Parse the build scripts before the build runs them 2026-09-22 21:33:32 +00:00
check-nav-reachable-mobile.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-nested-token-delivery.mjs Make the two gates say where the tree name came from 2026-09-23 11:29:05 +00:00
check-no-absolute-paths.mjs Keep the development-era internal code name out of shipped files 2026-09-22 22:18:18 +00:00
check-no-conflict-markers.mjs Correct the record: the dead bundle was my merge, not a duplicate import 2026-09-25 10:19:07 +00:00
check-no-internal-codename.mjs Keep the development-era internal code name out of shipped files 2026-09-22 22:18:18 +00:00
check-no-orphan-gates.mjs Wire the seven gates that could run, and make wave membership visible 2026-09-24 11:24:01 +00:00
check-no-public-binds.mjs Bind local preview servers to loopback only 2026-09-22 17:32:33 +00:00
check-no-stale-sweep-claim.mjs Stop telling readers the audio sweep is unfinished — it finished 2026-09-25 02:57:50 +00:00
check-one-palette.mjs Gate that map, legend and charts share one palette 2026-09-22 18:00:51 +00:00
check-packet-browser.mjs Queue the browser gates, and let them serve their own tree 2026-09-24 17:43:32 +00:00
check-packet-render.mjs Six more browser gates measure THIS build or nothing 2026-09-25 10:03:16 +00:00
check-packet-strings-parity.mjs Guard the packet catalog: the 12 prayer points and the wheel had no parity gate 2026-09-24 08:57:34 +00:00
check-packets-all.mjs packets: the all-packets gate says how many ZONES it covered 2026-09-24 22:49:23 +00:00
check-poster-card-fits.mjs Poster wall: the banner gets stickers, top and bottom 2026-09-25 06:41:56 +00:00
check-poster-degrades-honestly.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-poster-print-fallback.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-poster-prints.mjs Six more browser gates measure THIS build or nothing 2026-09-25 10:03:16 +00:00
check-poster-raster.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-poster-wall-localised.mjs Installing i18n also provides it, so a host can set the locale 2026-09-25 13:49:58 +00:00
check-prayer-walk-planner.mjs Prayer Walk Planner: full screen from any embed, and a print proven sharp by resolution 2026-09-25 10:51:21 +00:00
check-print-geometry.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-profile-descriptions.mjs Gate: every shipped profile must say what it is 2026-09-22 03:23:55 +00:00
check-provider-switch.mjs Queue the browser gates, and let them serve their own tree 2026-09-24 17:43:32 +00:00
check-published-matches-build.mjs gate: what readers are SERVED must be what we BUILT 2026-09-24 22:56:56 +00:00
check-published-tree-weight.mjs gate: the tree we publish has a weight, and nothing was watching it 2026-09-25 00:20:02 +00:00
check-quoted-scripts.mjs consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
check-research-gallery-embed.mjs Research Gallery: boot on a partner page under the CORS the live server actually sends 2026-09-25 08:55:52 +00:00
check-scrim-covers-viewport.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-script-flags-reachable.mjs Make advertised script flags actually reachable 2026-09-22 17:44:02 +00:00
check-sfc-script-parses.mjs Localize tab labels for it/ro/zh, and prove the catalog is actually read 2026-09-24 06:23:30 +00:00
check-share-policy.mjs prayer-walk-planner can be shared — the last published map with no sharing path 2026-09-24 08:23:30 +00:00
check-shared-component-reached-bundles.mjs Map place names in the reader's language, on both engines 2026-09-25 09:46:21 +00:00
check-shot-distinctness.mjs consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
check-shot-fidelity.mjs Shoot the README with the token the bundles ship, and make the fidelity gate ask 2026-09-23 06:26:39 +00:00
check-shot-fonts.mjs Make the flagship capability-5 screenshot show the studio doing something 2026-09-22 09:48:20 +00:00
check-shot-freshness.mjs check:shots compares bundle content, not dates; retake the stale shots 2026-09-24 21:54:08 +00:00
check-snapshot-guard.mjs A half-finished catalogue fetch can no longer overwrite a good one 2026-09-24 11:59:48 +00:00
check-spa-tab-order.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
check-staging-forwards-lang.mjs Host locale: gate the profile-config contract, forward ?lang= into staging embeds, stop losing gate stderr 2026-09-25 12:18:26 +00:00
check-studio-every-plugin.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
check-surfaces-read-the-tier.mjs Tell the curated tables that GRN and Scripture Earth exist 2026-09-24 22:15:53 +00:00
check-synced-css-copies.mjs Teach the synced-CSS gate what a selector is, and turn it on 2026-09-23 01:22:36 +00:00
check-tab-radius-token.mjs Gate the tab radius so a superseded rationale cannot quietly restore the pill 2026-09-23 01:08:10 +00:00
check-tabs-localized.mjs Six more browser gates measure THIS build or nothing 2026-09-25 10:03:16 +00:00
check-tauri-config.mjs Commit Cargo.lock: it was ignored by association with real build output 2026-09-22 06:53:27 +00:00
check-upg-map-data-painted.mjs browser-slot.sh: stop overwriting the caller's BASE, and let a waiter take any slot that frees 2026-09-25 10:03:16 +00:00
check-url-resolver.mjs Gate the URL-resolver rule the build could never have caught 2026-09-22 14:18:26 +00:00
check-verification-tags.mjs Record which kind of verification closed each card 2026-09-22 17:00:26 +00:00
check-vision-card-numbers.mjs Six more browser gates measure THIS build or nothing 2026-09-25 10:03:16 +00:00
check-zone-census.mjs zone-census: default to this repo, not one author's worktree 2026-09-24 04:18:24 +00:00
clean.mjs doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
drop-portability-check.mjs derive the check:drop coverage floor from the manifest instead of hardcoding it 2026-09-20 07:22:07 +00:00
embed-smoke.mjs Say what the embed-smoke node count does and does not mean 2026-09-23 07:53:31 +00:00
fix-sri.mjs Repair SRI hashes without a full rebuild 2026-09-23 20:35:07 +00:00
generate-capability-exemplars.mjs Generate one canonical exemplar per tier, so a miscitation is copy-paste to fix 2026-09-22 05:35:03 +00:00
generate-gallery.mjs Anchor the gallery's assets to the tree, not to the page directory 2026-09-22 22:03:58 +00:00
generate-library-index.mjs consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
generate-packet-fixture.mjs packets: give CI something to check, instead of a sweep that always SKIPs 2026-09-24 14:33:36 +00:00
generate-tree.mjs isMap per profile: a map-less leaf no longer bakes, or preloads, a map engine it never uses 2026-09-25 10:17:33 +00:00
inline-parse-check.mjs doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
install-shell.mjs Brand-neutral shared VerticalTabsLayout with lazy nested-element hosting; fix cap-5 prayer tab leaf path; neutralize library identifiers; add Forgejo CI build-gate workflow 2026-09-19 17:24:30 +00:00
legend-columns-probe.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
long-frames-probe.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
measure-map-load.mjs Embed snippets preload the Mapbox engine, so a partner page fetches it alongside the bundle 2026-09-25 08:56:09 +00:00
mobile-sheet-probe.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
plugin-gallery-smoke.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
public-hygiene-check.mjs Move the private field-access dataset out of the repo 2026-09-24 18:34:01 +00:00
readme-shots-fix.mjs consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
readme-shots.mjs README: the Experimental shelf, with Wall of People Groups and the Prayer Walk Planner 2026-09-25 11:22:52 +00:00
run-parallel.mjs Browser gates: two slots with a memory floor, not one mutex 2026-09-25 07:37:26 +00:00
serve-strict.mjs Research Gallery: boot on a partner page under the CORS the live server actually sends 2026-09-25 08:55:52 +00:00
set-app-start-page.mjs The phone app opens the UPG-100 list, not the plugin studio 2026-09-25 09:11:01 +00:00
settled-tree-gate.mjs Raise the settled-tree floors, on the gate's own advice 2026-09-23 17:00:40 +00:00
share-roundtrip-smoke.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
smoke-studio.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
smoke.mjs Land the swarm's work: no iframes anywhere, a tree that keeps its shape, deeper facets 2026-09-22 14:51:52 +00:00
sri-consistency-check.mjs Repair SRI hashes without a full rebuild 2026-09-23 20:35:07 +00:00
staging-forge.css feat: map provider swap — mapbox|maplibre engine + hybrid geocoder + provider badge; staging title doxa-maps 2026-09-11 21:47:25 +00:00
staging-forge.js Host locale: gate the profile-config contract, forward ?lang= into staging embeds, stop losing gate stderr 2026-09-25 12:18:26 +00:00
staging-reference-v2.html Host locale: gate the profile-config contract, forward ?lang= into staging embeds, stop losing gate stderr 2026-09-25 12:18:26 +00:00
sync-dropin.mjs Public data ships without working notes; unused data files stay out of the drop-in 2026-09-16 20:16:08 -05:00
template-literal-check.mjs Scan all of library/ for backticks in shadow-CSS comments 2026-09-22 18:25:18 +00:00
theme-flash-probe.mjs The last browser scripts refuse to measure a tree or dev server that is not this checkout 2026-09-25 11:10:34 +00:00
verify-5-capabilities.mjs Browser gates: measure THIS build, or measure nothing 2026-09-25 08:20:11 +00:00
verify-browser-all.mjs Measure the basemap, in a real embed, on the token the page ships 2026-09-24 19:13:46 +00:00
verify-gospel-map.mjs Gospel presentations in 94 languages, from Cru's API rather than its parked domain 2026-09-24 13:51:56 +00:00
verify-map-paint.mjs Host locale: gate the profile-config contract, forward ?lang= into staging embeds, stop losing gate stderr 2026-09-25 12:18:26 +00:00
verify-shell-scroll.mjs verify-shell-scroll asserts the Driver's ruling: a wheel over the map zooms, below it scrolls 2026-09-25 10:03:16 +00:00
vite-plugin-strip-shadow-css-comments.mjs Complete app-profiles->plugin-designs sweep across comments/docs; build green; layouts kept at root (load-bearing) 2026-09-17 18:18:19 +00:00
write-token.mjs write the extensionless token path the client actually requests; ignore it too 2026-09-20 09:55:39 +00:00