From 222658a75db548055732dce15d0dee7f291ff220 Mon Sep 17 00:00:00 2001 From: Sylvain Duchesne Date: Mon, 15 Jun 2026 17:05:55 +0200 Subject: [PATCH] =?UTF-8?q?docs(concepts):=20shared-wallet-shim=20?= =?UTF-8?q?=E2=80=94=20statut=20d'impl=C3=A9mentation=20(flags=20OFF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Couche compte/login + isolation livrées et vérifiées ; couche multi-document (storeRegistry) livrée derrière FESTIPOD_MULTISTORE/FESTIPOD_STAGING (OFF par défaut, mono-store reste le défaut), runtime NG à valider sur broker. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../brief_2026-06-15_shared-wallet-shim.md | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.project/concepts/nextgraph-platform/brief_2026-06-15_shared-wallet-shim.md b/.project/concepts/nextgraph-platform/brief_2026-06-15_shared-wallet-shim.md index db146eb..a93b720 100644 --- a/.project/concepts/nextgraph-platform/brief_2026-06-15_shared-wallet-shim.md +++ b/.project/concepts/nextgraph-platform/brief_2026-06-15_shared-wallet-shim.md @@ -6,7 +6,7 @@ last_updated: 2026-06-15 # Stopgap multi-user : wallet partagé unique (`sharedWalletShim`) -**Status:** Cadré — décisions prises, implémentation non démarrée +**Status:** En cours — couche compte/login + isolation livrées et vérifiées ; couche multi-document livrée derrière flag, à valider sur broker **Last updated:** 2026-06-15 ## Context @@ -89,6 +89,30 @@ Un seul wallet ⇒ tout lisible par tous. Pour que le staging se **comporte** co - `CURRENT_USER_ID` constant → `currentAccountId` sélectionnable (persisté `localStorage`). - `src/shared/utils/ngBootstrap.ts` — seed réparti **par documents**. +## État d'implémentation (2026-06-15) + +Deux drapeaux de build, tous deux **OFF par défaut** (le mono-store validé reste le défaut ; dev/`@ui`/`@e2e` inchangés) : + +- **`FESTIPOD_STAGING=1`** — active le flux login option 2 (gate technique → écran « Connexion »). Découplé de `NODE_ENV` exprès, pour qu'un `@e2e` en build production ne soit pas bloqué par le gate. +- **`FESTIPOD_MULTISTORE=1`** — active la couche multi-document (storeRegistry). + +| Pièce | Fichier | État | +|---|---|---| +| Couche compte (faux login, localStorage) | `src/shared/context/AccountContext.tsx` | ✅ livré, vérifié (build + `@ui`) | +| Gate technique + écran « Connexion » + orchestrateur | `src/modules/auth/screens/{AccessGateScreen,ConnexionScreen}.tsx`, `src/app/AuthGate.tsx` | ✅ livré | +| Vrai logout planqué | `ngSession.ts:logoutNg`, `SettingsScreen.tsx` | ✅ livré | +| Filtre d'isolation (mode connecté) | `src/shared/utils/isolation.ts` + `FestipodDataContext` (useNgData) | ✅ livré, pur, vérifié | +| storeRegistry + sharedWalletShim (doc_create, SPARQL shim, entité→périmètre) | `src/shared/utils/storeRegistry.ts` | ⚠️ livré, **compile**, runtime NG **à valider sur broker** | +| Câblage multi-document (reads `{graphs}` + writes par périmètre) | `FestipodDataContext` (useNgData) derrière `MULTISTORE` | ⚠️ livré, à valider sur broker | + +**Pourquoi le flag** : le runtime NextGraph (doc_create, shim SPARQL, abonnement multi-graphes) ne peut pas être validé sans broker live. Conformément au « mode mono-store parallèle » endossé par [[brief_2026-05-17_multi-store-refactor]], il ship OFF — rien de fonctionnel n'est cassé. + +**Étapes de validation broker** (pour passer `MULTISTORE` ON) : +1. Sur `nextgraph.net`, vérifier que `doc_create(session, "Graph", "data:graph", "store", undefined)` retourne un NURI utilisable comme `@graph` ORM (le test rust `sparql_regressions.rs:136-200` le suggère, à confirmer côté SDK JS). +2. Vérifier l'écriture/lecture du shim via `sparql_update`/`sparql_query` sur le NURI du private store (et le format de retour de `sparql_query` — `readBindings()` est tolérant mais à confirmer). +3. Vérifier l'abonnement `useShape(shape, { graphs: [...] })` sur plusieurs documents et sa réactivité quand la liste grandit. +4. Décider du seeding multi-document (le dev auto-seed est neutralisé en `MULTISTORE`). + ## Open Questions - ~~**Login NextGraph invisible**~~ → **tranché** : login non programmable, présenté comme barrière technique d'accès ; session persistante. Voir [[decision_2026-06-15_shared-wallet-login-flow]].