Funcionalidade modos autonomia - BrunodosSantosVaz/big-bang GitHub Wiki
Funcionalidade BB-F-054 · requisito RF-BB-054 · versão documentada 2.0.1 · código 94155836a981e9912a59f2c826afcff7baa4f073.
Fazer o modo do projeto (ADR-0025) valer de verdade nos portões da v3: no normal o dono decide; no Flash a IA aprova o trabalho comum e chama o dono para o crítico; no autonomous a IA conduz de ponta a ponta, mas só dentro do contrato autonomy.toml.
Dono (escreve e renova o contrato, decide o que fica fora dele), IAs com posse confirmada, o controlador e os botões da esteira v3.
project.mode = autonomous e um autonomy.toml versionado (version, targets, risk, gates, flags, wip, attempts, max_cost_usd, publish_window, expires) revisado pelo dono; repositório com ruleset exigindo o check gate na main e na develop e ambiente production restrito à main.
Todo comando bb da v3 carrega o autonomy.toml do checkout que o roda (na CI, a branch de destino); bb move calcula o portão e o risco e pergunta ao contrato se o agente pode aprovar; dentro do contrato o agente aprova e o recibo grava approval com portão, risco, modo e agent:; a publicação confere alvo, portão publish e janela; bb autonomy check confere contrato e controles antes de ligar o modo.
Contrato ausente, ilegível, inválido (inclusive com tipos errados) ou vencido bloqueia todos os portões, sempre com mensagem; risco ou portão fora do contrato bloqueia o agente; attempts e wip de um contrato válido substituem os limites padrão, e o wip limita os épicos em andamento (In Progress e QA) na entrada em In Progress, vinda de Selected ou de Rejected; publicação fora da janela ou para alvo fora de targets é recusada; um agente nunca assina como o dono.
Fora do contrato, só a decisão registrada do dono (bb decision) libera o portão, e o recibo grava owner:; repositório privado numa conta pessoal Free, branch sem o gate obrigatório ou production aberta a outras branches fazem bb autonomy check e bb board create recusarem o modo; também recusam um ruleset com bypass_actors (ou com a lista que o token não consegue ver), repositório privado de organização sem plano pago confirmado, uma política de ambiente do tipo tag e o repositório privado cujo plano não pôde ser confirmado com o token do dono.
Só o dono altera autonomy.toml e bigbang.toml (regra de ferro 9); bb review approve recusa o PR que muda autonomy.toml em qualquer modo, mesmo com owner:ai-review, e os demais arquivos do dono sem owner:ai-review no próprio PR (herdado da issue não vale), e bb merge exige a decisão registrada do dono (bb decision pr:approved) quando há review:human: todo PR que muda autonomy.toml, bigbang.toml, PRODUTO.md, STACK.md, DESIGN.md ou flags.toml recebe review:human em qualquer modo (owner:ai-review vale para os demais, nunca para autonomy.toml); flags.toml só é delegado quando o contrato válido diz flags = "agent"; a regra de ferro de produção muda somente no modo autonomous e somente dentro do contrato; um PR nunca amplia o contrato que o julga.
Autonomia auditável: cada aprovação aponta para quem aprovou, com que risco e em que modo, e nada sai do contrato sem o dono.
Os símbolos abaixo compõem o inventário real do módulo, incluindo auxiliares internos; não representam APIs públicas independentes.
| Símbolo | Linha |
|---|---|
attach |
14 |
contract_of |
31 |
problems |
35 |
usable |
47 |
publish_problems |
52 |
_requires_gate |
69 |
bootstrap_problems |
79 |
.bigbang/tests/test_autonomy_v3.py:test_loaded_only_in_autonomous_mode_and_validated.bigbang/tests/test_autonomy_v3.py:test_contract_limits_replace_the_defaults.bigbang/tests/test_autonomy_v3.py:test_publish_needs_the_window_and_the_target.bigbang/tests/test_autonomy_v3.py:test_inside_the_contract_the_agent_approves_and_the_receipt_says_so.bigbang/tests/test_autonomy_v3.py:test_without_a_valid_contract_everything_is_blocked.bigbang/tests/test_autonomy_v3.py:test_risk_outside_the_contract_is_blocked_not_delegated.bigbang/tests/test_autonomy_v3.py:test_outside_the_contract_only_the_owner_decision_unblocks.bigbang/tests/test_autonomy_v3.py:test_owner_decision_is_recorded_as_the_owner.bigbang/tests/test_autonomy_v3.py:test_publish_outside_the_window_is_refused_in_autonomous_mode.bigbang/tests/test_autonomy_v3.py:test_controls_in_place_pass.bigbang/tests/test_autonomy_v3.py:test_missing_gate_rule_or_open_environment_refuse.bigbang/tests/test_autonomy_v3.py:test_private_repository_on_a_free_personal_plan_refuses.bigbang/tests/test_autonomy_v3.py:test_missing_environment_refuses.bigbang/tests/test_autonomy_v3.py:test_every_command_sees_the_contract_of_the_checkout.bigbang/tests/test_autonomy_v3.py:test_autonomy_check_reports_contract_and_bootstrap.bigbang/tests/test_autonomy_v3.py:test_board_create_refuses_autonomous_mode_without_the_controls.bigbang/tests/test_autonomy_v3.py:test_autonomous_agents_md_explains_the_contract.bigbang/tests/test_autonomy_v3.py:test_owner_files_always_need_the_owner_review.bigbang/tests/test_autonomy_v3.py:test_contract_flags_agent_lets_the_agent_switch_flags.bigbang/tests/test_autonomy_v3.py:test_wrong_types_block_with_a_message_instead_of_crashing.bigbang/tests/test_autonomy_v3.py:test_unreadable_contract_blocks.bigbang/tests/test_autonomy_v3.py:test_limits_come_only_from_a_usable_contract.bigbang/tests/test_autonomy_v3.py:test_wip_of_the_contract_limits_epics_in_progress.bigbang/tests/test_autonomy_v3.py:test_unknown_plan_of_a_private_repository_refuses.bigbang/tests/test_autonomy_v3.py:test_a_tag_policy_named_main_is_not_the_main_branch.bigbang/tests/test_autonomy_v3.py:test_a_ruleset_with_bypass_actors_does_not_count.bigbang/tests/test_autonomy_v3.py:test_the_contract_is_never_approved_by_an_agent.bigbang/tests/test_autonomy_v3.py:test_owner_files_of_a_v3_project_need_the_owner_unless_he_delegated_this_pr.bigbang/tests/test_autonomy_v3.py:test_merge_with_human_review_needs_the_recorded_owner_decision.bigbang/tests/test_autonomy_v3.py:test_unseen_bypass_list_refuses.bigbang/tests/test_autonomy_v3.py:test_private_repository_of_a_free_or_unknown_organization_refuses