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.
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.
| De | Vers | Ce qui transite |
|---|---|---|
| Hébergeur des dépôts | Adama OS | Messages de commit, dates et noms de dépôt. Rien du contenu des fichiers. |
| Produits du groupe | Adama OS | Un état de santé, sans compte et sans donnée client. |
| Visiteur | Adama OS | Ce qu’il écrit dans l’assistant, et sa prise de contact s’il en laisse une. |
| Adama OS | Fournisseur de modèle | La question posée et les extraits de corpus qui la fondent. Aucune donnée de contact. |
| Adama OS | Produits du groupe | Rien. 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.tsAucun 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.tsAucun 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.tsAucun 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
- Où
- 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-traitant | Ce qui transite | Région |
|---|---|---|
| Vercel | hébergement du site, exécution des pages | exécution en région Paris, société établie hors Union européenne |
| Supabase | base de données, partagée avec deux produits du groupe | Union européenne, Irlande |
| OpenAI | question posée à l’assistant et extraits de corpus qui la fondent | États-Unis, clauses contractuelles types |
| PostHog | mesure d’audience, après consentement uniquement | Union européenne |
| Sentry | journalisation des erreurs applicatives | Union européenne |
| Better Stack | supervision de disponibilité du site | Union européenne |
| GitHub | lecture des messages de commit affichés dans le journal | États-Unis, lecture seule et sans donnée personnelle transmise |
| Cal.com | prise de rendez-vous, ouverte à la demande | Union 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é.