Comments state their findings instead of citing files outside the repo

Seven comments in the library and the app pointed at probes, checks, a report or research notes that
live outside the repository, where a reader of the code cannot follow them. Each now states what was
found and drops the path: the engine-predicate equivalence, the chooser's globe-fill measurement, the
fit-at-construction probe, the worldview clause, the web-boundaries sizes (1,866 KB to 383 KB, every
feature and part kept). The QA corner and the packet generator lose a dead pointer. The app's nav
comment states the three sections and the third dashboard directly instead of quoting a transcript.
This commit is contained in:
Doxa Maps 2026-09-29 03:26:12 +00:00
parent 68ce355973
commit 9996bb6fde
6 changed files with 14 additions and 23 deletions

View file

@ -32,8 +32,7 @@ import { useMapInstance } from '@map/composables/useMapInstance.js'
// useMapProvider's isMapboxMap; exp-shepherd has landed engineFor(map), which is stricter than
// what I had — it instance-tests BOTH engines instead of inferring the second from the first — so
// the expression is gone too. Three implementations were compared before swapping (the deleted
// copy, my interim expression, and this) and they decide identically in every engine combination:
// _qa-cycle/02-builder-cycle/_chk-glfor-equivalence.mjs.
// copy, my interim expression, and this) and they decide identically in every engine combination.
import { engineFor, projectionOf, setProjectionOn } from '@map/composables/useMapProvider.js'
import { resolveMapProvider } from '@map/composables/useMapProvider.js'
import { resolveAssetsBase } from '@map/utils/embedBase.js'
@ -459,9 +458,8 @@ function popupHtml(p) {
* ★ THIS USED TO BE `log2(width / 512)` — mercator's world is 512*2^z wide, so that is the zoom
* which fits one mercator world. But the chooser renders under the GLOBE projection, and the same
* mistake that made the region pages frame too wide (a mercator answer applied to a sphere) made
* this frame too SMALL. Found by LOOKING at _shot-chooser-map-desktop.png — a sphere adrift in
* white space — not by any assertion, and then measured by
* _qa-cycle/02-builder-cycle/_probe-chooser-globe-fill.mjs at 1200x780:
* this frame too SMALL. Found by LOOKING at a screenshot of the chooser — a sphere adrift in
* white space — not by any assertion, and then measured at 1200x780:
*
* zoom 1.229 (what the mercator formula returned) -> sphere diameter 390.61px = 50.1% of the
* frame's short side. HALF THE FRAME WAS DEAD SPACE.
@ -550,8 +548,8 @@ function chooserZoom(m) {
/**
* Frame `bounds` the way THEIR CONSTRUCTOR frames it, not the way a post-load fitBounds does.
*
* ★ MEASURED 2026-09-24, one page, one box, one engine (mapbox-gl 3.24.0 on both sides), by
* _qa-cycle/02-builder-cycle/_probe-fit-at-construction-vs-after-load.mjs:
* ★ MEASURED 2026-09-24, one page, one box, one engine (mapbox-gl 3.24.0 on both sides), framing the
* same bounds both ways:
*
* new mapboxgl.Map({ bounds, fitBoundsOptions }) -> zoom 3.210, getProjection() 'mercator' at t=0
* map.fitBounds(bounds, sameOptions) -> zoom 2.777, getProjection() 'globe'

View file

@ -2,8 +2,7 @@
/**
* QaCorner.vue — the embeddable QA corner widget (bottom-right of any map).
*
* Visible shell of the QA-agent bridge (see _qa-cycle/01-ideation-research/
* qa-loops/qa-embeddable-qa-agent-bridge.md). OIDC-gated onboarding — NEVER a key.
* Visible shell of the QA-agent bridge. OIDC-gated onboarding — NEVER a key.
*
* AUTH: the widget detects the host's session via a same-origin GET /api/auth/me.
* That only succeeds when the plugin iframe is SAME-ORIGIN (allow-same-origin). When

View file

@ -90,7 +90,7 @@ function countryFilter(code, isMaplibre) {
// field, this cannot be bridged in the loader: there is no worldview to invent. It is a fact
// about the Mapbox tileset's shape, so only the Mapbox path asks for it.
// MEASURED: against the real 162 features, the clause admits 0 and the branch below admits its
// country — _qa-cycle/02-builder-cycle/_chk-worldview-clause-guarded-per-engine.mjs.
// country.
if (isMaplibre) return byCode
return [
'all',

View file

@ -21,8 +21,9 @@
*
* VALIDATED, the run FAILS otherwise: the same feature count, the same keys, the same polygon-part
* count (no dropped island), and the same property names and values on every feature.
* The measured report (size, parts, area error, point-in-polygon drift) is in
* _qa-cycle/03-deployment-cycle/REPORT-WEB-BOUNDARIES.md.
* MEASURED: the world file goes from 1,866 KB to 383 KB (134 KB gzipped) with all 162 features and all
* 572 polygon parts; India's from 1,796 KB to 227 KB with all 36 and all 452. A second run writes
* identical bytes.
*/
import { execFileSync } from 'node:child_process'
import { readFileSync, statSync } from 'node:fs'

View file

@ -1,7 +1,6 @@
// packet.mjs — the UPG-100 PRAYER PACKET generator.
//
// One printable packet per zone. Structure is the Driver's, from the ideation
// (_qa-cycle/01-ideation-research/prayer-points.md):
// One printable packet per zone, page by page:
//
// page 1 the MAP — a lightweight vertical one-pager, NOT the poster format
// pages 2..n the PEOPLE GROUPS — 20 per page, photo + name + brief detail

View file

@ -224,13 +224,8 @@ function detectHostLocale() {
// exist in this SPA are OMITTED (never paint a dead nav row — nav.js's own navForTarget prunes empty
// groups the same way). `folder:true` (Experimental) renders collapsible, starting closed.
const NAV_MODEL = [
// ── THREE SECTIONS, PER THE SPEC (2026-09-22 audio, transcribed to
// _qa-cycle/01-ideation-research/SPEC-the-six-map-product-and-its-tab-order.md — that file is
// AUTHORITATIVE; this comment explains how the code satisfies it, not the ruling itself).
//
// Driver, verbatim: "in one of the earlier messages i mentioned i wanted 3 tab sections. one
// called dashboards, one called prayer mobilization, one called gospel research. with two maps
// inside of each of them."
// ── THREE SECTIONS: Dashboards, Prayer Mobilization and Gospel Research, each holding its own maps.
// This comment explains how the code keeps that shape, not why the shape was chosen.
//
// A PRIOR CUT REMOVED DASHBOARDS ENTIRELY (see git history / the spec's "duplicate-key trap"),
// because Big Picture had been declared TWICE — once as a one-row Dashboards section and once as
@ -253,8 +248,7 @@ const NAV_MODEL = [
// map + People Groups grid composite — "the mobile dashboard" per the spec — and it stays
// reachable on desktop too, as the second dashboard row.
{ id: 'research-map-plus-grid', icon: 'map' },
// 3. Regions — the THIRD dashboard the Driver named: "in the dashboard section I need to have
// the Big Picture dashboard, the Simple Research dashboard and the Regions dashboard."
// 3. Regions — the third dashboard, beside Big Picture and Simple Research.
// Seven plugins across three sections was the ask; this row is the seventh.
//
// ★ WHAT SHIPS TODAY IS TAB 1 OF 2. regions-dashboard currently builds a single profile,