NeuralWall Rules Kit

ADR-0003 — Gouvernance du portail : accès, contribution, notes, rôles

  • Statut : Accepted
  • Date : 2026-06-03
  • Contexte associé : ADR-0001 (format), ADR-0002 (modèle de contenu & gouvernance), ROADMAP.md

Contexte

L'ADR-0002 a fixé le modèle de contenu (granularité, champs auteurés, trust_tier, licence CC-BY-4.0, provenance DCO). Il reste à décider comment le portail s'ouvre : qui peut lire, qui peut écrire et comment, comment valider qu'une fiche fonctionne, et comment protéger les fiches dont un fournisseur a la responsabilité. Ces décisions conditionnent les Phases 2–5 de la roadmap. Le format (ADR-0001) en reste indépendant.

Exigences produit à satisfaire :

  1. Lecture libre pour tout le monde (y compris concurrents), dans tous les formats.
  2. Écriture inspirée de Wikipédia (création + proposition de modifications), sous accès authentifié.
  3. Notes sur une fiche pour attester qu'elle fonctionne / qu'elle est complète.
  4. Accès fournisseurs pour limiter les modifications des fiches « distributeur ».

Décisions

1. Lecture publique, sans authentification, tous formats

Toutes les fiches sont lisibles par n'importe qui sans compte, sous chaque représentation : source YAML, MACHINE/JSON, HUMAIN (HTML par locale), IA/RAG. Une API de lecture publique sert le MACHINE/JSON. C'est assumé y compris pour des concurrents : c'est cohérent avec CC-BY-4.0 (réutilisation commerciale et dérivation autorisées, attribution requise) et avec la mission de bien commun du portail.

2. Source de vérité = Git ; couche applicative = app + DB (hybride)

Le contenu des fiches reste stocké en Git (auditable, diffable, CC-BY/DCO natif, exportable par tous). Les couches qui n'ont pas leur place dans le YAML — comptes, file de revue, notes/attestations, rôles/ownership — vivent dans une application + base de données. L'éditeur web génère des PR Git : barrière d'entrée basse pour les non-développeurs, tout en conservant l'historique et la provenance Git.

3. Contribution façon Wikipédia, authentifiée

  • Accès authentifié pour écrire (lecture reste anonyme). Auth via OIDC (fournisseur d'identité externe, p. ex. GitHub/Google + e-mail), pas d'auth maison.
  • Éditeur web : créer une fiche depuis le template, proposer une modification (vue diff), soumettre → PR + file de revue. validate + lint s'exécutent sur la proposition.
  • Acceptation CC-BY-4.0 + DCO liée au compte / à la contribution.

4. Notes & attestations = couche séparée, hors source

Les notes (« testée et fonctionne sur le contexte X », « complète », signalement) sont stockées hors de la fiche (DB), indexées par fiche_id + version. Elles ne sont jamais fusionnées dans le YAML — cela préserverait l'invariant 1 « source unique / zéro-drift ». Les attestations pilotent la promotion du trust_tier (community → reviewed → verified, ADR-0002 §3).

5. RBAC & ownership fournisseur

Rôles : reader (anonyme) · contributor · reviewer/maintainer · provider (fournisseur/owner) · admin.

  • Une fiche peut être possédée par un fournisseur. Toute modification d'une fiche possédée exige l'approbation du fournisseur (équivalent d'une page protégée).
  • Mise en œuvre : CODEOWNERS + branch protection côté Git, mapping de rôles côté app.
  • Le rôle provider est une gouvernance d'ownership, pas une marque dans la fiche : le contenu reste vendor-agnostic (invariant 3). « Fiche distributeur » = fiche dont un fournisseur assume la responsabilité éditoriale, pas une fiche estampillée d'une marque.

6. Anti-empoisonnement comme préoccupation de première classe

L'ouverture en écriture + l'ingestion RAG (NeuralWall) créent un risque d'empoisonnement déjà identifié (ADR-0002). Modération, rate-limit, anti-spam, détection de fiches malveillantes (le lint en premier rempart) et pondération par trust_tier sont requis dès l'activation de l'écriture (Phase 6, transverse).

Alternatives écartées

  • Tout en base (full-DB, façon MediaWiki) — perd l'historique/diff Git natif, l'attribution CC-BY/DCO au niveau commit, et l'exportabilité libre par tous. Or l'export libre est une exigence (lecture tous formats par tout le monde).
  • Tout en Git, sans app — barrière trop haute pour des contributeurs non-développeurs (exigence « façon Wikipédia ») et pas de support naturel pour les notes/rôles/comptes.
  • Auth maison — réinvente un sous-système sensible ; OIDC délègue l'identité à un fournisseur éprouvé.
  • Notes dans la fiche YAML — casse « source unique / zéro-drift » (ADR-0001) ; les notes sont volatiles et multi-auteurs, la fiche est un artefact versionné.

Conséquences

  • (+) Lecture universelle alignée sur la mission et la licence ; contribution accessible ; validation communautaire traçable ; fiches fournisseurs protégées.
  • (+) Git reste la source exportable ; l'app n'est qu'une couche d'orchestration.
  • (−) Deux systèmes à maintenir (Git + app/DB) et à garder cohérents (la PR reste la vérité du contenu ; la DB ne stocke jamais de contenu de fiche canonique).
  • (−) L'ouverture impose la modération/anti-abus (Phase 6) avant que NeuralWall n'ingère à l'échelle.
  • (−) Le mapping ownership fournisseur ↔ CODEOWNERS doit rester synchronisé avec les rôles applicatifs (source de complexité à encadrer).