Aller au contenu

Formalisation & confidentialité — écrire propre dès l'origine

Contexte

Le second cerveau Bricks distingue un tronc commun partagé (poussé sur le remote — un repo privé team-internal, qui héberge le contenu internal) d'une couche locale/privée (jamais synchronisée, pour le restricted et le perso). Le risque : qu'un contenu sensible (nom + jugement, chiffre business, incident de prod, stratégie, donnée client) se retrouve écrit dans un fichier destiné au partage, et parte sur le remote.

Historiquement la protection était une denylist (.gitignore qui liste ce qui ne doit pas sortir) + une vérification tardive au moment du /sync. Ces deux mécanismes dérivent : on oublie d'alimenter la denylist, et la revue manuelle au sync est coûteuse et faillible. Épisode déclencheur (2026-06-11) : au moment de partager le Brain à des collègues, 6 fichiers récents internal non listés dans le .gitignore seraient partis sur le remote, dont un jugement nominatif sur une personne.

Principe : décaler la vérification à l'écriture (shift-left)

On ne vérifie pas la sensibilité à la sortie, on écrit propre à l'entrée. Si on n'écrit rien de sensible dans un fichier partagé, on n'a rien à filtrer plus tard — et on s'expose moins par construction.

Trois étages complémentaires (du plus structurel au plus visible) :

Étage Quoi Pourquoi
Lentille (règle alwaysApply) L'IA classe la sensibilité à chaque écriture dans le wiki Automatique, pas dépendant de la mémoire
Greffe ingest La discipline est dans le flux d'ingest / création de page Le point où le contenu entre dans le tronc commun
Garde-fou mécanique Le pre-commit bloque tout fichier suivi confidentiality: restricted ; le lint mensuel flague les risques La « vraie vérification » qui ne peut pas dériver

Le test de sensibilité (5 déclencheurs)

Un contenu est sensible → couche locale s'il porte l'un de ces éléments :

  1. Nom + jugement sur une personne (performance, compétence, fiabilité, « point de vigilance »). → RH / préjudice.
  2. Chiffre business non public (métrique, CA, volume d'users, taux de conversion, pricing réel, valorisation).
  3. Incident / faille de production ou de sécurité (bug financier, fuite, downtime nominatif).
  4. Stratégie ou pari non public, donnée client / partenaire nominative, information financière.
  5. Tout ce qui est déjà confidentiality: restricted.

À l'inverse, est partageable : la méthodo, le pattern généralisable, la décision abstraite de son contexte sensible, la convention d'équipe sans donnée nominative gênante.

Repère mental : « est-ce que ça décrit COMMENT on travaille (partageable) ou QUI/COMBIEN/QUEL incident précis (local) ? »

L'équilibre qualité : relocaliser, pas supprimer

La sensibilité ne doit pas appauvrir le Brain. La règle d'or est le pattern « librarian » étendu à la confidentialité :

  • Relocaliser, pas supprimer : le détail sensible descend dans la couche locale/privée, avec un lien — il n'est pas perdu.
  • Abstraire, pas omettre : le fichier partagé garde la substance généralisable ; on retire le spécifique gênant, pas l'enseignement.

Exemple (tiré de l'épisode déclencheur) :

Brut (local) : « [Prénom] reprend un sujet critique (N3) — profil encore junior sur ce périmètre, point de vigilance, kill criteria 1-2 mois. »

Partagé (abstrait) : « Passation d'un sujet N3 vers un profil en montée en compétence — point de vigilance suivi en local. »

La décision et le pattern survivent ; le jugement nominatif non. La qualité est préservée au niveau du système (rien n'est perdu, tout reste sourcé), seul l'étage partagé est assaini.

Décision de placement

Au moment de formaliser un contenu, trancher où il vit :

Nature du contenu Mécanique
Sensible (un des 5 déclencheurs), mais utile au Brain Concept / page locale (confidentiality: restricted ou internal sensible) Ajouter le chemin au .gitignore dans le même geste (la denylist ne dérive que si on l'oublie)
Sensible et purement personnel private/<handle>/ Gitignored par construction
Généralisable / méthodo / décision abstraite Fichier partagé (tracké) confidentiality: public ou internal non sensible
Mixte (substance partageable + détail sensible) Les deux : abstraction dans le partagé + détail en local, reliés par un lien

Passer de denylist à classification : à terme, c'est le frontmatter confidentiality qui pilote le partage, pas une liste de chemins maintenue à la main. Le restricted ne doit jamais être tracké (le pre-commit le bloque).

Marqueurs à insérer (ne pas trancher silencieusement)

  • [sensible → local] — contenu détecté sensible à relocaliser hors du partagé.
  • [à abstraire] — substance partageable noyée dans du spécifique gênant, à reformuler.
  • [classification incertaine] — doute sur la classe de confidentialité → demander avant d'écrire dans le partagé.

Anti-patterns — réagir explicitement

Signal Réaction
Nom propre + appréciation de perf dans un fichier tracké [sensible → local] : relocaliser, abstraire le pattern
Chiffre business (users, CA, conversion) dans un concept partagé [sensible → local] ou agréger / retirer le chiffre
Incident de prod détaillé dans une page partagée Garder le pattern (« incident de double-paiement »), retirer les détails exploitables
Création d'un concept sensible sans toucher au .gitignore Ajouter le chemin à la denylist dans le même commit
Fichier tracké marqué confidentiality: restricted Erreur structurelle : un restricted ne se tracke pas (le hook bloque)
« On filtrera au sync » Non — on écrit propre à l'entrée, le sync n'est pas un filet de confidentialité

Articulation avec le reste du schema

  • Librarian / citations : cette lentille en est l'extension confidentialité — pointer vers la source locale plutôt que recopier le sensible dans le partagé.
  • Espaces privés (private-space) : la couche locale de dernier recours ; rien n'en sort sans graduation explicite.
  • Réunion & cadrage (reflexes-reunion-cadrage) : « c'est quoi la preuve » et « on n'invente pas » se prolongent en « est-ce que ça doit être partagé ».
  • Confidentialité AGENTS.md : public | internal | restricted reste la classification de référence ; cette lentille la rend opérante à l'écriture.

Sources

  • Épisode déclencheur 2026-06-11 — revue de confidentialité au moment de partager le Brain à des collègues dev (6 fichiers internal non couverts par le .gitignore, dont un jugement nominatif).
  • .cursor/rules/formalisation-confidentialite.mdc — comportement IA (lentille alwaysApply).
  • docs/private-space.md — couche locale / privée.
  • AGENTS.md § Lentille formalisation & confidentialité.