Funcionalidade config - BrunodosSantosVaz/big-bang GitHub Wiki
Configuração estrita
Funcionalidade BB-F-006 · requisito RF-BB-006 · versão documentada 3.0.1 · código 371a61ae5c993f6ba3fde76e77f91e64f0bf9c42.
Finalidade
Ler bigbang.toml sem aceitar erros de digitação que silenciem controles do projeto.
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
Interpretar TOML, validar seções, campos, tipos, modos e perfil; retornar valores escalares ou listas pelo config get. O arquivo pode estar todo em português (v2) ou todo em inglês (v3, ADR-0024); depois de carregado, responde nas duas línguas: projeto.modo e project.mode são visões do mesmo valor, e bb config get aceita qualquer uma. text_to_v3 reescreve um arquivo legado em inglês preservando comentários e layout, acrescentando [board] model = "three-boards", labels = "legacy" e [workflow] model = "epic-branch" para manter o comportamento.
Para o alvo personalizado do perfil deploy, aceita quatro caminhos de script (script_publicar, script_migrar,
script_saude, script_voltar) e a lista de nomes públicos variaveis_personalizado. Caminhos são conferidos pelo
catálogo do deploy; os nomes de ambiente seguem o formato maiúsculo. segredos_personalizado é recusada: scripts do
projeto não recebem segredos.
Validações
Chaves desconhecidas são recusadas; perfil e alvo devem formar um contrato compatível e instalado. Um arquivo que mistura os dois idiomas é recusado; num arquivo v3 os valores-identificadores precisam estar em inglês (compiled, private, normal) e as mensagens de erro usam os nomes em inglês. Chaves só da v3: board.model (single exige board.number), board.labels, workflow.model e project.mode = "autonomous", que a visão legada lê como flash. bb config get aceita a chave inteira num só idioma (projeto.modo ou project.mode, nunca projeto.mode), nunca expõe chaves internas e, quando a chave falta, cita a chave pedida. Um arquivo v3 no modelo legado epic-branch precisa de board.labels = "legacy", porque a esteira legada só entende as labels em português. Um valor legado num arquivo v3 gera um único erro, sem acusar a chave como ausente.
Alternativas e erros
Configuração inválida retorna erro específico; consulta a chave inexistente não substitui seu valor por um padrão silencioso.
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: Ler bigbang.toml sem aceitar erros de digitação que silenciem controles do projeto. O retorno e os arquivos afetados são conferidos pelos cenários rastreados abaixo; falha impede considerar a operação concluída.
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.
config.py
| Símbolo | Linha |
|---|---|
_string |
37 |
_integer |
51 |
_boolean |
63 |
_string_list |
67 |
_regex |
84 |
validate |
165 |
_validate_legacy |
178 |
_validate_section |
200 |
_cross_checks |
225 |
dialect |
263 |
_message_to_v3 |
278 |
_v3_to_legacy |
285 |
_legacy_to_v3 |
355 |
_with_optional |
370 |
views |
380 |
text_to_v3 |
413 |
parse |
447 |
load |
454 |
_consistent |
477 |
get |
493 |
_get |
524 |
format_value |
538 |
check |
38 |
bigbang.toml.exemplo
flags.toml
Cenários e rastreabilidade
.bigbang/tests/test_bb_config.py:test_exemplo_valido.bigbang/tests/test_bb_config.py:test_compilado_valido_sem_secao_deploy.bigbang/tests/test_bb_config.py:test_chaves_opcionais_do_deploy.bigbang/tests/test_bb_config.py:test_recusa_chave_e_secao_desconhecidas.bigbang/tests/test_bb_config.py:test_recusa_chave_obrigatoria_ausente.bigbang/tests/test_bb_config.py:test_secao_do_perfil_ativo_e_obrigatoria.bigbang/tests/test_bb_config.py:test_build_de_cada_sistema.bigbang/tests/test_bb_config.py:test_alvo_conforme_o_perfil.bigbang/tests/test_bb_config.py:test_esquema_de_alvos_e_extensivel_capacidades_sao_do_gerador.bigbang/tests/test_bb_config.py:test_publico_exige_licenca.bigbang/tests/test_bb_config.py:test_tipos.bigbang/tests/test_bb_config.py:test_versao_igual_ao_framework.bigbang/tests/test_bb_config.py:test_repositorio_do_dono.bigbang/tests/test_bb_config.py:test_valores.bigbang/tests/test_bb_config.py:test_codigos_de_saida.bigbang/tests/test_bb_config.py:test_config_invalida.bigbang/tests/test_bb_config.py:test_toml_quebrado.bigbang/tests/test_names_config.py:test_every_key_round_trips.bigbang/tests/test_names_config.py:test_values_round_trip.bigbang/tests/test_names_config.py:test_v3_only_keys_have_no_legacy_name.bigbang/tests/test_names_config.py:test_decision_labels_in_both_dialects.bigbang/tests/test_names_config.py:test_every_legacy_cli_command_has_one_v3_name.bigbang/tests/test_names_config.py:test_scenarios_translate_and_validate.bigbang/tests/test_names_config.py:test_both_files_load_into_the_same_views.bigbang/tests/test_names_config.py:test_v3_file_generates_exactly_the_expected_layer.bigbang/tests/test_names_config.py:test_get_answers_in_both_dialects.bigbang/tests/test_names_config.py:test_get_translates_plain_mappings.bigbang/tests/test_names_config.py:test_autonomous_mode_is_v3_only_and_reads_as_flash_in_the_legacy_view.bigbang/tests/test_names_config.py:test_mixed_file_is_refused.bigbang/tests/test_names_config.py:test_errors_use_v3_names.bigbang/tests/test_names_config.py:test_legacy_values_are_refused_in_v3_files.bigbang/tests/test_names_config.py:test_single_board_needs_its_number_and_fills_the_legacy_view.bigbang/tests/test_names_config.py:test_workflow_model_values.bigbang/tests/test_names_config.py:test_already_v3_text_is_not_translated_again.bigbang/tests/test_names_config.py:test_missing_legacy_key_reports_the_key_that_was_asked.bigbang/tests/test_names_config.py:test_mixed_language_keys_and_internal_keys_are_refused.bigbang/tests/test_names_config.py:test_consistent_keys_answer_in_both_languages.bigbang/tests/test_names_config.py:test_documentation_reads_a_v3_public_file.bigbang/tests/test_names_config.py:test_target_mode_reads_both_dialects.bigbang/tests/test_names_config.py:test_review_blockers_see_v3_labels.bigbang/tests/test_names_config.py:test_set_config_value_in_each_dialect.bigbang/tests/test_names_config.py:test_legacy_value_in_a_v3_file_is_reported_once.bigbang/tests/test_names_config.py:test_non_text_mode_on_the_target_is_a_clean_refusal.bigbang/tests/test_names_config.py:test_legacy_workflow_needs_legacy_labels.bigbang/tests/test_names_config.py:test_approval_label_follows_the_target_dialect.bigbang/tests/test_names_config.py:test_v3_errors_do_not_hide_structural_ones.bigbang/tests/test_names_config.py:test_config_get_in_both_languages_and_both_option_spellings.bigbang/tests/test_names_config.py:test_generate_and_verify_by_either_name.bigbang/tests/test_names_config.py:test_pipeline_subcommands_by_either_name.bigbang/tests/test_names_config.py:test_decision_labels_follow_the_project_label_dialect.bigbang/tests/test_deploy_custom.py:test_personalized_secret_variables_are_rejected
Requisitos · Matriz de rastreabilidade · Referência CLI
Fontes rastreadas
Exemplo da versão 2.0.1
O exemplo de bigbang.toml agora declara 2.0.1, igual ao VERSION do pacote. A validação de versão permanece ativa e rejeita divergência, como demonstrou a CI quando o exemplo ainda declarava 2.0.0. A correção atualiza o exemplo e regenera snapshots, preservando as asserções existentes.