doxa-maps/internal
Doxa Maps eb3f48ec14 Guard the viewport meta, because without it a "390" run is a 980px run
A browser given a 390px viewport still lays the page out at the 980px desktop
fallback unless the document declares <meta name="viewport">. Measured in
Chromium at 390x844 with isMobile:true:

  without the meta:  window.innerWidth = 980  (body 964px)
  with the meta:     window.innerWidth = 390  (body 374px)

Nothing warns. The page renders, the probe reads its numbers, and the check
goes green having measured a viewport no phone has. A full set of mobile runs
was taken this way before the layout width was ever compared to the requested
one, so the conclusions drawn from them described the wrong viewport.

Three gates already read window.innerWidth and none compares it to the width it
asked for, so all three would pass at 980 while reporting 390. This asserts the
property that makes their numbers mean what they say.

Checked on the built artifact rather than the generator template: a template
containing the right string proves nothing about the HTML that shipped. No
server needed.

width=device-width is required specifically, not just the tag: a meta carrying
only initial-scale still lays out at 980, so matching the tag name alone would
leave the gate unable to fail on its own founding bug.

The 28 sheets under assets/posters/ are exempt by their stated shape - a fixed
paper canvas (.stage{width:1500px;height:2000px}) has no mobile layout to get
wrong. Keyed on that property, not the directory, so a poster keeps its
exemption if it moves and an app page in that folder does not inherit one.

