Spécification protocolaire
Le fichier stratide_flux.proto V0-final, gelé : 57 messages, 12 énumérations, 7 RPC
Le protocole StrateFluxDistr est défini dans un fichier stratide_flux.proto en version V0-final, gelé. Ce fichier porte la spécification canonique du dialogue entre clients et serveurs StrateFluxDistr.
Le gel du .proto V0-final est un invariant de gouvernance : aucune évolution ne peut le modifier sans ouvrir explicitement un cycle de durcissement V1.
Composition du fichier
Le fichier .proto V0-final compte 881 lignes et regroupe :
- 57 messages qui décrivent les structures de données échangées.
- 12 énumérations qui formalisent les états et les politiques.
- 1 service nommé
StratideFlux. - 7 RPC qui constituent les opérations canoniques.
Sept opérations canoniques
Le service StratideFlux expose sept opérations qui matérialisent le cycle d'usage du protocole.
Catalog est l'opération de découverte. Premier appel attendu d'un client qui se connecte. Retourne l'InstanceId du serveur, la version du protocole, les capacités d'endpoint publiées, et la liste des ContractDescriptor dérivés dynamiquement du store. Hors pipeline complet (pas d'enveloppe, pas d'idempotence).
Inscribe inscrit une nouvelle occurrence dans le store. C'est l'opération qui suit le pipeline complet : authentification, autorisation, lookup du Contract, validation des contraintes, idempotence, inscription effective. Retourne l'OccurrenceId composé côté serveur.
Resolve résout un OccurrenceId en l'enregistrement correspondant. Suit le pipeline complet pour authentification et autorisation, puis interroge le store. Vérifie optionnellement le kind attendu.
Validate vérifie qu'une référence typée est résoluble et conforme. Trois niveaux de validation : core (existence), contractuelle (kind correspondant au type attendu), applicative (Unknown pour V0 — le serveur générique ne connaît pas les invariants applicatifs).
Trace retourne toutes les occurrences inscrites pour une notion donnée, avec filtrage optionnel par instance et timestamp. Utile pour reconstruire l'historique d'une notion à travers le temps.
Field retourne le champ d'un endpoint : sa capacité publiée plus la liste des Contracts dans lesquels cet endpoint est source ou destination, calculée dynamiquement depuis le store.
List liste les occurrences filtrées avec pagination par cursor. Filtre par kind, projet, instance, état architectural, ou attributs d'extension.
Modèle homogène meta + outcome + validation
Toutes les réponses du protocole (sauf Catalog) suivent un modèle homogène à trois parties :
- meta —
OperationMetaqui porte lecorrelation_id, lesOccurrenceIdde la trace serveur (Lease et Flow si applicable), le statut d'idempotence, le timestamp serveur, la version du protocole, et l'effective_trace_policyappliquée. - outcome — un
oneofqui contient soit le résultat métier, soit unDiagnosticd'erreur structurée. - validation — un
ValidationReportqui porte les statuts core / contract / applicative et la liste des diagnostics produits.
Idempotence
Les opérations de mutation (Inscribe) sont idempotentes sur le triplet (source_endpoint, contract, idempotency_key). Une réémission identique retourne IdempotencyStatus::ReplayedSameResult avec le même OccurrenceId. Une réémission avec une clé identique mais un payload différent retourne IdempotencyStatus::Conflict et la requête est rejetée.
Politique de trace
L'envelope.trace_policy est une demande du client. La politique effectivement appliquée par le serveur est calculée comme le maximum entre :
- La politique demandée par le client.
- La politique minimale globale du serveur.
Fullsi le Contract est marqué sensible dans la configuration serveur.
L'invariant requested ≤ effective est garanti. Le serveur peut renforcer ; il ne peut jamais affaiblir.
Statut du fichier .proto
Le fichier stratide_flux.proto V0-final est gelé : aucune évolution ne peut le modifier sans ouvrir explicitement un cycle de durcissement V1. Le code source du serveur de référence et le fichier .proto ne sont pas diffusés publiquement à ce stade. La cartographie technique et la documentation de gouvernance en décrivent les invariants et l'organisation.