Funcionalidade stack_guard - BrunodosSantosVaz/big-bang GitHub Wiki
Dependências aprovadas
Funcionalidade BB-F-022 · requisito RF-BB-022 · versão documentada 2.0.1 · código f9832d9bff9df45ee56689171fd1f537a0e5e97d.
Finalidade
Impedir dependências diretas de execução que não estejam na tabela aprovada da stack.
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
Resolver STACK.md pela Wiki em público, ler manifestos dos ecossistemas e catálogos Gradle, normalizar pacotes e comparar a lista aprovada.
Validações
Dependências de desenvolvimento são livres; ecossistemas não suportados geram erro explícito; aprovação permanece decisão com ADR.
Na origem do framework, a busca de dependências inclui o código e os manifestos dentro de .bigbang/, além da raiz do repositório. Os exemplos de desenvolvimento em .bigbang/tests/ são fixtures de teste e não declaram pacotes de execução. A mesma abrangência vale quando uma tabela STACK.md estiver declarada. Sistemas conservam a exclusão do framework herdado e todos os demais comportamentos anteriores.
Alternativas e erros
Pacote novo, tabela ausente ou manifesto ilegível bloqueia o PR sem instalar automaticamente uma tecnologia.
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: Impedir dependências diretas de execução que não estejam na tabela aprovada da stack. 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.
stack_guard.py
| Símbolo | Linha |
|---|---|
normalize |
26 |
allowed |
33 |
_package_json |
52 |
_pyproject |
56 |
_requirements |
65 |
_go_mod |
77 |
_cargo |
93 |
_composer |
101 |
_csproj |
106 |
_pom |
110 |
_alias |
128 |
gradle_catalog |
132 |
_gradle |
149 |
_find_catalog |
172 |
dependency_files |
188 |
direct_runtime_dependencies |
204 |
problems |
238 |
Cenários e rastreabilidade
.bigbang/tests/test_rastreio_guarda.py:test_tudo_rastreado.bigbang/tests/test_rastreio_guarda.py:test_recusa_cada_falha.bigbang/tests/test_rastreio_guarda.py:test_projeto_sem_regras_nem_testes.bigbang/tests/test_rastreio_guarda.py:test_citacao_nao_confunde_palavras.bigbang/tests/test_rastreio_guarda.py:test_dependencias_aprovadas_em_cada_ecossistema.bigbang/tests/test_rastreio_guarda.py:test_recusa_dependencia_nova.bigbang/tests/test_rastreio_guarda.py:test_ecossistema_nao_suportado_falha_explicitamente.bigbang/tests/test_rastreio_guarda.py:test_antes_da_stack.bigbang/tests/test_rastreio_guarda.py:test_nomes_python_normalizados.bigbang/tests/test_rastreio_guarda.py:test_catalogo_bundle_e_bom_aprovados.bigbang/tests/test_rastreio_guarda.py:test_dependencia_do_catalogo_fora_da_tabela.bigbang/tests/test_rastreio_guarda.py:test_linha_que_a_guarda_nao_entende_falha_explicitamente.bigbang/tests/test_rastreio_guarda.py:test_catalogo_sem_arquivo_falha_explicitamente.bigbang/tests/test_rastreio_guarda.py:test_groovy_com_aspas_simples.bigbang/tests/test_framework_stack.py:test_public_framework_without_runtime_packages_passes_the_content_gate.bigbang/tests/test_framework_stack.py:test_framework_runtime_package_without_an_approved_table_is_refused.bigbang/tests/test_framework_stack.py:test_framework_unreadable_dependency_ecosystem_is_still_refused.bigbang/tests/test_framework_stack.py:test_pr_content_cannot_select_the_framework_policy_for_a_system_base.bigbang/tests/test_framework_stack.py:test_a_declared_stack_page_is_required_even_for_the_framework.bigbang/tests/test_framework_stack.py:test_a_declared_stack_keeps_the_normal_approved_package_table.bigbang/tests/test_framework_stack.py:test_standalone_framework_stack_guard_uses_the_same_checks.bigbang/tests/test_framework_stack.py:test_framework_runtime_manifests_inside_bigbang_are_refused_by_both_gates.bigbang/tests/test_framework_stack.py:test_framework_unsupported_ecosystem_inside_bigbang_is_refused.bigbang/tests/test_framework_stack.py:test_framework_test_fixtures_are_not_runtime_dependency_declarations.bigbang/tests/test_framework_stack.py:test_a_declared_stack_checks_approved_and_unapproved_framework_packages.bigbang/tests/test_framework_stack.py:test_normal_system_stack_guard_keeps_ignoring_the_inherited_framework.bigbang/tests/test_framework_stack.py:test_packaged_framework_directories_are_not_skipped_as_system_build_outputs
Requisitos · Matriz de rastreabilidade · Referência CLI