Aurora SIGER — Fase 4: SIGIC, a Colônia como Rede

A colônia que operou na Fase 3 agora é mapeada como grafo — 13 módulos, 20 conexões tipadas, e algoritmos de rede (BFS, DFS, Dijkstra, Tarjan, Brandes) implementados à mão revelam que o único ponto de falha estrutural é um módulo de baixa prioridade. Projeto acadêmico FIAP 2026.

PythonPytestTeoria dos grafosAlgoritmos de grafosCálculo diferencial

← Voltar para Aurora SIGER

O cenário

A Fase 3 perguntava algo com eixo no tempo: vamos ficar sem energia daqui a quantas horas? A simulação corria hora a hora, sol após sol, e respondia com tendência — o slope da bateria, a antecipação do déficit. A colônia existia como série histórica.

A Fase 4 suspende o relógio e faz uma pergunta diferente: se um módulo falhar agora, o que deixa de ser alcançável? Não é uma pergunta sobre quanto — é sobre quem depende de quem. A mesma colônia, os mesmos 13 módulos; mas o modo de olhar muda de uma sequência temporal para uma rede de dependências simultâneas. É o quarto ato do arco do Aurora SIGER — decolagem → pouso → operação → topologia — e a contribuição conceitual da fase é nomear que a colônia existe em duas dimensões ortogonais: a que opera no tempo e a que se estrutura no espaço.

O sistema que materializa isso é o SIGIC — Sistema Inteligente de Gerenciamento da Infraestrutura da Colônia: uma TUI que expõe a colônia como grafo ponderado e a interroga com algoritmos clássicos de rede.

Como funciona

A colônia como grafo, sobre a mesma fonte de verdade

A infraestrutura é modelada como um grafo não-dirigido e ponderado de 13 nós e 20 arestas. Os nós não são uma lista nova: o SIGIC reutiliza aurora_siger.operations.MODULES — exatamente os 13 módulos da Fase 3 — como fonte única de verdade para identidade, tipo e consumo. Criar uma lista paralela introduziria divergência silenciosa (duas colônias descritas como uma só) e quebraria a continuidade narrativa. A colônia que pousou, operou e agora se mapeia é a mesma colônia porque o código garante — a Fase 4 só acrescenta a camada espacial (posições, arestas, pesos).

Até a prioridade é derivada, não redigitada: a árvore de criticidade da Fase 3 vira número — Vital → 10, Sustento → 7, Expansão → 4. A mesma hierarquia que guiava o load shedding na Fase 3 passa a guiar o roteamento prioritário na Fase 4.

As arestas têm peso w ∈ {1, 2, 3} (custo de conexão: distância, atenuação de sinal, custo de transmissão) e são tipadas em três categorias operacionais — 11 de energia, 6 de dados, 3 de suporte vital (ar, água, calor). A chave canônica min(a,b)-max(a,b) num dicionário garante que (a,b) e (b,a) acessem o mesmo peso sem duplicar entradas — um detalhe pequeno que faz o "não-dirigido" valer no nível da estrutura de dados, não só no diagrama.

Mapa estilizado da colônia Aurora Siger sobre o terreno marciano — 13 módulos como domos coloridos por tier de criticidade e dimensionados pela centralidade, 20 conexões como dutos coloridos por tipo (energia, dados, suporte vital) com o peso rotulado; o Armazenamento e Logística aparece destacado como ponto de articulação e o Gerador Eólico isolado na periferia, ligado à rede por um único duto
Mapa estilizado da colônia Aurora Siger sobre o terreno marciano — 13 módulos como domos coloridos por tier de criticidade e dimensionados pela centralidade, 20 conexões como dutos coloridos por tipo (energia, dados, suporte vital) com o peso rotulado; o Armazenamento e Logística aparece destacado como ponto de articulação e o Gerador Eólico isolado na periferia, ligado à rede por um único duto

Os algoritmos de rede, implementados à mão

