Funcionalidade ownership - BrunodosSantosVaz/big-bang GitHub Wiki
Posse concorrente de issues
Funcionalidade BB-F-016 · requisito RF-BB-016 · versão documentada 2.0.1 · código 9c73feb3e357a1216011eaf64bf4b5d944827087.
Finalidade
Evitar que duas IAs implementem a mesma tarefa usando sessões rastreáveis e timestamps do servidor.
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
Ler claims ativos e bloqueadores, registrar aquisição, esperar confirmação, tocar atividade após push e liberar ou recuperar posse expirada conforme regras.
Validações
Labels são visualização; os comentários de sessão escolhem o vencedor. Data do commit não altera a validade da posse.
Alternativas e erros
Issue bloqueada, capacidade ocupada ou concorrente vencedor impede execução; recuperação não inventa inatividade.
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: Evitar que duas IAs implementem a mesma tarefa usando sessões rastreáveis e timestamps do servidor. 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.
ownership.py
| Símbolo | Linha |
|---|---|
api |
17 |
listing |
24 |
labels |
30 |
active_claims |
34 |
issue_data |
51 |
_add_label |
55 |
_remove_label |
59 |
_close_claim |
67 |
blocked |
72 |
_capacity |
91 |
_preflight |
104 |
claim |
123 |
release |
156 |
timestamp |
173 |
last_activity |
177 |
touch |
184 |
stale |
195 |
recover |
201 |
Cenários e rastreabilidade
.bigbang/tests/test_posse.py:test_assume_libera_e_preserva_historico.bigbang/tests/test_posse.py:test_recusa_nome_issue_fechada_e_posse_existente.bigbang/tests/test_posse.py:test_limite_e_comentario_sem_label_ainda_bloqueiam.bigbang/tests/test_posse.py:test_recusa_bloqueio_mas_aceita_pr_de_teste_mesclado.bigbang/tests/test_posse.py:test_outra_sessao_nao_libera.bigbang/tests/test_posse.py:test_falha_na_confirmacao_remove_so_a_propria_marca.bigbang/tests/test_posse.py:test_desempate_e_rollback_nao_apagam_label_do_mesmo_nome.bigbang/tests/test_posse.py:test_comentario_de_terceiro_nao_e_posse.bigbang/tests/test_posse.py:test_recusa_espera_zero.bigbang/tests/test_posse.py:test_resposta_perdida_do_post_reconcilia_por_uuid.bigbang/tests/test_posse.py:test_dois_processos_so_um_dono_e_uma_pasta.bigbang/tests/test_posse.py:test_bug_ganha_a_branch_a_partir_da_main.bigbang/tests/test_posse.py:test_falha_no_worktree_desfaz_a_posse.bigbang/tests/test_posse.py:test_worktree_usa_avanco_remoto_e_recusa_divergencia
Requisitos · Matriz de rastreabilidade · Referência CLI