Distribution — Protocole gRPC

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 :

Sept opérations canoniques

Sept opérations canoniques du service StratideFlux Catalog découverte protocolaire — hors pipeline complet Six opérations métier (pipeline complet) Inscribe mutation Resolve lecture par id Validate vérification typée Trace par notion Field capacités d'un endpoint List filtre + pagination Modèle homogène des réponses meta OperationMeta correlation_id server_lease / server_flow effective_trace_policy outcome oneof success → résultat métier ou error → Diagnostic validation ValidationReport core / contract / applicative + liste de Diagnostics toutes les réponses métier suivent ce modèle à trois parties
Figure 1 — Les sept opérations canoniques et le modèle homogène des réponses. Catalog est l'opération de découverte, hors pipeline complet. Les six autres opérations métier suivent le pipeline serveur et retournent une réponse structurée en trois parties : meta (OperationMeta), outcome (résultat ou diagnostic d'erreur), validation (ValidationReport).

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 :

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 :

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.