Sobre essa estrutura, cinco algoritmos clássicos — todos escritos do zero, sem networkx:

  • BFS percorre a rede por níveis a partir de uma origem (distância em saltos, não em peso): a partir do Controle e Comando, o Suporte Médico está a dois saltos, o Gerador Eólico a três. É a triagem rápida de alcançabilidade.
  • DFS mergulha num ramo antes de abrir outros — usa pilha explícita (sem recursão, sem risco de estouro) e enumera componentes conexos. Resultado: os 13 módulos formam um único componente — a rede é conexa.
  • Dijkstra acha o caminho mínimo ponderado com heap. A variante interessante aceita um limiar min_priority que descarta da rota vizinhos abaixo da prioridade — roteia energia só por onde importa, ignorando módulos de Expansão em falha. É a herança numérica da árvore de criticidade em ação.
  • Tarjan identifica os pontos de articulação (vértices de corte) em uma passada de DFS — é o algoritmo que entrega o achado central da fase.
  • Brandes calcula a centralidade de intermediação em tempo polinomial O(V·E), medindo quais nós são pontos de passagem da rede.

Todos são funções puras: dado o mesmo grafo, o mesmo resultado, sem aleatoriedade oculta. Os algoritmos nunca imprimem — devolvem dados; a apresentação fica exclusivamente na TUI. Essa separação é o que torna a auditoria e o teste possíveis.

O paradoxo do ponto de articulação

Aqui está o resultado mais revelador da fase, e o que justifica todo o resto. Tarjan não tem opinião sobre criticidade operacional: ele percorre a rede, calcula os valores de discovery e low de cada nó, e marca como ponto de corte qualquer vértice cuja remoção parte o grafo. O veredito:

Único ponto de articulação da rede: módulo 9 — Armazenamento e Logística, classificado como tier Expansão (prioridade 4).

