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 :
- Lecture libre pour tout le monde (y compris concurrents), dans tous les formats.
- Écriture inspirée de Wikipédia (création + proposition de modifications), sous accès authentifié.
- Notes sur une fiche pour attester qu'elle fonctionne / qu'elle est complète.
- 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+lints'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
providerest 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 ↔
CODEOWNERSdoit rester synchronisé avec les rôles applicatifs (source de complexité à encadrer).