diff --git a/cms/core/HANDOVER.md b/cms/core/HANDOVER.md
index 9693f7c..c9750c0 100644
--- a/cms/core/HANDOVER.md
+++ b/cms/core/HANDOVER.md
@@ -12,7 +12,7 @@
`api/src/plugin-manager.js`, `api/src/plugins/dialog/index.js` + their tests.
- **Run tests:** `cd api && npm install && node --test` → **44 green**. `node_modules`
is git-ignored; the fresh clone needs `npm install` once.
-- **Status:** stages 1–8 (+5.5) DONE; stage 6 partial (schema/system/System-panel done, editor-from-schema deferred). openbureau runs on core on dev CT 134, verified. **Next = stage 9** (onboard kgva: DB-less, auth:local, no plugins) — and finish stage 6's editor-from-schema there. Original stage-5 note kept below for history.
+- **Status:** stages 1–9 DONE; openbureau + kgva BOTH LIVE on core. openbureau on dev CT134 (schema editor + supabase); kgva LIVE at karimgabrielevarano.xyz via core (Variant A: CMS serves the site; CT130 rebuilt in-place — Docker + kgva-cms on :8081, nginx :80 proxies to it and keeps /media, static timer disabled, Caddy untouched). CAVEAT: kgva GIT_PUBLISH=false → edits on CT130 disk, not git-backed (enable GIT_PUBLISH + creds to fix). Rollback for kgva: restore nginx .static.bak + re-enable kgva-deploy.timer + stop kgva-cms. Original stage-5 note kept below for history.
- **Immediate next action (historic):** stage 5 + 5.5 **DONE** on the branch (commits `c4230a4`
cutover, `5e06337` DDL, `a93d11a` migration runner). Plugin-manager singleton
(`api/src/plugins.js`) wired into `index.js`/`stats.js`/`publish.js`, hard-coded
@@ -126,12 +126,16 @@ openbureau's extras become plugins (first: `dialog`); kgva enables none.
`pg` against `DATABASE_URL`, warning-and-skipping if unset. Needs `DATABASE_URL`
wired into the cms service env for openbureau (stage 8). Tested: migrate.test.js +
tracking SQL proven on the live dev Postgres (throwaway DB).
-6. [PARTLY DONE, commit f709b5d] `GET /api/schema` (site/auth/plugins/collections)
- + `GET /api/system` (admin: core version, plugins, content model, hugo, auth) +
- an admin **System panel** — all additive, the editor is untouched (stays 1:1).
- DEFERRED by design: making the editor itself render its fields from the schema —
- that needs a 2nd content model (kgva) + visual verification, not a blind rewrite
- of the live editor. Do it when onboarding kgva (stage 9).
+6. [DONE, commits f709b5d + f8f4131 + 59b9e20] schema-driven admin. `GET /api/schema`
+ + `GET /api/system` + a System panel; AND the editor now renders sidebar groups +
+ fields from the site's collections (admin/src/fields.jsx: per-type controls
+ string/text/slug/number/date/bool/select/list/image/color/markdown; form↔frontmatter
+ + path building). One admin serves any site. Unknown frontmatter is PRESERVED on
+ save (__raw) — no data loss. Verified working via kgva (stage 9). NOTE: openbureau
+ is NOT yet redeployed with the schema editor (its running image keeps the bespoke
+ one); when it is, its config field types (color→swatch, layout opts) are already
+ tuned. Visual review of the openbureau editor by Karim still recommended before
+ redeploying it.
7. [DONE, commit 86f9f57] **auth provider** (`config.auth` = `supabase` | `local`).
`api/src/auth-local.js` = file-based users (bcryptjs) + self-signed HS256 JWTs of
the SAME claim shape; `routes/auth.js` POST /api/auth/login (mounted only when
@@ -149,8 +153,19 @@ openbureau's extras become plugins (first: `dialog`); kgva enables none.
stack's migrate service owns db/schema.sql incl. dialog). Deployed to dev CT 134
and FULL write-verified: login/list/edit/preview/publish/dialog all identical, no
git divergence (GIT_PUBLISH=false). Rollback image `cms-cms:rollback` kept.
-9. onboard kgva (`CMS_CONFIG=…/kgva.config.js`, `auth: 'local'`, no plugins) as the
- 2nd consumer — DB-less.
+9. [DONE — LIVE on core (Variant A)] kgva consumes core. In
+ `karim/kgva` (git.kgva.ch, main 51a94b8): `cms/core` = core subtree, `cms/kgva.config.js`
+ (project/page/section, auth:'local', no plugins), `docker-compose.yml` builds the core
+ image (Hugo 0.163.3, no VITE_SUPABASE_URL → local-auth admin), `cms/seed-admin.mjs`,
+ updated deploy/provision-lxc.sh + ADMIN.md. VERIFIED DB-less end-to-end on real content
+ (staged on CT134): local login → schema editor → 42 entries (de/en) → stats →
+ create/preview/cleanup; image galleries preserved. The LIVE site is UNCHANGED — CT130
+ still deploys statically (timer → `hugo` → nginx; hugo ignores cms/); the CMS is dormant.
+ PENDING (deliberate, his call — repoints a live domain): provision a kgva-core container
+ (deploy/provision-lxc.sh, free CTID + temp IP) and decide topology — CMS serves the site
+ (Caddy → it) OR CMS edits + GIT_PUBLISH=true commits to git and the CT130 static timer
+ keeps serving. Then Caddy cutover per deploy/README. openbureau also not yet redeployed
+ with the schema editor (stage 6 note).
## How to run / test
openbureau CMS stack: `OPENBUREAU/cms/docker-compose.yml` (Node api + Hugo +
diff --git a/cms/core/admin/src/App.jsx b/cms/core/admin/src/App.jsx
index 3f86b72..b43b042 100644
--- a/cms/core/admin/src/App.jsx
+++ b/cms/core/admin/src/App.jsx
@@ -389,6 +389,31 @@ function Profile({ onMsg }) {