O módulo de menor prioridade operacional é o único ponto de falha estrutural. Remover o Armazenamento e Logística isolaria o Gerador Eólico (#13) do restante da rede — porque o Eólico, como folha de grau 1, depende exclusivamente dele para chegar à colônia. E o Eólico não é desprezível: são 30 kW, 14,3 % dos 210 kW de geração instalada. Perder o módulo 9 não só cria dois componentes desconexos — corta um sétimo da geração, justamente antes do horizonte de aperto energético.

A intuição da Fase 3 erraria aqui. Lá, "Expansão" significava desligável primeiro sem matar a tripulação. A análise topológica mostra que o mesmo módulo é crítico num sentido que a operação nunca capturou: sua remoção fragmenta a rede. Criticidade operacional e criticidade topológica são dimensões ortogonais — e um sistema de gestão que opera só com a primeira está administrando um risco que não enxerga. A recomendação cai sozinha: adicionar uma aresta ligando o Gerador Eólico diretamente à rede principal dissolve o ponto de corte (e a Fase 4, refeita sobre o novo grafo, confirmaria).

Centralidade: relevância estrutural ≠ relevância operacional

Se Tarjan responde quem, sozinho, parte a rede, Brandes responde por onde a rede passa. A centralidade de intermediação mede a fração dos caminhos mais curtos entre todos os pares de módulos que cruzam um dado nó:

MóduloCentralidadeLeitura
5 — Reator Nuclear0,2879Hub energético — a maior parte dos caminhos passa por ele
1 — Controle e Comando0,2083Hub de dados e telemetria
9 — Armazenamento e Logística0,1932Alta passagem e ponto de corte
3 — Habitat0,1780Convergência dos fluxos vitais
13 — Gerador Eólico0,0000Folha (grau 1): nenhum caminho passa por ele

O Reator Nuclear lidera — confirma estruturalmente o que a Fase 3 só sabia por consumo e criticidade. O Gerador Eólico tem centralidade zero: como terminal, nenhum caminho entre dois módulos distintos o atravessa. E é aí que as duas análises se encontram: o Eólico é topologicamente irrelevante como passagem (Brandes = 0) e ao mesmo tempo vulnerável como destino (preso atrás do único ponto de corte). Relevância de fluxo e fragilidade de conexão são coisas distintas — a rede precisa das duas leituras.

O tempo volta: modelagem do consumo

Suspender o relógio foi um recurso, não um esquecimento. A fase reintroduz o tempo por uma porta diferente — a projeção de longo prazo. O consumo da colônia é modelado pela exponencial

C(t) = C₀ · e^(r·t) — C₀ = 80,5 kW, r = 0,12 ano⁻¹

ancorada nos 80,5 kW que os 13 módulos somam no modo adequado (38,3 % dos 210 kW instalados em 2026). O modelo exponencial não é decorativo: numa colônia em expansão, cada módulo novo eleva a base sobre a qual o crescimento seguinte incide — crescimento multiplicativo, composto. A primeira derivada C'(t) = r·C(t) mostra a taxa proporcional ao próprio consumo; a segunda, C''(t) = r²·C(t) > 0 para todo t, prova que a curva é sempre convexa — o crescimento nunca desacelera sozinho. A implementação confere isso numericamente por diferença central (erro O(h²)), em vez de assumir a fórmula fechada.

O número que importa para a governança é o horizonte crítico — o instante em que o consumo projetado atinge 90 % da geração:

t* = ln(189 ÷ 80,5) / 0,12 ≈ 7,1 anos

Em 2033, mantida a taxa de 12 % ao ano, a demanda bate 189 kW. Não é abstração: é o prazo antes do qual a Aurora Siger precisa ampliar a geração (duplicar os painéis solares é a expansão de menor impacto — o módulo 4 consome 1 kW e suporta até 100) ou reduzir o crescimento por eficiência. Trocar o perfil de 12 % por 8 % empurra o horizonte de 7 para mais de 20 anos. A topologia diz onde a rede é frágil; a modelagem diz quando a pressão chega.

Por que importa

Seria desonesto encerrar sem nomear o que a topologia não entrega — e os limites são simétricos aos da simulação temporal da Fase 3.

O grafo é estático: fotografa a rede num instante, sem capturar variação de fluxo. Um peso de aresta 2 num sol calmo pode render melhor que um peso 1 durante uma tempestade — o grafo não sabe. A perda por distância P_loss = 1 − e^{−d(1−η)} usa a distância física como proxy do custo de transmissão, mas ignora clima e degradação. E o ponto de articulação é um resultado da topologia atual: mude a rede, muda o veredito. O SIGIC não é uma verdade permanente sobre a colônia — é o espelho da rede no estado em que ela se encontra.

A topologia revela a estrutura; não dita a decisão. Administrar só a dimensão temporal é reagir; administrar só a topológica é planejar no vácuo.

Por isso a Fase 4 não substitui a Fase 3 — compõe com ela. Uma trata a colônia como sistema dinâmico (consome, gera, distribui ao longo do tempo); a outra como sistema estrutural (cuja rede de dependências decide o que sobrevive a uma falha pontual). É o mesmo eco da reflexão ética que abriu o arco na Fase 1: o sistema amplia o operador, não o aposenta. Ao nomear o paradoxo do módulo 9, o SIGIC não decide pela colônia — entrega a decisão, com a fragilidade tornada visível, a quem governa. A síntese narrativa completa está no ensaio Da operação à topologia.

Qualidade e rigor

A Fase 4 leva o pacote aurora_siger à versão 0.4.0, mantendo o monolito incremental: a rede vive em aurora_siger.colony (graph, roster, topology, search, paths, analysis, modeling, cli) e o entrypoint sigic é um thin wrapper sobre ela — nunca lógica inline. Sem dependências externas: o grafo, as buscas e a modelagem são implementações puras de stdlib.

MétricaValor
Nós (módulos da colônia)13
Arestas (energia / dados / vida)20 (11 / 6 / 3)
Densidade do grafo≈ 0,26
Único ponto de articulação (Tarjan)módulo 9 — Armazenamento e Logística
Maior centralidade de intermediação (Brandes)Reator Nuclear — 0,2879
Coeficiente de agrupamento médio0,189
Geração instalada · consumo inicial210 kW · 80,5 kW (38,3 %)
Horizonte crítico (90 % da geração)≈ 7,1 anos (2033)
Algoritmos de rede implementados à mão5 (BFS, DFS, Dijkstra, Tarjan, Brandes)
Testes automatizados (acumulado)314

Os testes cobrem a corretude dos algoritmos sobre grafos sintéticos de resposta conhecida (incluindo uma rede-ponte que isola o caso do ponto de articulação), a coerência da derivação de prioridade a partir da criticidade da Fase 3, o determinismo das análises (mesma entrada, mesma saída) e a separação entre cálculo e apresentação — as funções de análise são testáveis sem instanciar a TUI. A substituição da centralidade por enumeração exaustiva de caminhos (exponencial) pelo algoritmo de Brandes (O(V·E)) é, ela própria, uma lição de projeto: a resposta certa pelo método errado não escala.


Projeto desenvolvido coletivamente pela equipe de Ciência da Computação (online) da FIAP — 2026, com a consolidação ao monorepo curada por Iúri Leão de Almeida. Explore o código-fonte no repositório GitHub, leia o relatório técnico ou rode a TUI localmente com pip install -e . && sigic.