Funcionalidade framework pipeline - BrunodosSantosVaz/big-bang GitHub Wiki
Esteira própria do framework
Funcionalidade BB-F-056 · requisito RF-BB-056 · versão documentada 3.0.0 · código 433c238ccc2de0c5cb9196965e98ec228a7f9e64.
Finalidade
Gerenciar o próprio framework pelo fluxo agrupador da v3, sem fundar o template nem instalar a esteira dos sistemas antes da F5.
Atores
O dono dispara os botões de release; as IAs autorizadas (claude-1, claude-2, codex-1 e copilot-1) implementam tarefas; o controlador acompanha o quadro; o GitHub Actions verifica e publica candidatas.
Pré-condições
O repositório deve ser BrunodosSantosVaz/big-bang. A configuração exclusiva .bigbang-framework.toml usa schema em inglês, perfil compiled, sistema universal, fluxo grouping e modo flash. O quadro único e os controles GitHub exigem bootstrap explícito do dono; o número zero indica configuração pendente.
Fluxo principal
bb generate --framework compõe os workflows v3 com prefixo bb-framework- e guarda de repositório em cada job. As skills e instruções iniciais continuam disponíveis no template. Antes da primeira escrita, o preparo exige manifesto documental válido, inventário completo de fontes rastreadas e não rastreadas e hashes atuais; manifesto ausente/inválido ou fonte sem cobertura recusa o corte. O botão Cut release configura github-actions[bot] no branch de release antes de write-version e do changelog. O corte grava a versão e bb framework prepare atualiza VERSION, o modelo, snapshots de clientes, workflows e CHECKSUMS. A candidata publica pacote reprodutível, arquivo .sha256, SBOM e atestação. A publicação passa pelo portão do fluxo agrupador e promove os mesmos bytes.
Validações
Actions permanecem fixadas por SHA, runners por versão e permissões são declaradas. Gate agrega os testes do framework, Docker real, shellcheck, gitleaks e regras de PR; a documentação e comunidade remota são verificadas. O pacote é reconstruído e comparado na candidata. A promoção confere SHA-256 antes de criar a release.
O framework não passa pela Fundação de um sistema. Quando seu manifesto público não declara STACK.md, a guarda lista todas as dependências diretas de execução: nenhuma dependência é aceita sem tabela aprovada, e ecossistema não suportado continua bloqueante. Se STACK.md está declarado, sua página e tabela continuam obrigatórias. A política vem da configuração confiável da base; o conteúdo do PR não a escolhe.
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
Templates sem identidade Git permanecem não fundados. O commit de uma proposta Wiki usa a identidade Git existente; se faltar identidade de autor ou committer no clone, o CLI aplica github-actions[bot] apenas ao comando de commit. Fora da origem, verify recusa a configuração exclusiva. Init remove essa configuração; F5 remove todos os workflows bb-framework-. Uma candidata adulterada não é promovida. Os workflows atuais continuam ao lado da esteira nova durante a transição.
Permissões
Nenhum comando local muda ambientes, secrets, rulesets ou configurações do quadro. Os botões usam o PROJECT_TOKEN já configurado; publicação exige decisão registrada e aprovação do ambiente production. A simulação continua padrão nos botões.
Resultados
A lista de agentes da configuração exclusiva e do fixture confiável inclui copilot-1, habilitando sua posse de tarefas pelo mesmo protocolo, em pasta própria e uma issue por vez. A regressão de carregamento confere esse agente.
O lançador continua template → init → generate --pipeline → verify. Assets publicados mantêm bigbang-vX.Y.Z.tar.gz e bigbang-vX.Y.Z.tar.gz.sha256, sem renomear para rc ou universal. Os clientes seguem baixando os mesmos nomes pelo bb update.
A implantação é dividida: primeiro o bootstrap coloca o suporte e os templates na develop confiável, sem a configuração exclusiva na raiz nem workflows novos ativos; comandos que exigem configuração leem o fixture interno revisado apenas na origem. Leituras opcionais e geração explícita mantêm a exigência do arquivo exclusivo. A proposta de ativação do PR #262 acrescenta a configuração exclusiva na raiz e os 13 workflows, sobre o suporte confiável dos PRs #265 e #266. O quadro e os controles reais do GitHub continuam pendentes dos itens operacionais da fila. O gate conserva os checks e executa regras usando código da base. Preparar a versão confere os hashes documentais atuais antes de alterar qualquer arquivo e atualiza somente os hashes derivados dessa mudança de versão; alterações funcionais sem documentação são recusadas.
O Big Bang passa a rodar no modo autonomous (ADR-0025, issue #303): .bigbang-framework.toml declara project.mode = "autonomous" e a raiz traz o contrato autonomy.toml. O agente aprova apenas risco low e medium nos portões backlog, refinement, prototype, tests, pr, qa e publish, com wip = 3, attempts = 3 e flags com o dono. O portão publish precisa estar no contrato, senão bb release publish recusa a publicação (sem o contrato o framework não publicaria nem com a aprovação do dono). Risco high e critical (contrato, segurança, .bigbang/, release), as feature flags e a aprovação do ambiente production no GitHub continuam com o dono; a publicação segue pelo botão bb-framework-publish, que o dono aprova. O contrato vence em 2027-01-11 e é lido da branch de destino, então um PR não amplia o contrato que o julga. bb autonomy check recusa o repositório sem ruleset que exija o check gate na main e na develop, sem ator com bypass e sem o ambiente production restrito à main; essas proteções são ação do dono.
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.
framework.py
| Símbolo | Linha |
|---|---|
repository |
17 |
load |
28 |
problems |
60 |
stack_problems |
76 |
prepare |
88 |
candidate |
141 |
promote |
148 |
register |
185 |
_prepare |
196 |
_candidate |
201 |
config.toml
bb-candidate.yml.tmpl
bb-gate.yml
testes-candidata.sh
bb-framework-board-report.yml
bb-framework-candidate.yml
bb-framework-cleanup.yml
bb-framework-codeql.yml
bb-framework-controller.yml
bb-framework-create-branches.yml
bb-framework-cut-release.yml
bb-framework-gate.yml
bb-framework-merge-pr.yml
bb-framework-publish-maintenance.yml
bb-framework-publish.yml
bb-framework-qa-reject.yml
bb-framework-start-sprint.yml
.bigbang-framework.toml
Cenários e rastreabilidade
.bigbang/tests/test_framework_pipeline.py:test_framework_config_is_v3_grouping_flash_and_universal.bigbang/tests/test_framework_pipeline.py:test_trusted_base_can_read_bootstrap_config_before_workflow_activation.bigbang/tests/test_framework_pipeline.py:test_generate_framework_is_idempotent_guarded_and_preserves_legacy.bigbang/tests/test_framework_pipeline.py:test_foreign_repository_refuses_the_framework_configuration.bigbang/tests/test_framework_pipeline.py:test_init_removes_framework_file_and_f5_removes_its_workflows.bigbang/tests/test_framework_pipeline.py:test_prepare_version_rewrites_version_checksums_and_expected.bigbang/tests/test_framework_pipeline.py:test_prepare_refreshes_documented_hashes_for_the_version_change.bigbang/tests/test_framework_pipeline.py:test_prepare_refuses_to_relabel_unreviewed_source_changes.bigbang/tests/test_framework_pipeline.py:test_prepare_requires_the_documentation_manifest_before_any_write.bigbang/tests/test_framework_pipeline.py:test_prepare_refuses_new_sources_without_documentary_coverage.bigbang/tests/test_framework_pipeline.py:test_prepare_rejects_an_invalid_documentation_manifest_before_any_write.bigbang/tests/test_framework_pipeline.py:test_prepare_refuses_untracked_sources_in_all_declared_roots.bigbang/tests/test_framework_pipeline.py:test_candidate_and_promotion_keep_updater_names.bigbang/tests/test_framework_pipeline.py:test_framework_community_keeps_auditing_the_existing_boards.bigbang/tests/test_framework_pipeline.py:test_documentation_cli_keeps_the_framework_board_audit.bigbang/tests/test_framework_pipeline.py:test_callbacks_and_candidate_ci_use_the_framework_namespace.bigbang/tests/test_framework_pipeline.py:test_cli_framework_and_pipeline_are_exclusive.bigbang/tests/test_launcher.py:test_template_is_not_founded.bigbang/tests/test_launcher.py:test_template_ships_only_guarded_framework_workflows.bigbang/tests/test_launcher.py:test_guard_check_rejects_unguarded_jobs.bigbang/tests/test_launcher.py:test_every_root_entry_has_a_foundation_decision.bigbang/tests/test_launcher.py:test_private_default_mode.bigbang/tests/test_launcher.py:test_private_flash_mode.bigbang/tests/test_launcher.py:test_autonomous_mode_needs_the_v3_workflow.bigbang/tests/test_launcher.py:test_previous_workflow_stays_available.bigbang/tests/test_launcher.py:test_public_gets_its_own_manifest.bigbang/tests/test_launcher.py:test_compiled_profile_after_f2.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.bigbang/tests/test_framework_pipeline.py:test_cut_release_sets_git_identity_before_documentation_commands
Requisitos · Matriz de rastreabilidade · Referência CLI
Fontes rastreadas
.bigbang/bb/framework.py.bigbang/pipeline/framework/config.toml.bigbang/pipeline/framework/files/.github/workflows/bb-candidate.yml.tmpl.bigbang/pipeline/framework/files/.github/workflows/bb-gate.yml.bigbang/pipeline/framework/scripts/testes-candidata.sh.github/workflows/bb-framework-board-report.yml.github/workflows/bb-framework-candidate.yml.github/workflows/bb-framework-cleanup.yml.github/workflows/bb-framework-codeql.yml.github/workflows/bb-framework-controller.yml.github/workflows/bb-framework-create-branches.yml.github/workflows/bb-framework-cut-release.yml.github/workflows/bb-framework-gate.yml.github/workflows/bb-framework-merge-pr.yml.github/workflows/bb-framework-publish-maintenance.yml.github/workflows/bb-framework-publish.yml.github/workflows/bb-framework-qa-reject.yml.github/workflows/bb-framework-start-sprint.yml.bigbang-framework.toml