Gleam.br Wiki

GBR: ADR-0012 Ingestão Hexagonal e Roteamento da 'Trindade de Dados' (Splitter) | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

GBR: ADR-0012 Ingestão Hexagonal e Roteamento da "Trindade de Dados" (Splitter)

  • *Status:* Aceito
  • *Data:* 2026-05-01

*Contexto:*

O gbr_monitor atuava como um canal de passagem único, mas a plataforma Horus Falcon 2.0 exige que a telemetria satisfaça três domínios fundamentais e conflitantes em latência e formato: plotagem de gráficos em tempo real, avaliação de regras de negócio (Alarmes) e cristalização de eventos para futuras auditorias de IA (Knowledge Graph). Roteá-los sequencialmente ou no mesmo processo geraria gargalos de I/O e acoplamento perigoso.

*Decisão:*

  1. *Modelagem de Tipos Algébricos (ADTs):* Definição estrita da "Trindade de Dados": TelemetryEvent (Bruto), BpeTransition (Matemático/Lógico) e SemanticFact (Triplo RDF: Sujeito-Predicado-Objeto).
  2. *Moedor de Carne (Hexagonal Splitter):* Implementação da função process_event no Ingestor que recebe um Record DataSinks. Os destinos (Bancos de Dados) são injetados como funções puras.
  3. **Isolamento Semântico (gbr_graph):** A extração do SemanticFact para o banco analítico (DuckDB via C++) foi isolada num Ator OTP independente (gbr_graph). O Gateway dispara o fato de forma assíncrona (process.send).

*Consequências:*

  • *Positivas:* Se a extensão C++ do DuckDB sofrer uma falha de segmentação (Segfault), a contenção OTP assegura que o Ator gbr_graph morre e reinicia isoladamente, sem afetar o fluxo de telemetria bruta para o QuestDB ou a conexão P2P dos agentes. Extrema velocidade de ingestão e testability via injeção de Mocks nos DataSinks.
  • *Negativas/Riscos:* A ramificação de dados aumenta a complexidade de rastreabilidade (Tracing) fim-a-fim, exigindo IDs de correlação fortes caso uma métrica seja processada de forma divergente entre o TSDB e o BPE.