No description
Find a file
doxa-maps publish c6540d8acb Publish: gospel-resources and my-upg-100-list catch up with main
Two bundles stale, two different causes:
  my-upg-100-list — my own alt-assertion work merged last tick, never published
  gospel-resources — five commits landed on main since the last publish

★ RE-CLONED RATHER THAN REBASED. My first push was rejected: another agent
published 553b6ff (the base team's plugin library) between my clone and my push.
A plain rebase would have replayed my 24-bundle rsync -a --delete on top of
theirs, and a bulk file operation replayed against a state it never saw can
delete what that state added. Re-cloning and re-rsyncing means merging onto
their ACTUAL tree rather than a snapshot taken before it existed.
Verified afterwards: their README.md intact, identical bundle sets so nothing
deleted, and zero files touched outside app/doxa-maps. Only my two bundles
differ from their catalog.

Verified before push: 24 bundles, 22 manifest bundles resolving, 57 leaves with
zero unresolved script srcs, tree settled (waited out a concurrent build).
2026-09-25 03:24:38 +00:00
app Publish: gospel-resources and my-upg-100-list catch up with main 2026-09-25 03:24:38 +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.)