Processo de Engenharia e Fluxo de Trabalho
O PAEBIRU (Protocolo Assíncrono de Ecossistemas Biológicos para Infraestruturas Recursivas Universais) opera como uma malha P2P soberana onde a integridade e a previsibilidade são fundamentais. O desenvolvimento segue regras estritas para garantir que o “cérebro descentralizado” permaneça resiliente.
1. Ciclo de Vida do Desenvolvimento (RSE)
Todo novo recurso ou correção segue o ciclo Research -> Strategy -> Execution.
Pesquisa (Research)
- Validação de Hipóteses: Antes de codificar, deve-se validar o impacto arquitetural.
- Mapeamento de Dependências: Identificar como a mudança afeta os Bounded Contexts (Kernel, Biologia, Economia).
- Referência Normativa: Toda pesquisa deve estar alinhada com as RFCs ratificadas (Standards Track 001-022).
Estratégia (Strategy)
- Design Doc: Para mudanças significativas, um documento de design deve ser submetido para discussão.
- Plano de Verificação: Definir como a mudança será provada correta (Testes Unitários, Integração, Fuzzing ou TLA+).
Execução (Execution)
- Implementação Cirúrgica: Foco na simplicidade e remoção de lógica redundante.
- GALS Compliance: Garantir que comunicações inter-nós sejam estritamente assíncronas.
2. Automação e Infraestrutura (A Linha de Montagem)
Conforme a RFC 050, a esteira de desenvolvimento é automatizada para garantir reprodutibilidade e qualidade:
- Provisionamento Determinístico: O ambiente de desenvolvimento é gerido via Nix (
infra/flake.nixeshell.nix), garantindo que todos os engenheiros operem em ambientes idênticos. - Orquestração via Makefile: O
Makefilena raiz é o ponto de entrada canônico para todas as operações (build, lint, test, release). O uso do proxyrtk(ex:rtk make test) é obrigatório para eficiência operacional. - Muralha de Qualidade: Gates de CI rígidos em
.github/workflows/validam cada submissão antes da integração na branch principal.
3. Regras de Submissão (Pull Requests)
A malha P2P soberana não aceita mudanças arbitrárias.
- Rastreabilidade: Toda alteração deve citar uma Especificação Normativa (RFC) correspondente no corpo do PR.
- Peer Review (Revisão P2P):
- O código deve ser revisado considerando seu impacto no Metabolismo da rede (Consumo de Memória, CPU e IO).
- Lógicas bloqueantes (blocking calls) em loops de Atores resultarão em rejeição automática da submissão.
- Paradigma GALS: Todo novo recurso que dependa de rede ou I/O deve utilizar passagem de mensagens assíncronas; o estado não pode ser mutado diretamente de fora do ator.
3. Prova de Verificação (PoV)
Uma contribuição é considerada incompleta sem a sua prova de correção.
Verificação Formal & Simulação
- TLA+: Alterações no Kernel ou protocolos de consenso exigem modelos TLA+ para verificar a ausência de deadlocks e violações de invariantes.
- Simulações de Hardware: Recursos embarcados devem passar por simulações em
apps/simulationspara validar o comportamento em restrições de tempo real.
Testes e Qualidade
- Fuzz Testing: Protocolos de rede e serialização (como C.A.P.I.B.A.) devem ser submetidos a testes de fuzzing.
- Metabolismo Check: Validação de que a mudança não introduz vazamentos de memória ou picos injustificados de CPU que possam desestabilizar nós menores (Edge/Microcontroladores).
4. Lançamentos Multi-linguagem (Release)
O PAEBIRU suporta 13 linguagens via paebiru-sdk. O fluxo de release é orquestrado para manter a paridade funcional e de segurança.
- Orquestração de Bindings: As alterações no Core (Rust) disparam automaticamente a atualização dos bindings (C, Python, Java, Dart, TS, etc.).
- Sincronização de Plasmídeos: Garante que os Contratos ZK e Plasmídeos funcionem unissonamente em todo o ecossistema, independentemente da linguagem hospedeira.
- Workflows Automatizados: Geração de pacotes nativos (NPM, PyPI, Maven, Crates.io) via GitHub Actions, seguindo versionamento semântico estrito.
5. Convenções de Naming e Estilo
- Nomes Informativos: Evitar abreviações obscuras. O nome deve refletir o propósito a longo prazo (ex:
network_mesh_resilience.rsem vez denet_fix.rs). - Documentação Inline: Todo Trait e Função Pública deve conter documentação em RustDoc explicando não apenas o quê, mas o porquê daquela abstração.