Quadro unico - BrunodosSantosVaz/big-bang GitHub Wiki

Quadro único

O Big Bang v3 adota um GitHub Project único por repositório (ADR-0023), substituindo a divisão legada em três painéis. O quadro reflete o ciclo de vida completo do projeto, de Brainstorm a Done, governado por recibos criptográficos e travas atômicas.

1. Os 15 estados

O campo de projeção do Project é o Status, composto por 15 estados estritos:

Categoria Fluxo de estados
Épico Brainstorm → Backlog → Refinement → (Prototyping) → Ready → Selected → In Progress → (QA) → Releasing → Done
Tarefa (type:task, type:test, type:docs) Todo → Coding → In Review → Done
Bug Brainstorm → Backlog → Ready → Selected → Coding → In Review → (QA) → Releasing → Done
Terminais de exceção Rejected (com motivo reason e estado de retorno return-to) e Cancelled (com motivo)

Nos épicos, as únicas transições de recuo sem reprovação formal são Ready → Refinement e Selected → Ready.

2. Campos do Project

O quadro único utiliza campos customizados gerenciados pela CLI e pelo controlador:

  • Status: projeção do estado atual do cartão (15 opções).
  • Candidate: identificador da versão candidata atual (vX.Y.Z-rc.N) para cartões em homologação.
  • Attempts: contador de reprovações consecutivas registrado a partir dos recibos.
  • Blocked: indicador booleano de bloqueio quando o limite de tentativas (attempts) é atingido.
  • Risk: nível de risco calculado (low, medium, high, critical).

3. De onde vem o estado: Recibos

O estado oficial de um cartão não depende de quem arrasta o cartão na interface web. A fonte da verdade são os recibos registrados como comentários na issue:

<!-- bb:receipt {"type": "transition", "from": "Coding", "to": "In Review", "attempt": 1, ...} -->
  • Cada recibo é assinado e gravado exclusivamente pela conta confiável (project.owner).
  • Movimentações manuais não autorizadas na interface do GitHub são revertidas na reconciliação periódica com um comentário explicativo.
  • Toda transição com portão registra approval no recibo, indicando o portão, a classe de risco, o modo de operação e o aprovador (owner:<login> ou agent:<nome>).

4. Portões e decisões do dono

O avanço entre fases estratégicas exige aprovação registrada via label oficial:

Portão Transição Label de decisão
backlog Brainstorm → Backlog approved:backlog
refinement Refinement → Prototyping/Ready approved:refinement
prototype Prototyping → Ready approved:prototype
selection Ready → Selected approved:selection
qa QA → Releasing qa:approved (ou qa:rejected)
publish Releasing → Done Aprovação do ambiente production no GitHub Actions
cancel * → Cancelled approved:cancel

Decisões do dono são registradas na issue por meio de:

bb decision <label> <issue> --quote "<citação exata do dono>"

O comando preserva as palavras do dono para auditoria factual. A permissão de delegar aprovações varia de acordo com o modo (Modos).

5. Posse e travas atômicas

Para evitar conflito entre agentes e desenvolvedores, o Big Bang utiliza referências Git atômicas (refs/bigbang/locks/issue-N):

  • Tomar posse: bb claim <issue> <nome> adquire a trava atômica. Se outro agente já possuir a trava, o pedido é recusado e informa quem é o titular.
  • Renovar posse: bb renew <issue> prorroga o prazo de vigência (lease_hours).
  • Liberar posse: bb unclaim <issue> libera a trava, convertendo a ref em uma lápide permanente (tombstone) para histórico.
  • Sessões vencidas (stale) não podem concluir trabalho nem renovar sem autorização forçada (--force-claim).

6. O Controlador automático

O workflow bb-controller.yml escuta eventos de issues, PRs e branches, aplicando as transições validadas (bb pipeline controller):

  • Push na branch da tarefa: move de Todo para Coding.
  • Abertura de PR: move de Coding para In Review.
  • Merge de PR: move para Done, fecha a sub-issue e libera a trava atômica.
  • Fechamento de PR sem merge: retorna o cartão para Coding.
  • Agendamento periódica: reconcilia posições divergentes no Project e marca stale em posses vencidas.

Para detalhes de implementação, consulte a Funcionalidade-quadro-unico e Funcionalidade-nucleo-v3.

⚠️ **GitHub.com Fallback** ⚠️