Compare commits

...

1 commit

Author SHA1 Message Date
Doxa Maps
fde71f70d6 Flower Mesh opens on an SVG lens: the leaf-engine gate stops expecting a canvas there
upg-neighbor/flower-mesh is a preset of the upg-neighbor element that opens on
its Flower Mesh lens, which is SVG and has no GL map. The leaf is still a map
element: the view-switcher reaches Send Map and the other GL lenses, so it must
keep isMap (engine peer, token ladder). Marking it isMap:false would break those
lenses. check:leaf-engine-per-provider judged it as a drawing map and failed it
on both engines ("drew: none"), before and after the auto engine alike.

- upg-neighbor.instances.json: the flower-mesh preset says "opensOnMap": false.
- generate-tree.mjs: an instance's manifest entry carries opensOnMap:false when
  it is set (absent otherwise, so every other entry is byte-identical).
- check-leaf-engine-per-provider.mjs: such a leaf is not judged as a drawing
  map. Its Mapbox-request count under ?provider=maplibre is still measured.

Headless: after bun run tree, the manifest marks only
upg-neighbor/upg-neighbor/flower-mesh with opensOnMap:false. The gate's leaf
selection, replayed over it, judges 28 of 56 leaves as drawing maps, with
flower-mesh excluded and its five siblings unchanged. No browser run.
2026-09-26 03:47:05 +00:00
3 changed files with 9 additions and 2 deletions

View file

@ -52,9 +52,11 @@ const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'))
const leaves = []
for (const b of manifest.bundles || []) for (const p of b.profiles || []) {
const base = `${b.bundle}/${p.profile}`
const add = (id) => { if ((!ONLY || ONLY.has(id)) && existsSync(join(DIR, TREE_NAME, id, 'index.html'))) leaves.push({ id, isMap: !!p.isMap }) }
// opensOnMap:false (a preset opening on a non-GL lens, e.g. upg-neighbor/flower-mesh): not judged as
// a drawing map, but its Mapbox-request count under ?provider=maplibre is still measured.
const add = (id, opensOnMap = true) => { if ((!ONLY || ONLY.has(id)) && existsSync(join(DIR, TREE_NAME, id, 'index.html'))) leaves.push({ id, isMap: !!p.isMap && opensOnMap }) }
add(base)
for (const inst of p.instances || []) add(`${base}/${inst.id}`)
for (const inst of p.instances || []) add(`${base}/${inst.id}`, inst.opensOnMap !== false)
}
if (!leaves.length) { console.log('LEAF-ENGINE: NOT MEASURED — no leaves matched'); process.exit(75) }

View file

@ -1138,6 +1138,10 @@ function readInstances(dir, profileName, bundle, tag) {
element: tag,
iframeUrl,
embed: { iframe: iframeEmbed },
// A preset that OPENS on a lens with no GL map (upg-neighbor's flower-mesh is SVG) is still a
// map element: its view-switcher reaches the map lenses, so it keeps isMap (engine, token
// ladder). This tells the draw gates not to expect a canvas on first paint. Absent = true.
...(i.opensOnMap === false ? { opensOnMap: false } : {}),
}
})
}

View file

@ -33,6 +33,7 @@
{
"id": "flower-mesh",
"title": "Flower Mesh",
"opensOnMap": false,
"props": {
"view": "flower-mesh"
}