Aller au contenu

Live-ingest — le producteur observe en cours de processus

Live-ingest (modules/liveingest) est l’un des 30 modules câblés — un producteur en cours de processus plutôt qu’un emplacement de capacité. Il ne fait pas partie de la carte numérotée historique I–XXIII. Il existe pour une seule raison architecturale : un SourceConnector hors processus ne peut diffuser que la somme d’observation scellée (arête / coût / finding) via son contrat gRPC, qui n’a ni RPC d’événement ni champ texte — il ne peut donc pas publier d’événement détectif. Seul un module en cours de processus détient la capacité de publication sur le bus, aussi live-ingest est la moitié « live-tap » qui émet ces événements pour les modules qui les consomment déjà.

Le connecteur de télémétrie Claude du control plane s’exécute hors processus en tant que plugin embarqué ; son flux Gather ne porte que le oneof Observation figé. Ce contrat de fil est délibérément figé (vérifié contre les changements cassants ; voir la politique de stabilité de l’API) et ne porte ni extrait ni surface texte. Live-ingest est le producteur en cours de processus qui fournit les deux événements que le connecteur ne peut structurellement pas : guardrail.observed pour le module IX et voice.telemetry.observed pour le module XVI. Il ne possède ni entités ni surface REST ; c’est un publieur sur le bus d’événements.

C’est le producteur manquant pour la chaîne de détecteurs de sécurité qui consomme déjà guardrail.observed. Il est fermé par défaut et à activer explicitement :

  • Par défaut (inspection désactivée). Le module ne s’abonne à rien, ne publie rien, et journalise sa moitié vide de façon visible — jamais un no-op silencieux.
  • Avec l’activation explicite de l’opérateur. Il s’abonne à edge.observed et, pour une arête dont la ressource est une référence d’outil résolue, dérive un extrait tool_args borné et déjà caviardé et le publie comme un ObservedText ne portant que des champs de référence non sensibles. L’extrait est l’identifiant de ressource que le connecteur a déjà caviardé à la source (un chemin assaini, un hôte+chemin sans requête ni identifiants, un nom de programme Bash dont les arguments sont supprimés, une référence d’outil MCP). Live-ingest le borne et la chaîne de sécurité le réduit de nouveau — triple défense. Le contenu de l’argument est rejeté au connecteur et n’atteint jamais le bus.

La chaîne de détecteurs émet alors automatiquement un finding par détection, sur du trafic réel.

Un producteur en cours de processus câblé pour les seules métadonnées de tour vocal/temps réel autorisées par liste — jamais l’audio et jamais le texte de transcription. La charge utile est une valeur typée qui, par construction, ne peut porter ni audio, ni transcription, ni PII, et le consommateur rejette tout échantillon avec une clé hors liste d’autorisation ou une référence de session/agent manquante. Sans backend vocal temps réel dans ce build, rien ne l’appelle : la moitié observe est honnêtement dormante et ne fabrique aucune télémétrie tant qu’un backend ne l’alimente pas.