05ee576d7d
Application de la règle qu'on vient de durcir : l'app IGNORE entièrement l'état d'implémentation de NextGraph. Le CODE était légitime — `inbox.readSynced` est une surface SDK exportée ; ce sont les JUSTIFICATIONS qui fautaient, en expliquant les choix par des internes du cœur. Réécrit en termes de CONTRAT : - registration.ts / FestipodDataContext : « barrier-gated read, le repo d'inbox n'est pas encore ouvert dans le verifier, un read ancré renverrait 0 » devient « `read` rend ce qui est connu localement maintenant, `readSynced` rend une fois les dépôts synchronisés visibles ; ce site a besoin du second parce qu'il lit depuis une session froide ». - ngBootstrap : « le verifier sérialise les créations » devient « `docCreate` est un aller-retour qui ne recouvre pas le suivant, donc le coût du seed croît LINÉAIREMENT avec le nombre de documents ». Le ~2s mesuré est conservé, mais explicitement comme une observation, pas comme un contrat. - entityWrites : description de lecture périmée (ORM fan-out, ngSet couplé au scope) remplacée par la vue réactive. La distinction read/readSynced vit désormais là où elle est légitime : knowledge_sdk-surface, avec le critère de choix (`read` dans une session qui observe déjà l'inbox, `readSynced` dès que la justesse dépend d'une session froide voyant le dépôt d'une autre identité). knowledge_context-internals cesse d'expliquer le fix par `ensureRepoOpen`/premier `State` et pointe le contrat. Laissé tel quel : `src/shared/support/hooks.ts` et les steps e2e — le harness de test connaît légitimement la plomberie ; la règle vise l'app. Et le « no cross-account fan-out » de FestipodDataContext, qui décrit le périmètre de l'app et non NextGraph. tsc : 0 erreur. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014GbGgNEHRejVKoREvFuDFg