Aller au contenu
Adama DialloRSE · DATA · SYSTÈMES

FRONTIÈRES / CONFIANCE

Ce qui entre, ce qui sort,
et ce qui n’entre jamais.

Savoir poser une frontière de données est une compétence, et elle s’évalue. Ce site en démontre une dans son code depuis le premier jour, sans l’avoir jamais montrée. Voici le schéma, les interdits, et pour chacun le test qui le verrouille quand il existe.

INTERDITS VERROUILLÉS4 / 5

règles tenues par un test automatique. Les autres sont tenues par la discipline, et c’est dit.

Lire la confidentialité ↗

Le schéma des flux

Trois sources entrent en lecture. Une requête sort vers le fournisseur de modèle. Et la flèche vers les produits du groupe est barrée : le cockpit consomme, il ne recalcule pas, il n’écrit jamais.

Hébergeur des dépôtsen lectureProduits du groupeen lectureVisiteuren lectureAdama OSce siteFournisseur de modèlerequêteProduits du groupejamais d’écritureaucune écriture, jamais
Trois sources entrent, une requête sort vers le fournisseur de modèle, et la flèche vers les produits du groupe est barrée. Elle n’est pas désactivée par une option : elle n’existe pas dans le code, et un test échoue si elle apparaît.
DeVersCe qui transite
Hébergeur des dépôtsAdama OSMessages de commit, dates et noms de dépôt. Rien du contenu des fichiers.
Produits du groupeAdama OSUn état de santé, sans compte et sans donnée client.
VisiteurAdama OSCe qu’il écrit dans l’assistant, et sa prise de contact s’il en laisse une.
Adama OSFournisseur de modèleLa question posée et les extraits de corpus qui la fondent. Aucune donnée de contact.
Adama OSProduits du groupeRien. Le cockpit consomme, il ne recalcule pas, et il n’écrit jamais chez un produit.

Ce qui n’entre jamais

Une règle tenue par un test et une règle tenue par la discipline n’ont pas la même valeur. La distinction est portée ligne par ligne, parce que les confondre reviendrait à emprunter la crédibilité de la première pour la seconde.

  • Aucune donnée client d’un produit du groupe n’entre ici

    Les seules routes appelées sont des routes de santé publiques, sans compte et sans paramètre.

    Verrouillé par un test automatique, tests/frontieres.test.ts

  • Aucun document confidentiel n’entre dans le corpus documentaire

    Le corpus ne contient que des textes publics et mon propre parcours. L’ingestion est manuelle, document par document.

    Aucun test ne verrouille cette règle. Elle est tenue par la discipline d’ingestion, et je préfère le dire.

  • Aucune clé d’administration ne circule dans une passerelle

    Les passerelles ne portent aucun en-tête d’autorisation. Une passerelle qui s’authentifie devient une porte.

    Verrouillé par un test automatique, tests/frontieres.test.ts

  • Aucun secret ne descend dans le navigateur

    Seules les variables explicitement publiques traversent. Les clés de service et le jeton de lecture des dépôts restent côté serveur.

    Verrouillé par un test automatique, tests/frontieres.test.ts

  • Aucun appel authentifié vers une route d’administration

    Même un appel de contrôle vers une route qui journalise un événement est une écriture. Le cockpit ne l’émet pas.

    Verrouillé par un test automatique, tests/frontieres.test.ts

Où un modèle intervient

Un seul endroit : l’assistant documentaire de ce site.
Ce qu’il reçoit
La question posée, l’historique court de la conversation, et les extraits du corpus retrouvés pour cette question.
Ce qu’il ne reçoit pas
Aucune donnée de contact, aucune donnée client d’un produit, aucun contenu de base autre que le corpus documentaire.
Ce qu’il ne décide pas
Rien. Il propose une formulation à partir de sources qu’il a reçues. Le choix des sources est fait avant lui, par une recherche vectorielle, et le refus de répondre est décidé par le code, pas par le modèle.

L’IA propose, le système décide.

Une mention de traitement automatisé apparaît au premier contact avec l’assistant, et reste visible dans son en-tête. Elle est verrouillée par un test. Les réponses de l’assistant portent en outre un en-tête de provenance lisible par un programme, posé au niveau de la réponse.

Les images de partage de ce site sont composées de rectangles et de texte, pas générées par un modèle. Elles ne sont donc pas marquées, et ce raisonnement est écrit plutôt que sous-entendu. Échéance de réexamen : 2 décembre 2026. Le jour où une image produite par un modèle entre sur ce site, elle est marquée à l’endroit unique où les images sont composées.

Les sous-traitants, un par un

Chacun avec ce qui transite et la région où il le traite. Une ligne est actuellement hors de la région annoncée, et elle le dit.

