No description
Find a file
doxa-maps publish f361138adb Publish: Russian and Arabic translation refinements reach readers
Three bundles stale — country-posters, gospel-resources, regions-dashboard —
all SAME SIZE, DIFFERENT HASH, which is why this is compared by sha384 and not
byte length.

Diagnosed before publishing rather than assuming. Source main had NOT moved
(zero commits since the last publish) and the catalog HEAD was still my own
previous publish, so neither end had changed. The bundles' mtimes settled it:
all three were rebuilt at 02:51:50, six minutes AFTER the 02:45:21 publish.
Another agent rebuilt in this shared worktree, and the rebuild compiled
translation refinements that were already committed but not yet in those
bundles.

The changes are deliberate corrections, verified present in main's committed
source and the superseded forms absent from it:
  ru  "Загрузить еще"  -> "Загрузить ещё"          (the ё it should always have had)
  ru  "Поиск по именам" -> "Поиск по названиям"    (names -> titles)
  ar  "إبحث عن الأسماء"  -> "ابحث عن الأسماء"        (hamza corrected)
A token-set comparison shows 6 lost and 6 gained per bundle — the same strings
in better form, nothing dropped.

Verified before push: 24 bundles, 22 manifest bundles resolving, 57 leaves with
zero unresolved script srcs, zero bundles carrying the old broken asset path,
tree settled, diff scoped to app/doxa-maps.
2026-09-25 02:55:25 +00:00
app Publish: Russian and Arabic translation refinements reach readers 2026-09-25 02:55:25 +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.)