GBR: ADR-007 Desmembramento do Monólito em Core Libraries e CLI Proprietária ('falconctl') | Wiki
Documentação de engenharia e especificações técnicas da Gleam-BR.
GBR: ADR-007 Desmembramento do Monólito em Core Libraries e CLI Proprietária ("falconctl")
- *Status:* Aceito
- *Data:* 2026-05-01
*Contexto:*
Durante a prototipagem do agente remoto de telemetria, o projeto apps/gbr_monitor_agent aglutinava lógica do domínio e funções de entrada do Sistema Operacional (main, argumentos CLI via argv). Isso impedia a construção de binários distribuíveis independentes sem vazar abstrações internas, criando acoplamentos indesejados quando as lógicas comerciais da contratante (Horus) tivessem que conviver com a infraestrutura Open-Source (FVideen/Gleam-BR).
*Decisão:*
-
*Isolamento de Bibliotecas Base (Core):*
- Extração do motor do Agente para a biblioteca agnóstica
shared/gbr_agent_core(posteriormente renomeada parashared/gbr_monitor_agentpara maior claridade semântica no ecossistema). - O tráfego P2P/Yamux com a lógica de TCP Relay foi extraída do aplicativo legado para a biblioteca purashared/gbr_tunnel. -
**Empacotamento do Cliente Proprietário (
falconctl):** A criação de um projeto exclusivoclients/horus_falcon/falcon_agentfocado inteiramente na interface de usuário da CLI, utilizando a bibliotecaglintpara roteamento de subcomandos (start,tunnel open). -
*Mecanismo de Liberação Cruzada (Burrito):* Preparou-se o projeto cliente para a futura utilização do compilador
burrito, que usa Zig/Elixir para compilar o código funcional da BEAM juntamente ao próprio runtime em um único executável estático multiplataforma de ~30MB, sem dependências dinâmicas no cliente alvo.
*Consequências:*
-
*Positivas:* Manutenção garantida dos limites da arquitetura em camadas (Clean Architecture); protege a propriedade intelectual do cliente final em diretórios próprios (
clients/) sem contaminar os pacotes abertos do monorepo (shared/); facilita a adoção "Zero-Config" por administradores de sistema nos clientes finais. - *Negativas/Riscos:* O ecossistema exige familiarização constante dos engenheiros com as fronteiras de cada pacote do workspace; o compilador Burrito insere dependências pesadas na cadeia de CI/CD (Zig/Elixir) para cross-compilation.