No description
Find a file
doxa-maps publish b7fea73a70 Publish doxa-maps bundles: 24 bundles, 57 leaves
The catalog was serving a tree many merges behind the source. Measured before
this publish: 19 of 19 comparable leaves STALE by SRI hash, 0 current, and three
bundles absent from the catalog entirely (prayer-walk-planner, regions-dashboard,
upg-neighbor) while present in the build.

After: 24 bundles, 57 leaves, every leaf's baked integrity matching the bundle it
loads, every leaf script src resolving, and all 22 manifest bundles present on
disk.

Built tree verified settled before merge (builders=0, waiters=0, churn=0, quiet
465s) and scoped to app/doxa-maps only — no other team's subtree touched.

KNOWN PRE-EXISTING, NOT INTRODUCED HERE: app/index.json references 12
<bundle>.iife.js paths that no build produces. Zero .iife.js files existed in the
previous catalog commit and zero exist in the source tree, and the live site
already 404s them today while the .js files beside them serve 200. That file is
outside app/doxa-maps and is untouched by this publish.
2026-09-25 01:15:45 +00:00
app Publish doxa-maps bundles: 24 bundles, 57 leaves 2026-09-25 01:15:45 +00:00
README.md Public snapshot 2026-09-24 03:17:26 +00:00

ABC Audit — app-shell MFE Plugin drop

This folder makes the ABC Audit service appear in the app-shell Plugin Library (/library) and open in-shell, authed by the user's app-shell session — the Class-2 MFE-plugin path (the app-shell has no Class-3 "Services" registry; it embeds MFE bundles).

What the app-shell expects (contract)

The app-shell /library page reads a multi-MFE index.json manifest (schema doxa-1040-maps-mfe-index@1) via GET /api/_library, which scans the source configured by the server env var:

NUXT_MFE_INDEX_SOURCE=<path-or-url>      # a local path to this folder / its index.json, OR an http(s) URL
NUXT_PUBLIC_MFE_LIBRARY_ENABLED=true     # already set on the DT app-shell (turns /library on)

Each bundle in the manifest is an IIFE that registers a custom element; the shell embeds it as <abc-audit-tree profile-config='{…}'>. The /library "View" action opens the profile's embed staging page.

Layout

mfe-index/
  index.json                     manifest (static, checked in)
  build.sh                       assembles the drop (builds the IIFE, copies it in)
  abc-audit/
    abc-audit.iife.js            BUILT — self-mounting <abc-audit-tree> (see build.sh)
    audit-tree/index.html        staging "View" page — loader-injects-token

abc-audit.iife.js is built, not committed (the builder sandbox has no npm). Run ./build.sh on any host with npm (the deploy host / BUILD-GATE) to produce it.

The auth wire (C1 — no second login)

The token is never baked into the bundle. The staging page injects it at runtime (priority: ?tk= → window.__MFE_TOKEN__ → baked profile-config.tk) and the API base the same way (?api= → window.__ABC_API_URL__ → apiUrl). The custom element writes the token to localStorage['abc_dev_token'] and sets the API host before the Vue app's first getTree() — so the tree loads live under the user's tenant with no re-login. The token is the app-shell-signed HS256 JWT; the running ABC API verifies it with the same APP_SHELL_JWT_SECRET (C1 wire, already live).

The app-shell's library "View" href must therefore be given ?tk=<session JWT> and ?api=<abc api base> for a specific deployment — or a host wrapper sets window.__MFE_TOKEN__ / window.__ABC_API_URL__ before loading the bundle.

Deploy steps (coordinator / deploy-side)

  1. cd abc-audit-service/mfe-index && ./build.sh → produces abc-audit/abc-audit.iife.js
  2. Serve this mfe-index/ folder (static) OR push it to the forge raw.
  3. Set on the app-shell container: NUXT_MFE_INDEX_SOURCE=<served-url-or-path>/index.json and recreate the app-shell.
  4. Log into :3000 → /library shows ABC Audit → View → the audit tree opens in-shell (44 audits render), no second login.

No app-shell code change is needed — NUXT_MFE_INDEX_SOURCE is deploy config. (If in-shell mounting ever needs shell code, STOP and coordinate the authoritative app-shell tree with qa-coord/pm-1040-maps.)