Contourner ou modifier D0
Toute tentative de remplacer, neutraliser ou court-circuiter la directive éthique socle (D0). D0 ne peut être restreinte — jamais affaiblie.
signal: P1_D0_OVERRIDE_ATTEMPTAuthentification, API surface, 8 prohibitions Guardian, paliers, trust mark, sandbox et codes d'erreur. Canons figés. Rédaction outillée par des agents IA sous la direction du fondateur, sous protocole de preuve : tests, intégration continue, empreinte vérifiable.
Le widget parle à votre passerelle (paquet @elysea/gateway), qui détient la clé secrète ; la clé publiable pk_ est émise par cette passerelle. Le fichier est servi par jsDelivr depuis le paquet npm, à une version figée, avec son empreinte d’intégrité (SRI).
Clé de test sk_test_
Sandbox uniquement. Aucune donnée utilisateur réelle. Aucune facturation UAM. Toutes les prohibitions Guardian sont actives (le sandbox est un test de conformité, pas un mode permissif).
Clé de production sk_live_
Production uniquement. Facturation UAM active (token LLM à la charge du constructeur — Décision KJ). Un mélange sk_test_/sk_live_ est refusé à l'authentification côté Core — AUTH_UNAUTHORIZED (HTTP 401).
identity.resolve()
pipeline.run()
memory.write()
guardian.audit()
ELYSÉA n'écrit aucune mémoire sans une preuve de consentement fournie par vous, le constructeur. Le consentToken authentifie l'opération (P7) ; il ne vaut pas consentement.
Ce que vous devez montrer — un texte de consentement mémoire explicite et séparé (pas noyé dans des conditions générales), accepté par un geste positif de l'utilisateur.
Ce que vous devez conserver — le texte exact affiché, sa version, l'horodatage de l'accord et l'utilisateur concerné, pour pouvoir prouver l'accord.
Ce que vous devez envoyer — à chaque memory.write, une preuve MemoryConsentProof. Tous les champs sont obligatoires et non vides ; le SDK n'en remplit aucun à votre place.
| Champ | Contenu |
|---|---|
granted | true |
consent_text_version | version du texte affiché |
libelle_sha256 | libelleSha256(texte) — SHA-256 hexadécimal des octets UTF-8 du texte exact affiché, sans aucune normalisation |
consent_granted_at | horodatage ISO 8601 de l'accord, enregistré par vous |
constructor_legal_entity | votre entité juridique |
app_id | votre application |
import { libelleSha256, ElyseaSDKError, ElyseaNetworkError, type MemoryConsentProof } from '@elysea/core';
// Votre enregistrement de l'accord (texte exact affiché, version, horodatage)
const preuve: MemoryConsentProof = {
granted: true,
consent_text_version: accord.version,
libelle_sha256: libelleSha256(accord.texteAffiche),
consent_granted_at: accord.accepteLe,
constructor_legal_entity: 'Votre Société SAS',
app_id: 'votre-app',
};
try {
await elysea.memory.write(
coreUserId,
{ type: 'preferences_communication', content: 'Réponses courtes.', expires_at: '2027-01-01T00:00:00Z' },
consentToken,
preuve,
);
} catch (e) {
if ((e instanceof ElyseaSDKError || e instanceof ElyseaNetworkError) && e.errorCode === 'CONSENT_PROOF_REQUIRED') {
// Mémoire désactivée pour cet utilisateur : ne pas réessayer sans preuve complète.
}
}Sans preuve, la mémoire reste désactivée
Retrait — dès que l'utilisateur retire son accord, cessez d'envoyer la preuve (aucune nouvelle écriture n'est alors possible) et effacez les éléments déjà écrits avec memory.delete(coreUserId, itemId, consentToken). Le cerveau n'expose pas encore de route SDK pour retirer l'accord lui-même.
Un tiers peut RESTREINDRE — jamais affaiblir.
Vous pouvez configurer ELYSÉA pour être plus strict que la baseline (bloquer des sujets, réduire les types de mémoire utilisés, exiger un consentement plus fin). Vous ne pouvez pas configurer ELYSÉA pour être moins protecteur. Le Guardian SDK rejette toute configuration qui affaiblirait une prohibition existante — dans le pipeline, pas seulement dans une politique.
Contourner ou modifier D0
Toute tentative de remplacer, neutraliser ou court-circuiter la directive éthique socle (D0). D0 ne peut être restreinte — jamais affaiblie.
signal: P1_D0_OVERRIDE_ATTEMPTAccéder à la mémoire brute
Lecture directe des items mémoire d'un utilisateur sans passer par le pipeline de résolution consentie. Aucun endpoint SDK n'existe pour ça.
signal: P2_MEMORY_RAW_ACCESSBypass de la safety gate
Toute requête conçue pour contourner les garde-fous (jailbreak de prompt, injection système, wrapping LLM externe non signé).
signal: P3_SAFETY_GATE_BYPASS_ATTEMPTLLM sans wrapper conforme
Appel direct à un LLM externe sans passer par runLLMControlled. Le constructeur choisit son moteur dans le pipeline canon — jamais en le contournant. Bloc depuis v0.4.1.
signal: P4_NON_CONFORM_LLM_SIGNATUREWatermark absent dans la sortie
Réponse pipeline renvoyée sans métadonnée de traçabilité ELYSÉA. La chaîne de conformité est rompue.
signal: P5_WATERMARK_MISSINGDésactivation de la télémétrie éthique
Désactiver la télémétrie de conformité canon (posture, Guardian log). L'enforcement est architectural côté Core — aucune API ne permet de la couper.
signal: P6_TELEMETRY_DISABLEDAppel sans token de consentement
Requête pipeline ou memory.write lancée sans fournir le token de consentement ELYSÉA valide pour l'utilisateur concerné.
signal: P7_MISSING_CONSENT_TOKENBadge vérifié sans attestation
Afficher « Vérifié — mesures publiques » ou tout badge de certification ELYSÉA sans attestation Core valide. Bloc depuis v0.4.1 — révocation immédiate si fraude confirmée.
signal: P8_UNCERTIFIED_BADGE_USAGE| Palier | Prix | Clé | Environnement | Quota | Badge |
|---|---|---|---|---|---|
| TEST | Gratuit | sk_test_ | Sandbox · sans limite de durée · 500 interactions par mois | 1 app · communautaire | Powered by ELYSÉA |
| VOTRE PRODUIT | 2,50 € HT, puis dégressif | sk_live_ | Production · par utilisateur actif dans le mois | Dégressif par tranche : 2,50 € / 1,50 € / 0,80 € HT | Powered by ELYSÉA |
| VOS ÉQUIPES | 30 € HT / an, puis dégressif au volume | sk_live_ | Production · par employé couvert | Licence annuelle · rapport conformité inclus | Powered by ELYSÉA |
Powered by ELYSÉA
Badge de premier niveau. Indique que l'app intègre le SDK ELYSÉA avec les 8 prohibitions actives. Vérifiable par l'utilisateur via son portail ID.
Vérifié — mesures publiques
Niveau supérieur. Attribué après procédure de mesure sur états précis du pipeline — résultats versionnés et publiés à l'issue de la campagne. Ce niveau n'est pas encore émis (campagne en cours). Processus distinct de l'abonnement.
Révocation
Révocation immédiate
P1, P2, P3 (tentative active de contournement) et P8 (fraude de badge confirmée). Aucun délai de grâce.
Délai de 10 jours
P4, P5, P6, P7 — infractions non-frauduleuses. Le constructeur reçoit une notification et dispose de 10 jours pour corriger avant révocation.
Appel — 15 jours
Toute révocation peut être contestée dans un délai de 15 jours calendaires suivant la notification. Procédure décrite dans le contrat partenaire.
Le namespace trust du SDK permet de vérifier le statut de vérification d’une app et de valider l’authenticité d’une attestation HMAC côté Core. Usage typique : afficher le badge correct à l’utilisateur, ou auditer un partenaire tiers.
trust.fetchAttestation(appId)
→ Promise<TrustMarkAttestation | null>
trust.getStatus(attestation)
→ CertificationStatus
trust.verify(attestation)
→ Promise<{ valid: boolean }>
firm_safety toujours actif
Le mode de sécurité principal ne peut pas être désactivé en sandbox. Toute tentative de passer firm_safety: false est ignorée silencieusement.
D0 active sans exception
La directive éthique socle (D0) est active en sandbox exactement comme en production. Le comportement Guardian est identique.
Guardian SDK actif
Tous les blocs Guardian sont fonctionnels en sk_test_. Le sandbox est un vrai test de conformité — pas un bac à sable permissif.
8 prohibitions actives
P1 à P8 sont intégralement appliquées. Les signaux d'erreur retournés sont identiques à la production.
Règle K appliquée
Règle K : les souvenirs bruts de l'utilisateur (items marqués K) ne sortent pas vers une autre application — garde de données, en sandbox comme en production. Aucun endpoint de test ne contourne cette règle.
Erreur de mismatch environnement
| Code | Type | Cause | Action recommandée |
|---|---|---|---|
AUTH_INVALID_KEY | Config | Clé vide ou sans préfixe sk_test_/sk_live_ — erreur synchrone au démarrage | Vérifier ELYSEA_API_KEY dans createElyseaClient({ auth: { apiKey } }) |
P1_D0_OVERRIDE_ATTEMPT | Guardian BLOC | Tentative de bypass D0 | Violation P1 — révision architecture requise |
P2_MEMORY_RAW_ACCESS | Guardian BLOC | Lecture directe mémoire utilisateur | Utiliser uniquement le pipeline de résolution consentie |
P3_SAFETY_GATE_BYPASS_ATTEMPT | Guardian BLOC | Contournement safety gate détecté | Revue complète du prompt et de l'architecture LLM |
P4_NON_CONFORM_LLM_SIGNATURE | Guardian BLOC | Appel LLM direct sans passer par le pipeline canon | Utiliser uniquement le pipeline canon via pipeline.run() |
P5_WATERMARK_MISSING | Guardian BLOC | Réponse pipeline sans métadonnée de traçabilité | Vérifier l'intégration — ne pas modifier la réponse pipeline brute |
P6_CROSS_BUILDER_CONSENT_MISSING | Guardian BLOC | Croisement mémoire inter-app sans consentement scopé | Vérifier le token de consentement cross-app actif |
CONSENT_PROOF_REQUIRED | Mémoire | memory.write sans preuve de consentement du constructeur complète — levée avant envoi, ou HTTP 403 du cerveau ; aucune mémoire écrite | Envoyer une MemoryConsentProof complète — voir « Mémoire : consentement prouvé obligatoire » |
P7_MISSING_CONSENT_TOKEN | Guardian BLOC | Appel sans token de consentement ELYSÉA valide | Recueillir le consentement utilisateur avant tout appel |
P8_UNCERTIFIED_BADGE_USAGE | Guardian BLOC | Badge « Vérifié — mesures publiques » affiché sans attestation Core valide | Retirer le badge ou obtenir une attestation via audit officiel ELYSÉA |
Une question sur la conformité ? Un cas limite non documenté ?