Comments name what measured a fact, not who: the tree generator, the Mapbox draw gate, the profile metadata and the admin proxy

This commit is contained in:
Doxa Maps 2026-10-01 00:07:34 +00:00
parent 757327932b
commit 7b1730e8aa
4 changed files with 14 additions and 14 deletions

View file

@ -42,7 +42,7 @@ const refuse = (msg) => (PUBLIC
// fetch() hands back the body DECOMPRESSED, so the upstream Content-Encoding and Content-Length no longer describe
// what is sent on: forwarding them made browsers try to gunzip plain HTML, and PocketBase's dashboard never rendered
// (rega, 2026-09-29). And PocketBase redirects to its own root (/_ -> /_/), which is put back under the mount (/pb/_/).
// (measured 2026-09-29). And PocketBase redirects to its own root (/_ -> /_/), which is put back under the mount (/pb/_/).
// A backend path as the backend will read it: percent-decoded, runs of slashes collapsed. The admin gates run on
// THIS form, so /pb/%5F/ (PocketBase decodes it to /_/) meets the same check as /pb/_/ (studio, 2026-09-29).
// Encoded slashes or backslashes and undecodable input are refused: nothing legitimate sends them.

View file

@ -25,8 +25,8 @@
* owner; counting it as a pass would be false. It exits 75 NOT MEASURED instead, NAMING every
* distinct blocked request path and the token's source, so the next reader can tell which
* credential was in play without the gate ever printing it.
* ✗ AN EARLIER VERSION CALLED THIS "TILESET ENTITLEMENT" AND THAT WAS WRONG. Measured 2026-09-29 by
* rega on this gate's own token: /v4/ streets-v8 and country-boundaries both return 200, with no
* ✗ AN EARLIER VERSION CALLED THIS "TILESET ENTITLEMENT" AND THAT WAS WRONG. Measured 2026-09-29 with
* this gate's own token: /v4/ streets-v8 and country-boundaries both return 200, with no
* Referer and from our research and maps-dev hosts, doxa.life, 127.0.0.1 and
* example.com. The token is unrestricted and entitled. The old claim rested on three no-Referer
* probes, which cannot distinguish a URL-restricted token from a missing entitlement. Whatever 403s
@ -102,7 +102,7 @@ async function serve(dir) {
// rather than FAILED.
//
// ✗ WHY THIS NO LONGER CLAIMS "ENTITLEMENT" (corrected 2026-09-29). It used to report a 403 here
// as "tileset, not the embed", on the strength of three no-Referer probes. MEASURED since, by rega,
// as "tileset, not the embed", on the strength of three no-Referer probes. MEASURED since,
// with the very token this gate runs on: /v4/ streets-v8 AND country-boundaries return 200 — with
// no Referer, and with our research and maps-dev hosts, doxa.life, 127.0.0.1 and
// example.com. The token is unrestricted and entitled, so whatever 403s here is a DIFFERENT
@ -168,7 +168,7 @@ async function measure(page, url, provider) {
: c.classList.contains('maplibregl-canvas') ? 'maplibre' : 'other'
// ★ EVERY map, not the two this repo happens to publish. Reading only
// window.__rcmMap/__rdashMap made 5 of the 7 production leaves report -1 and then FAIL as
// "0 rendered features" even when they had drawn (measured by rega, 2026-09-29). The hook
// "0 rendered features" even when they had drawn (measured 2026-09-29). The hook
// installed before navigation collects every Map the page constructs, whatever it calls it.
const maps = (window.__gateMaps || []).slice()
const published = window.__rcmMap || window.__rdashMap || null

View file

@ -857,9 +857,9 @@ const MAPLIBRE_STYLE_ORIGIN = 'https://tiles.openfreemap.org' // useMapInstanc
* token; the hint follows the build default and the report names that miss case (one unused preconnect).
*/
function engineFor({ config }) {
// CORRECTED 2026-09-29 (regions executed the shipping resolver; rega's A9NET confirmed on the wire):
// CORRECTED 2026-09-29 (the shipping resolver was executed, and a network trace confirmed it on the wire):
// a token no longer selects Mapbox. useMapProvider's default is MapLibre unless provider is EXPLICITLY
// 'mapbox'. rega measured all 8 auto leaves — which DO carry a pray.doxa.life token endpoint — loading
// 'mapbox'. A browser check measured all 8 auto leaves — which DO carry a pray.doxa.life token endpoint — loading
// MapLibre from jsdelivr cold. So the hint's engine is Mapbox ONLY when provider:'mapbox' is set; every
// other case (auto, or provider:'maplibre') is MapLibre, regardless of any baked token / tokenUrl.
return String((config && config.provider) || '').toLowerCase().trim() === 'mapbox' ? 'mapbox' : 'maplibre'
@ -963,8 +963,8 @@ function mapPageHtml(opts) {
// where the leaf emits no engine <script> today (the 'auto' leaf) — preload the engine, its URL,
// integrity and crossorigin from library/constants/cdn.js so it cannot drift from the runtime tag.
// WHO GETS HINTS: any page whose OWN bundle loads a map engine — the directly verifiable signal
// (`bundleLoadsEngine`, an engine reference in the built .js), NOT the leaf's `isMap` flag. rega's A9
// net run found regions-mfe (isMap:false, 56 engine refs in its bundle) AND research-map-plus-grid
// (`bundleLoadsEngine`, an engine reference in the built .js), NOT the leaf's `isMap` flag. A network
// run found regions-mfe (isMap:false, 56 engine refs in its bundle) AND research-map-plus-grid
// (isMap:false, own bundle 0 refs but composes doxa-research-map, 74 refs) opening cdn.jsdelivr.net +
// tiles.openfreemap.org from the top page and getting no hints — my first cut keyed on isMap and missed
// both, the same trap check:leaf-engine-per-provider's isMap gate fell into. bundleLoadsEngine is true
@ -1061,7 +1061,7 @@ ${hintBlock} ${peerBlock}
@media print {
html, body { height: auto; background: #fff; }
#status:not(.err) { display: none; }
/* ★ RELEASE THE FIXED HOST, MEASURED (rega, RQ-RGPRINT on a035408e2). The leaf pins both the
/* ★ RELEASE THE FIXED HOST, MEASURED (a print check on a035408e2). The leaf pins both the
slot and the element with position:fixed; inset:0. A fixed element is painted once, on the
first page, so the printed document was exactly ONE viewport: 900px tall, while the content
continued to y=1753. Every plugin whose leaf is taller than a screen has been printing its
@ -1310,7 +1310,7 @@ function instanceHtml(b, profile, inst, tokenUrlExpr, bakedToken) {
return mapPageHtml({
title: `${inst.title} · ${b.bundle}`,
tag,
// MERGE, never replace (go-int: a preset lost its profile's pinHint:false): the profile's
// MERGE, never replace (a preset once lost its profile's pinHint:false): the profile's
// <profile>.meta.json `config` first, then the instance's props over it. The rule is stated in
// documentation/PRESET-PLUGIN-STANDARD.md and asserted by check:preset-config-merge.
config: { assetsBase: assetsBaseFor(4), ...(profile.extraConfig || {}), ...mobileConfig(profile), ...inst.props },
@ -1724,7 +1724,7 @@ function writeManifestAndHtml(root, bundles, tokenUrlExpr, bakedToken) {
// THE FRONT PAGE IS THE STUDIO (see studioRootHtml). The staging-forge chooser that used to be
// written here (rootHtml) is retired with it; nothing is written above the tree any more.
// …with the studio bundle's integrity, written HERE: it used to be added only by fix:sri, so running
// `bun run tree` after fix:sri stripped it again (rega, 2026-09-25).
// `bun run tree` after fix:sri stripped it again (found 2026-09-25).
writeFileSync(join(root, 'index.html'), studioRootHtml(bakedToken, (bundles.find((b) => b.bundle === 'plugin-studio') || {}).integrity || ''))
@ -2019,7 +2019,7 @@ function main() {
}
// people-groups/lists/*.json — the ?list= / profile-config `list` prop fetches the chosen list by name
// (frontier-500k, frontier, unreached, unengaged), so the whole folder ships. Missing, every non-default
// list 404'd on the built tree and drew 0 pins (go-int / rega at a71007f1).
// list 404'd on the built tree and drew 0 pins (measured at a71007f1).
const listsSrc = join(pubAssets, 'people-groups', 'lists')
if (existsSync(listsSrc)) {
const listsDest = join(treeAssets, 'people-groups', 'lists')

View file

@ -2,7 +2,7 @@
* profile-meta.mjs — the per-profile fields a host reads from <profile>.meta.json, in ONE place.
*
* generate-tree (the built manifest.json) and the dev server's /__plugin-gallery/manifest.json both call
* this, so the dev Studio and the built Studio cannot disagree (rega: the corner widget never mounted in
* this, so the dev Studio and the built Studio cannot disagree (the corner widget once never mounted in
* dev because only the built manifest carried "widget").
* stage "production" | "experimental" default experimental
* heavy true when the element holds live WebGL contexts