doxa-maps/plugin-designs/golden-path-check/index.html
doxa-maps e7eeb4d02a
Some checks are pending
build-gate / build (push) Waiting to run
golden-path-check: walk the develop-a-plugin-and-see-it-live path end to end
The north star is that an admin agent can author a plugin, build it, publish
it and see it live. Every step was documented and individually verified, but
never walked in one pass by following the doc as written. This plugin is that
walk, authored from the documented three-file minimum.

It stays useful afterwards: it reads the manifest.json it was published
beside and reports what the catalog actually contains -- bundle and profile
counts, how many profiles describe themselves, and whether it is listed. If
you can see it answering, the path worked. Deliberately dependency-free: no
map engine, no token, no data API, so it can mount when everything else is
broken, which is when someone reaches for it.

The walk found a real defect in my own plugin, which is the point of doing
it. The first version wrapped the element in ProfileLoader (copied from a MAP
bundle) without createPinia. ProfileLoader builds three stores in setup(), so
setup threw -- and a thrown setup removes the subtree silently. Build green,
manifest listed it, nothing complained. Only smoke:embeds caught it: "shadow
DOM nearly empty (1 nodes)". That is exactly what Step 3b exists for and why
the doc puts it before publish.

The fix is the cap-1 pattern doxa-vision-card already uses: mount the root
SFC directly. ProfileLoader earns its cost for a map plugin; it is the wrong
wrapper for an element that draws no tiles and takes no token.

Verified: 17 -> 18 bundles, 26 -> 27 profiles, auto-discovered with no config
edit; renders 19 shadow nodes reporting live catalog state; embed suite 41/41.
2026-09-22 03:55:18 +00:00

47 lines
2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>doxa-maps · golden-path-check staging</title>
<link rel="icon" href="data:,">
<!-- NO map peer script here, on purpose. This is a capability-1 element that draws no tiles,
so it must mount with no Mapbox engine and no token — which is the point of a self-test:
it has to work when everything else is broken. -->
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
/* Material LIGHT only (standing palette rule): #f3f3f1 surface, #fff, #3b463d text,
#92b195 accent, #d1d4cd border, #6d766e muted. No dark mode. */
html, body { background: #f3f3f1; color: #3b463d; min-height: 100%;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; }
.wrap { max-width: 720px; margin: 0 auto; padding: 32px 20px; }
h1 { font-size: 22px; font-weight: 700; letter-spacing: -0.02em; }
.sub { color: #6d766e; font-size: 13px; margin: 6px 0 24px; }
.slot { background: #fff; border: 1px solid #d1d4cd; border-radius: 12px; overflow: hidden; }
.slot .label { font: 12px/1 ui-monospace, SFMono-Regular, Menlo, monospace; color: #6d766e;
padding: 8px 12px; background: #f3f3f1; border-bottom: 1px solid #d1d4cd; }
.frame { padding: 16px; }
golden-path-check { display: block; }
</style>
</head>
<body>
<div class="wrap">
<h1>golden-path-check · staging</h1>
<p class="sub">
The capability-1 self-test of the develop-a-plugin-and-see-it-live path. It reads the
<code>manifest.json</code> it was published beside and reports what the catalog contains.
</p>
<div class="slot">
<div class="label">&lt;golden-path-check&gt;</div>
<div class="frame">
<golden-path-check></golden-path-check>
</div>
</div>
</div>
<script type="module" src="./index.js"></script>
</body>
</html>