Arquitetura - BrunodosSantosVaz/big-bang GitHub Wiki

Arquitetura e dados

Componentes

flowchart LR
    Pessoa[Pessoa e IA autorizada] --> CLI[CLI bb]
    TOML[bigbang.toml do projeto] --> CLI
    CLI --> Regras[Regras puras Python]
    CLI --> Gerador[Gerador por composição]
    Gerador --> Instrucoes[Skills, agentes e hooks]
    Gerador --> Actions[GitHub Actions por perfil e alvo]
    Actions --> Gates[Testes, revisão, segurança e documentação]
    Gates --> Artefato[Binário ou imagem imutável]
    Artefato --> Destino[Destino de entrega instalado]
    CLI --> GitHub[Issues, PRs, Projects e Discussions]
    CLI --> Wiki[Wiki Git por SHA para públicos]

A camada .bigbang é versionada pelo framework; as saídas geradas recebem aviso e são comparadas às fontes por bb verificar. A camada do projeto contém configuração, código, contratos e instruções próprias; o atualizador a preserva. Templates não contêm lógica condicional: composição de camadas e campos computados seleciona o comportamento.

Persistência e concorrência

Sem banco próprio: configuração TOML, fontes Git, metadados de sessões e registros GitHub. Posse é otimista, confirmada por sessão. Wiki tem histórico separado: manifesto registra base, proposta e SHA esperado, e publicação usa comparação do HEAD seguido de push fast-forward normal. Uma nova revisão inicia pela publicação anterior confirmada, renovando a base; uma proposta pendente mantém a base original. Uma mudança concorrente exige nova proposta revisada; não se força o Git remoto.

Decisões e recuperação

ADRs registram alternativas, justificativas e consequências. Atualização oficial confere pacote e atestação. Rollback de sistema promove digest/bytes registrados, sem inventar migração inversa; recuperação de dados depende do backup definido pelo próprio projeto.