ADR 0025 modos e autonomia - BrunodosSantosVaz/big-bang GitHub Wiki
- Situação: aceita
- Data: 2026-10-10
-
Dono: Bruno dos Santos Vaz (
BrunodosSantosVaz) - Decisão: #221 (E1); implementação: #232 (E12), tarefa #247; release: #220 (v3.0.0).
O dono pediu três modos de operação e nomeou o terceiro:
pode mudar o nome pra autonomo
No modo autônomo, a IA conduz o trabalho de ponta a ponta sem aprovações repetidas. Isso conflita com a regra de ferro que proíbe publicar em produção sem a ordem do dono na conversa, e uma label nunca pode equivaler a autorização irrestrita.
-
Continua valendo do ADR-0017:
- testes escritos antes do código;
- execução seletiva dos afetados após o código, com suíte completa em mudança estrutural e major/minor;
- revisão independente por IA;
- reuso da CI do mesmo SHA na candidata;
- revisão humana quando pedida ou crítica.
-
Muda na v3 (substitui o ADR-0017 nestes pontos):
- a IA trata reprovações comuns no Flash e chama o dono para as críticas;
- a suíte completa roda antes da candidata, e a promoção do mesmo artefato para produção reaproveita o recibo válido. Ela deixa de repetir a suíte completa em produção, como o ADR-0017 exigia. Integridade, configuração e saúde continuam sempre conferidas;
- o terceiro modo,
autonomous, passa a existir.
- O "processo leve" do framework, citado no ADR-0017, é substituído pela esteira própria (ADR-0022).
-
project.modeaceitanormal,flasheautonomous. O legadopadraoequivale anormal. -
normal: o dono decide nos portões, e a IA prepara e registra recibos.
-
flash: o ADR-0017 com as mudanças da seção anterior.
-
autonomous só funciona com um contrato versionado
autonomy.tomlem zona sensível, com revisão humana. O contrato define:- alvos;
- custos;
- limites de WIP;
- classes de risco permitidas;
- janela de publicação;
- quem liga feature flags.
O que fica fora do contrato é bloqueado; a IA nunca amplia a própria autorização. A regra de ferro de produção é alterada somente neste modo e somente dentro do contrato.
-
O bootstrap recusa o modo autônomo quando a conta ou o plano não permitem o controle exigido: ambiente protegido, identidade separada para iniciar e aprovar. Nunca há alternativa improvisada.
-
Em todos os modos:
- rastreabilidade, revisão independente, scanners e documentação continuam obrigatórios;
- o bot nunca se apresenta como humano;
- toda aprovação aponta para identidade, SHA e evidência reais.
- O modo fica em configuração protegida; um PR não troca o modo que o julga.
- Uma conta-bot ou organização é opcional e documentada para quem quiser a separação de identidade cobrada pelo GitHub.
- O contrato é lido do
autonomy.tomldo checkout que roda obb. Na CI, esse checkout é a branch de destino, então um PR não amplia o contrato que o julga. - Contrato ausente, inválido ou vencido bloqueia todos os portões no modo autônomo.
- Risco ou portão fora do contrato também bloqueia o agente; só a decisão registrada do dono libera o portão.
-
attemptsewipde um contrato válido substituem os limites padrão; owiplimita os épicos em andamento. - O próprio contrato nunca é delegado: todo PR que muda
autonomy.toml(e os demais arquivos do dono) recebereview:humanem qualquer modo. - A publicação no modo autônomo exige três condições:
- o alvo listado em
targets; - o portão
publishdelegado; - a hora dentro de
publish_window(UTC).
- o alvo listado em
-
bb autonomy checkebb board create(no modo autônomo) recusam o repositório sem os controles exigidos:- ruleset que exige o check
gatenamaine nadevelop; - ambiente
productionque só aceita amain; - repositório privado numa conta pessoal Free também é recusado, porque lá rulesets e ambientes protegidos não são aplicados.
- ruleset que exige o check
- Identidade: todo recibo de transição com portão grava
approvalcom o portão, o risco, o modo e quem aprovou (agent:<nome>ouowner:<login>). Um agente nunca assina como o dono. A conta-bot continua opcional; sem ela, a separação de identidade fica nos recibos.