Sous-traitantCe qui transiteRégion
Vercelhébergement du site, exécution des pagesexécution en région Paris, société établie hors Union européenne
Supabasebase de données, partagée avec deux produits du groupeUnion européenne, Irlande
OpenAIquestion posée à l’assistant et extraits de corpus qui la fondentÉtats-Unis, clauses contractuelles types
PostHogmesure d’audience, après consentement uniquementUnion européenne
Sentryjournalisation des erreurs applicativesUnion européenne
Better Stacksupervision de disponibilité du siteUnion européenne
GitHublecture des messages de commit affichés dans le journalÉtats-Unis, lecture seule et sans donnée personnelle transmise
Cal.comprise de rendez-vous, ouverte à la demandeUnion européenne

La base est partagée avec deux produits

Le projet de base de données de ce site n’est pas dédié : il est partagé avec deux produits du groupe. Ce n’est pas un choix d’architecture, c’est une contrainte relevée après coup, et je ne vais pas la présenter comme une décision.

Sa conséquence est traitée. La séparation entre les tables de ce site et celles des produits est tenue par les règles de sécurité au niveau des lignes, et non par une convention de nommage. Surtout, toute restauration est sélective, table par table : une restauration globale au niveau du projet écraserait les données des produits voisins, et c’est précisément ce que la procédure interdit.

Ce que cela coûte : il n’existe pas de sauvegarde propre à ce site que l’hébergeur saurait restaurer seule. L’export logique du dépôt ne prend nommément que les tables de ce site, et c’est la seule granularité sûre.

LIMITES CONNUES

Ce qui reste ouvert.

5 entrées, relues une par une. Une limite se retire de cette liste quand elle est réglée, jamais quand elle devient gênante. C’est pourquoi chacune porte ce qui la fermera.

  • Le huitième dépôt n’est pas lu

    Les huit dépôts du groupe sont répartis sur deux propriétaires. Un jeton de lecture à portée fine n’en couvre qu’un seul, donc sept entrées sur huit au mieux.

    Ce que cela coûte
    Le journal de construction ne montre pas les contributions du dépôt manquant. Il le nomme, il ne le remplace pas.
    Ce qui la fermera
    Le seul jeton couvrant les huit donnerait aussi l’écriture. Tant que cet arbitrage tient, la limite reste ouverte et affichée.

    Constatée le

  • Les produits n’exposent pas de route publique de lecture

    Les deux moteurs du groupe n’exposent qu’une route de santé sans authentification. Tout le reste est authentifié par session ou réservé à l’administration.

    Ce que cela coûte
    Le cockpit ne peut afficher qu’une disponibilité. Aucun chiffre d’usage produit n’est importable aujourd’hui, et aucun n’est inventé pour combler.
    Ce qui la fermera
    Une route publique versionnée, en lecture, sans donnée client, côté produit. Le jour où elle existe, elle se branche en une entrée de configuration.

    Constatée le

  • Il n’y a pas d’intégration continue

    Aucun automate ne construit ni ne teste le dépôt à chaque envoi. Le quota du service d’automatisation est épuisé.

    Ce que cela coûte
    La vérification repose sur une commande locale, exécutée avant chaque envoi. Elle couvre le même terrain, mais elle dépend d’une discipline humaine.
    Ce qui la fermera
    Rétablir le quota, ou porter la même séquence sur un autre exécuteur. Aucune mesure de fréquence de déploiement n’est publiée d’ici là : elle ne serait pas mesurée.

    Constatée le

  • La base de données est partagée avec deux produits

    Le projet de base de données de ce site est le même que celui de deux produits du groupe. Ce n’est pas un choix, c’est une contrainte relevée après coup.

    Ce que cela coûte
    Toute restauration doit être sélective, table par table. Une restauration globale écraserait les données des produits voisins.
    Ce qui la fermera
    La séparation est tenue par les règles de sécurité au niveau des lignes, et la procédure de restauration ne porte que sur les tables de ce site. Un projet dédié fermerait la limite pour de bon.

    Constatée le

  • Le corpus documentaire ne couvre pas tout ce que le site évoque

    Le corpus contient un standard de reporting simplifié et un profil. Le socle complet des normes européennes est présent dans le dépôt mais n’est pas entièrement ingéré.

    Ce que cela coûte
    L’assistant refuse de répondre sur les parties non couvertes, plutôt que de répondre approximativement. Le refus est le comportement attendu, pas un incident.
    Ce qui la fermera
    Ingérer le socle complet, puis vérifier que la question de contrôle dépasse le seuil de pertinence, et non simplement qu’elle ramène quelque chose.

    Constatée le

La contradiction de région a été tranchée : elle ne figure plus au registre des limites connues.

L’INSPECTION COMPLÈTE

Les mêmes frontières, côté code.

L’inventaire généré, les contrats des interfaces publiques, les réglages de la recherche documentaire et les dix contrôles d’intégrité.

Ouvrir la vue technique