Mutation-tested against the real tree: stripping the meta from a shipped page
fails it, and replacing it with an initial-scale-only tag fails it. 8 self-tests
cover both, plus the exemption and its inverse.
2026-09-29 11:56:46 +00:00
..
acceptance internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
element-census Three more lines keep the reason and drop the speaker, in library and internal 2026-09-29 10:07:29 +00:00
fixtures The reference baseline shrinks 54 -> 28: the owners' capitals sweeps removed 26 lines 2026-09-29 11:04:34 +00:00
lib internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
plugin-gallery The dev server's 404 for a plugin folder's index.html names the plugin's real page 2026-09-29 11:04:22 +00:00
_composed-tiers.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
_published-base.mjs Decouple the tooling: no host named in internal/ or the build config 2026-09-27 01:16:50 +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 docs stop handing the next reader a 404 2026-09-25 22:49:37 +00:00
_tree-name.mjs A gated bundle builds outside public/, and a gate keeps it out of the tree 2026-09-29 02:35:35 +00:00
atomic-public-swap.sh public/ is one folder: the output tree plus a README, with the Plugin Studio as its front page 2026-09-25 17:41:56 +00:00
backend-dev-plugin.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
browser-slot.sh A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
build-lock.sh public/ is one folder: the output tree plus a README, with the Plugin Studio as its front page 2026-09-25 17:41:56 +00:00
build-packet-fixtures.mjs The offline packet generator runs again, and a gate now runs it 2026-09-29 02:16:34 +00:00
check-a11y-button-names.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-approx-pin-note.mjs The prayer map's legends see the pins it draws 2026-09-27 02:17:35 +00:00
check-aria-labels-localized.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-auto-engine.mjs check:auto-engine asserts the rule that holds, and runs: it sat in no chain asserting the old one 2026-09-29 11:04:22 +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 A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-board-map-options.mjs Guard the map option a de-duplication can silently invert 2026-09-29 11:56:46 +00:00
check-browser-gates-guarded.mjs Close the browser guard's path-shaped bypass: check-experimental-shelf imported playwright by file path 2026-09-28 09:07:30 +00:00
check-capability-citations.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-capability-derived.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-capability-exemplars.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +00:00
check-card-deck.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-catalog-currency.mjs Decouple the tooling: no host named in internal/ or the build config 2026-09-27 01:16:50 +00:00
check-catalog-identity.mjs Decouple the tooling: no host named in internal/ or the build config 2026-09-27 01:16:50 +00:00
check-cdn-cache.mjs /cdn: a publish reaches browsers in minutes. Moving URLs revalidate after 5 min with an ETag and 304s; hashed names are immutable 2026-09-28 23:13:47 +00:00
check-cdn-pins.mjs Every runtime CDN script and stylesheet is an exact version with an integrity hash 2026-09-26 05:50:24 +00:00
check-composite-embed-knobs.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-composite-freshness.mjs A gated bundle builds outside public/, and a gate keeps it out of the tree 2026-09-29 02:35:35 +00:00
check-composite-interop.mjs check:composite-interop: two known-issue entries outlived the bug they described 2026-09-27 06:42:55 +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 The docs stop handing the next reader a 404 2026-09-25 22:49:37 +00:00
check-composite-token-url.mjs A composite embedded bare dropped tokenUrl, and passed because a ProfileLoader sat above it 2026-09-28 15:52:47 +00:00
check-composites-mount.mjs check:composites-mount records elements defined through the shared element helper 2026-09-28 17:52:51 +00:00
check-country-names.mjs Gate the country-name join, and record that the wiring was already done 2026-09-29 01:38:07 +00:00
check-csv-export-shape.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-deck-click.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +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-describe-group.mjs Number({value:"1"}) is NaN, so the whole reachedness sentence vanished 2026-09-28 15:52:47 +00:00
check-dev-assets.mjs check:dev-assets: every leaf of the seven studio maps, with bytes that parse and a bogus-path control 2026-09-25 23:22:27 +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 counts a card's evidence LIST, so a card that records its proof there can close 2026-09-29 03:46:37 +00:00
check-dxlife-untouched.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-element-bootstrap.mjs Twenty-four warnings about an overwrite that was the whole point 2026-09-28 17:53:38 +00:00
check-element-census-vs-live.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-embed-base-resolution.mjs Decouple the tooling: no host named in internal/ or the build config 2026-09-27 01:16:50 +00:00
check-embed-basemap-paints.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-embed-targets-exist.mjs EMBED_BASE_URL overrides the committed embedBaseUrl for a host's own tree build 2026-09-28 21:53:40 +00:00
check-embed-url-absolute.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-embedded-rtl.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-evangelical-share.mjs Each packet's % evangelical page states its own list's share 2026-09-29 02:16:31 +00:00
check-experimental-shelf.mjs Make the two Mapbox arms ask for Mapbox, and fail when they measure nothing 2026-09-28 17:53:38 +00:00
check-facet-cascade.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-facet-changes-map.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-facet-one-field.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-facet-shape.mjs Two readers of one private field, and nothing was holding them together 2026-09-28 15:52:46 +00:00
check-filter-width-stable.mjs The browser-side generator keeps the reason and drops the speaker 2026-09-29 05:26:27 +00:00
check-fits-the-screen.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-fixed-anchoring.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-frame-target.mjs The language tree becomes anyone's, and the numbers nobody wrote down get written down 2026-09-28 17:40:34 +00:00
check-frozen-labels.mjs Catch a tree that is built correctly and then parked 2026-09-29 09:19:05 +00:00
check-gated-not-in-tree.mjs A gated bundle builds outside public/, and a gate keeps it out of the tree 2026-09-29 02:35:35 +00:00
check-gospel-all.mjs Gospel checks: one dev-assets gate, and cover the gap it leaves 2026-09-25 23:50:31 +00:00
check-gospel-composed-filters.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-gospel-coverage-consistent.mjs 2,001 groups had readable Scripture and were told they did not 2026-09-27 18:53:52 +00:00
check-gospel-embed-contract.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-gospel-engine-contract.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-gospel-english-leaks.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-gospel-leaves-mount.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-gospel-map-paints.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-gospel-rtl-shaping.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-gospel-set-charts.mjs The seed guarantee was asserted against two files nothing renders 2026-09-28 23:43:44 +00:00
check-gospel-set-fit.mjs The set charts fit their box, carry a cross, and draw the target — combined 2026-09-29 02:11:28 +00:00
check-gospel-tables-staged.mjs India by state, from India's own states 2026-09-26 08:37:10 +00:00
check-gospel-whiteboard.mjs Point the set charts at the promoted modules, and clear a committed conflict 2026-09-28 18:57:46 +00:00
check-hardcoded-english.mjs Exempt a region identity only while REGION_KEY still names it 2026-09-29 11:04:22 +00:00
check-heartbeat-threshold.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-help-reachable.mjs check:help-reachable keeps a map whose own control explains it in scope, even with no entry in the help file 2026-09-29 03:22:40 +00:00
check-host-locale-contract.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-host-locale-fetch.mjs Fetch the catalogue for a host-supplied locale, and hold RTL text while it lands 2026-09-29 07:31:16 +00:00
check-i18n-never-translated.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-i18n-parity.mjs Move the catalogue note out of the catalogue 2026-09-29 05:26:27 +00:00
check-i18n-stopped-scope.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-i18n-treeshake.mjs Ship only the active locale, behind DX_SHIP_ONE_LOCALE 2026-09-29 07:31:16 +00:00
check-instance-config-keys.mjs The grid's "controls off" preset did nothing, and nothing said so 2026-09-28 22:25:30 +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-label-key-coverage.mjs Speak the reader's language on the UPG-100 map, its wall and the print HUD 2026-09-29 08:33:43 +00:00
check-language-tree-layout.mjs The language tree's layout becomes library's; its gospel classification does not 2026-09-28 15:52:47 +00:00
check-language-tree-model.mjs The language tree becomes anyone's, and the numbers nobody wrote down get written down 2026-09-28 17:40:34 +00:00
check-leaf-engine-per-provider.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-leaf-english-leaks.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-legend-data-contract.mjs Share the legend-map bridge between the two 811-line twins 2026-09-29 07:31:17 +00:00
check-legend-export-reachable.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-legend-info-localized.mjs smoke:legend-info measures again, and says so when it cannot 2026-09-29 08:33:44 +00:00
check-legend-logical-insets.mjs The share menu's tabs mirrored the wrong way, and the check could not see them 2026-09-29 03:46:37 +00:00
check-legend-matches-source.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-legend-top-offset.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +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-link-verification-coverage.mjs Every shipped link has evidence, and 1,412 of them did not 2026-09-27 01:26:50 +00:00
check-list-prop-unit.mjs List names speak the reader's language: listLabel and listDefinition 2026-09-26 08:39:52 +00:00
check-list-selection.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-locale-reachable.mjs Rename the output folder to dx-maps 2026-09-25 19:26:14 +00:00
check-manifest-covers-discovery.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-map-attribution.mjs The map credit names the basemap that was actually drawn: OpenFreeMap / OpenMapTiles under MapLibre 2026-09-26 08:51:38 +00:00
check-map-control-overlap.mjs The touch-target fix is what pushed the toggle into the zoom buttons 2026-09-29 00:06:52 +00:00
check-map-data-painted.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-map-embed-cells.mjs Make the two Mapbox arms ask for Mapbox, and fail when they measure nothing 2026-09-28 17:53:38 +00:00
check-map-fly-reduced-motion.mjs Maps stop flying for readers who ask for reduced motion: useMapFly decides it for every camera move 2026-09-26 04:38:59 +00:00
check-map-labels.mjs Name the map's countries on page 1 in the packet's language 2026-09-29 02:16:33 +00:00
check-map-menu-anchor.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-map-props-unit.mjs Auto resolves to MapLibre; a token no longer picks the engine 2026-09-28 17:53:38 +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 A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-mapbox-drew.mjs Fix three things that stopped check-mapbox-drew from measuring anything 2026-09-29 05:37:02 +00:00
check-maplibre-layer-drops.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-mercator-slice.mjs Two poster comments state the defect instead of quoting its report 2026-09-28 17:53:38 +00:00
check-mfe-two-tab.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-mjs-parses.mjs check:mjs-parses parses with node even when the gates run under bun 2026-09-27 22:10:35 +00:00
check-mobile-gating.mjs Three more lines keep the reason and drop the speaker, in library and internal 2026-09-29 10:07:29 +00:00
check-mst-clustering.mjs check:mst-clustering times its own CPU against a 1,500 ms budget, so a loaded box cannot fail it 2026-09-29 07:31:17 +00:00
check-nav-reachable-mobile.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-nested-token-delivery.mjs Token gates follow the auto engine: no token ships, and an explicit engine beats an available token 2026-09-26 03:37:53 +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-credentials-omit.mjs The Research Gallery loads behind a login gate: same-origin fetches keep their credentials 2026-09-27 05:05:03 +00:00
check-no-cross-plugin-imports.mjs check:no-cross-plugin-imports: a plugin may not reach into another plugin's private folder 2026-09-26 08:39:53 +00:00
check-no-dead-library.mjs Delete 7 unreachable library components, and gate the thing a census cannot see 2026-09-29 01:38:07 +00:00
check-no-eval.mjs No bundle needs CSP 'unsafe-eval': translations compile without eval, and the partner CSP is documented 2026-09-26 05:50:24 +00:00
check-no-internal-codename.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +00:00
check-no-new-driver-references.mjs The reference gate sees the capitals form too: 42 lines had passed it unseen 2026-09-29 10:07:29 +00:00
check-no-orphan-gates.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-no-public-binds.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-no-repo-pb-hooks.mjs Put the cloud Dockerfile at the repo root, so a platform pointed at the repo finds it 2026-09-29 02:35:36 +00:00
check-no-silent-engine-substitution.mjs My own gate was accusing the one agent who fixed the defect 2026-09-27 01:59:11 +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 check:one-palette sees a bundle's private src/colors/ palettes; Rudder's offline hint states Go 1.22+ and the setup 2026-09-28 07:07:33 +00:00
check-one-scroll-container.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-optional-t-equivalence.mjs Fix what an adversarial review of the print standard confirmed: 21 defects, each re-checked against the code 2026-09-29 06:23:19 +00:00
check-package-json-unique-keys.mjs check:package-json-unique-keys: a duplicated key in package.json fails 2026-09-27 04:14:31 +00:00
check-packet-a1-structure.mjs The bounded set and the centered set each get their own page again, at print size 2026-09-29 05:26:27 +00:00
check-packet-browser.mjs The UPG-100 list prints its packets through the shared lift, not a second copy of it 2026-09-29 05:26:23 +00:00
check-packet-charts.mjs A life-calendar anchor outside the grid says so instead of drawing nothing 2026-09-28 16:49:01 +00:00
check-packet-map-missing-loud.mjs Put the missing-map sentence in every packet language 2026-09-29 00:59:14 +00:00
check-packet-render.mjs Fix what an adversarial review of the print standard confirmed: 21 defects, each re-checked against the code 2026-09-29 06:23:19 +00:00
check-packet-strings-parity.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-packet-variants.mjs Send the research map's live map to packet page 1 through the mapImage seam 2026-09-29 07:31:17 +00:00
check-packets-all.mjs Fix what an adversarial review of the print standard confirmed: 21 defects, each re-checked against the code 2026-09-29 06:23:19 +00:00
check-people-group-records.mjs Every country prints its prayer list, card deck and packet, from a records provider any map can use 2026-09-29 05:26:26 +00:00
check-pin-selection.mjs The packet was praying over the numbers the page loaded with, not the live ones 2026-09-28 13:56:22 +00:00
check-pinned-umd.mjs One pinned-UMD loader for PPLR and the Wall: library/utils/loadPinnedUmd.js 2026-09-26 07:24:25 +00:00
check-plural-forms.mjs Fix what an adversarial review of the print standard confirmed: 21 defects, each re-checked against the code 2026-09-29 06:23:19 +00:00
check-popup-escaping.mjs Map popups show data as text: a people-group name or country field can no longer run script 2026-09-26 05:50:24 +00:00
check-popup-href-escaped.mjs Escape the two popup URLs and the packet photo URL 2026-09-29 05:26:27 +00:00
check-ported-globals-identical.mjs Migrate the regions pages onto portedGlobals, and fix a Cyrillic rule that was inert 2026-09-29 02:35:35 +00:00
check-poster-action-print.mjs The poster-action gate's new arm keeps the rule and drops the speaker 2026-09-29 05:26:27 +00:00
check-poster-attribution.mjs The poster credited Mapbox for tiles OpenFreeMap had served 2026-09-29 00:06:52 +00:00
check-poster-browser-equiv.mjs The map-sheet generator is served and imported at print time, so country-posters is back under the 1.5 MB ceiling 2026-09-29 06:23:20 +00:00
check-poster-card-fits.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-poster-degrades-honestly.mjs Both poster print gates measure the product again: the generator is forced missing too 2026-09-29 10:07:29 +00:00
check-poster-fetch-guard.mjs New gate check:poster-fetch-guard (in gates:pre) 2026-09-29 05:26:24 +00:00
check-poster-layout-optin.mjs The poster's legend was painted over the map, unless you ask otherwise 2026-09-29 00:59:14 +00:00
check-poster-print-fallback.mjs Both poster print gates measure the product again: the generator is forced missing too 2026-09-29 10:07:29 +00:00
check-poster-prints.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-poster-raster.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-poster-render-pinned.mjs Serve the packet text at print time instead of bundling all 11 languages 2026-09-29 08:33:44 +00:00
check-poster-wall-localised.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-posters-exportable.mjs Ship every poster once, in its lightest printable form 2026-09-29 05:26:23 +00:00
check-prayer-walk-planner.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-preset-config-merge.mjs A preset keeps its profile's defaults: instance props merge over the meta config instead of replacing it 2026-09-28 03:12:45 +00:00
check-print-frame-reclaim.mjs A print frame is kept until it has printed: its 60 s clock starts at load, not at creation 2026-09-29 08:11:49 +00:00
check-print-geometry.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-profile-descriptions.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +00:00
check-profile-table.mjs The table row is a border-box, and the offline packet gets its description 2026-09-28 16:49:01 +00:00
check-provide-shadowing.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-provider-for.mjs Register check:provider-for 2026-09-26 17:28:56 +00:00
check-provider-switch.mjs The engine rule reads as it is everywhere it is written: auto is MapLibre, token or not 2026-09-29 11:04:22 +00:00
check-published-matches-build.mjs Decouple the tooling: no host named in internal/ or the build config 2026-09-27 01:16:50 +00:00
check-published-tree-weight.mjs public/ is one folder: the output tree plus a README, with the Plugin Studio as its front page 2026-09-25 17:41:56 +00:00
check-quoted-scripts.mjs consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
check-raw-map-rtl-shaping.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-readme-web-folder-size.mjs check:readme-size runs in gates:post, and the README states the folder with its posters 2026-09-29 05:26:25 +00:00
check-reduced-motion.mjs Every animating library component now honours prefers-reduced-motion itself 2026-09-29 01:38:07 +00:00
check-region-fill-repaint.mjs RegionCountryMap moved to the library, and its gate, its numerals allowance and a comment follow it 2026-09-29 01:38:08 +00:00
check-research-gallery-embed.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-ring-bands.mjs bandFill mode: 'fill-all' draws every group and lets the zoom separate them 2026-09-29 01:38:08 +00:00
check-ring-vocabulary.mjs Say "provisional, pending a product decision" instead of naming a row 2026-09-28 17:53:38 +00:00
check-scrim-covers-viewport.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-script-flags-reachable.mjs Make advertised script flags actually reachable 2026-09-22 17:44:02 +00:00
check-script-registry.mjs One page loaded the same bundle twice and nothing said so 2026-09-29 00:06:51 +00:00
check-select-zone-race.mjs Pin the three layers that make Show on map work on the first click 2026-09-28 23:23:57 +00:00
check-selection-kinds.mjs Map sheets are generated in the browser at the click, by the same generator the Node script runs 2026-09-29 05:26:27 +00:00
check-selector-fields.mjs check:selector-fields in gates:pre: a packet fetch must carry every field its selectors read 2026-09-28 13:56:53 +00:00
check-sentence-slots.mjs Prove the sentence helper against a real t(), instead of claiming it 2026-09-29 05:26:25 +00:00
check-series-isolation.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-setup-order.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +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-shadow-css-parses.mjs Fold the dangling-selector gate into the portedGlobals migration 2026-09-29 02:35:36 +00:00
check-shadow-reduced-motion.mjs Every shadow root honours prefers-reduced-motion 2026-09-27 05:05:04 +00:00
check-share-policy.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-shared-component-reached-bundles.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +00:00
check-shot-distinctness.mjs README: three outputs, not five methods; a Languages section; screenshot gates see every shot again 2026-09-25 19:40:03 +00:00
check-shot-fidelity.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +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 README screenshots retaken after d1af039a; freshness-gate comments name the tree, not the old folder 2026-09-25 22:05:39 +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-snippet-engine.mjs The default embed snippet preloads MapLibre, the engine it draws with; Mapbox gets its own snippet 2026-09-29 09:18:39 +00:00
check-spa-tab-order.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-square-map-controls.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-studio-every-plugin.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-studio-rail.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +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 internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-tabs-localized.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-targets.mjs bun run desktop:build <plugin> packages a desktop plugin as an app; check:targets keeps non-web plugins out of the web build 2026-09-28 06:44:14 +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-tiered-points.mjs The whiteboard is a layer of tiered points; only the edges were ever a tree 2026-09-28 17:40:34 +00:00
check-translator-contacts.mjs Name the translator, and let a mobiliser write to them 2026-09-26 07:43:58 +00:00
check-tree-relative.mjs New gate check:tree-relative: the committed tree names no host of its own 2026-09-29 05:26:26 +00:00
check-universal-props.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-upg-map-data-painted.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-upg-zone-joins.mjs Fold the zone-tree assertions in, and stop the check dying before it reports 2026-09-28 16:47:05 +00:00
check-url-resolver.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-verification-tags.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
check-viewport-meta.mjs Guard the viewport meta, because without it a "390" run is a 980px run 2026-09-29 11:56:46 +00:00
check-vision-card-numbers.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
check-whiteboard-projection.mjs The whiteboard is a layer of tiered points; only the edges were ever a tree 2026-09-28 17:40:34 +00:00
check-window-globals-released.mjs Release only the hooks this instance installed 2026-09-29 00:06:53 +00:00
check-zone-census.mjs The map template draws a map-only vertical page for the prayer packet 2026-09-29 02:16:27 +00:00
check-zone-title-tier-a.mjs Name the Deaf packet in its reader's language, not by its internal label 2026-09-29 02:16:32 +00:00
check-zoning-declared.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
clean.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
desktop-build.mjs The carried commits keep the reason and drop the speaker 2026-09-29 05:26:26 +00:00
dev-server.mjs A laptop that follows the table says when it needs credentials, and the last main defaults say development 2026-09-29 00:59:14 +00:00
dev-sync-plugin.mjs A laptop that follows the table says when it needs credentials, and the last main defaults say development 2026-09-29 00:59:14 +00:00
drop-portability-check.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +00:00
embed-smoke.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
fix-sri.mjs Freshness covers every bundle a landing can have staled; SRI repairs keep the gallery's manifest copy 2026-09-25 22:09:40 +00:00
generate-capability-exemplars.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +00:00
generate-gallery.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
generate-library-index.mjs Library index: a data file is described by its own _description or _meta, not its first line 2026-09-27 05:05:04 +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 The engine rule reads as it is everywhere it is written: auto is MapLibre, token or not 2026-09-29 11:04:22 +00:00
generate-wagf-region-names.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
i18n-areas.mjs A bundle carries a translation area only where its code uses it, not wherever the area's name appears 2026-09-29 09:18:26 +00:00
inline-parse-check.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +00:00
install-shell.mjs Decouple the tooling: no host named in internal/ or the build config 2026-09-27 01:16:50 +00:00
landing-preconditions.mjs A landing whose tree is stale is refused: regenerating it must change nothing 2026-09-29 08:13:08 +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 internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
measure-map-load.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
mobile-sheet-probe.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +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
plugin-targets.mjs bun run desktop:build <plugin> packages a desktop plugin as an app; check:targets keeps non-web plugins out of the web build 2026-09-28 06:44:14 +00:00
profile-meta.mjs One phone flag per map, and the leaf page follows it as well as the Gallery 2026-09-29 07:31:16 +00:00
public-hygiene-check.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
readme-shots-fix.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
readme-shots.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
run-parallel.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
serve-strict.mjs Decouple the tooling: no host named in internal/ or the build config 2026-09-27 01:16:50 +00:00
set-app-start-page.mjs public/ is one folder: the output tree plus a README, with the Plugin Studio as its front page 2026-09-25 17:41:56 +00:00
settled-tree-gate.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
share-roundtrip-smoke.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
smoke-studio.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
smoke.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
sri-consistency-check.mjs Tooling reads the tree's name from the build config, in one place 2026-09-25 16:25:22 +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-app-shells.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
sync-dropin.mjs One server for a site and its maps: bun run dropin, and the drop-in goes straight into the site's public/ 2026-09-29 03:03:51 +00: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 internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
verify-5-capabilities.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
verify-browser-all.mjs The browser suite runs both engine gates, each listed after its first real run 2026-09-29 11:04:22 +00:00
verify-gospel-map.mjs A browser gate refuses to launch outside the browser slot; check:browser-gates-guarded keeps it that way 2026-09-28 08:20:21 +00:00
verify-map-paint.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
verify-shell-scroll.mjs internal/ keeps the reason and drops the speaker: no gate quotes or cites the Driver 2026-09-29 05:26:25 +00:00
vite-plugin-strip-shadow-css-comments.mjs Strip CSS comments from every shadow-style literal shape, not only useShadowStyles(…) 2026-09-28 00:56:58 +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