Funcionalidade decisions - BrunodosSantosVaz/big-bang GitHub Wiki
Decisões e revisão rastreáveis
Funcionalidade BB-F-007 · requisito RF-BB-007 · versão documentada 2.0.1 · código 94155836a981e9912a59f2c826afcff7baa4f073.
Finalidade
Registrar a decisão autorizada do dono e impedir aprovação automática de PR que exija revisão humana.
Atores
Pessoa responsável pelo projeto, IA com posse confirmada e automações explicitamente autorizadas.
Pré-condições
Repositório e raiz corretos, versão instalada e configuração compatível. Para operações de escrita, exige-se autorização vigente, branch adequada e acesso ao recurso envolvido; consultas não conferem permissão adicional.
Fluxo principal
Comentar a frase explícita do dono antes de modificar a label; verificar bloqueios de revisão; incluir pr-aprovado quando a modalidade permite. bb decision aceita a label nos dois idiomas e a grava no idioma das labels do projeto (board.labels): qa:approved vira homologado num projeto legado e o contrário num projeto migrado.
Validações
A conta GitHub compartilhada não comprova autor humano; a evidência da conversa precede a label. As regras de revisão enxergam as labels nos dois idiomas (por exemplo, review:human equivale a revisao-humana e a branch test/* equivale a teste/*); o modo da branch de destino é lido em qualquer idioma (autonomous delega a revisão rotineira como o Flash); a label de aprovação da IA segue o idioma das labels configurado na branch de destino.
Alternativas e erros
Frase vazia, label indevida ou revisão-humana sem decisão válida impedem a alteração.
Permissões
Leitura usa permissões mínimas do repositório. Operações locais respeitam a posse e worktree; escrita no GitHub exige acesso explícito. Esta funcionalidade não concede novas permissões a visitantes nem substitui decisões exigidas pelo fluxo.
Resultados
Resultado esperado: Registrar a decisão autorizada do dono e impedir aprovação automática de PR que exija revisão humana. O retorno e os arquivos afetados são conferidos pelos cenários rastreados abaixo; falha impede considerar a operação concluída. bb review approve informa a label efetivamente aplicada (pr-aprovado ou pr:approved); um modo não textual na branch de destino é recusado com mensagem, sem erro interno.
Referência da implementação
Os símbolos abaixo compõem o inventário real do módulo, incluindo auxiliares internos; não representam APIs públicas independentes.
decisions.py
| Símbolo | Linha |
|---|---|
_now |
21 |
_labels |
25 |
_comment |
29 |
_add_label |
34 |
_remove_label |
39 |
record_decision |
46 |
_both_spellings |
60 |
review_blockers |
66 |
_target_text |
100 |
_target_owner_rules |
115 |
_target_mode |
143 |
label_dialect_from_text |
149 |
mode_from_text |
160 |
approve_review |
179 |
Cenários e rastreabilidade
.bigbang/tests/test_decisao_revisao.py:test_comenta_a_frase_e_depois_poe_a_label.bigbang/tests/test_decisao_revisao.py:test_decisao_em_ingles_gravada_no_idioma_do_projeto.bigbang/tests/test_decisao_revisao.py:test_recusa_label_que_nao_e_decisao_e_frase_vazia.bigbang/tests/test_decisao_revisao.py:test_large_review_uses_paginated_files_without_diff_endpoint.bigbang/tests/test_decisao_revisao.py:test_renamed_sensitive_path_still_requires_owner.bigbang/tests/test_decisao_revisao.py:test_missing_acceptance_patch_fails_before_approval.bigbang/tests/test_decisao_revisao.py:test_aprova_pr_comum.bigbang/tests/test_decisao_revisao.py:test_recusa_quando_a_revisao_e_do_dono.bigbang/tests/test_decisao_revisao.py:test_dono_revisao_ia_prevalece.bigbang/tests/test_decisao_revisao.py:test_local_flash_cannot_change_target_review_policy.bigbang/tests/test_decisao_revisao.py:test_target_flash_is_used_even_when_local_config_is_standard.bigbang/tests/test_decisao_revisao.py:test_destination_config_is_fetched_from_github.bigbang/tests/test_decisao_revisao.py:test_v3_destination_and_english_labels.bigbang/tests/test_decisao_revisao.py:test_testes_com_revisao_humana.bigbang/tests/test_decisao_revisao.py:test_teste_primeiro_depois_a_correcao.bigbang/tests/test_decisao_revisao.py:test_recusa_correcao_junto_com_o_teste.bigbang/tests/test_decisao_revisao.py:test_recusa_teste_que_nao_falha.bigbang/tests/test_decisao_revisao.py:test_teste_em_layout_gradle_conta_como_teste.bigbang/tests/test_decisao_revisao.py:test_recusa_um_commit_so.bigbang/tests/test_names_config.py:test_review_blockers_see_v3_labels.bigbang/tests/test_names_config.py:test_target_mode_reads_both_dialects.bigbang/tests/test_names_config.py:test_approval_label_follows_the_target_dialect
Requisitos · Matriz de rastreabilidade · Referência CLI