Coroid toma muitas decisões enquanto processa um trabalho: se uma solicitação deve se tornar um trabalho, como construí-lo e se o resultado é bom o suficiente para ser apresentado a você. Algumas decisões nunca saem das mãos das pessoas. O merge é o exemplo mais claro disso.
Decisões tomadas pelo Coroid
- Se uma solicitação se tornará um trabalho. Qualificação Verifica duplicatas, itens já corrigidos e situações que não consegue reproduzir. Para solicitações que chegam sem intervenção humana, a admissão decide sob sua mandatos se o trabalho pode começar agora, mais tarde ou nunca.
- Como o trabalho é construído e verificado. O plano, o código, os testes, as etapas de qualidade, o QA e a aprovação da revisão. Veja Como o Coroid verifica seu próprio trabalho.
- O que ele teria feito em relação ao merge. O Coroid registra um julgamento sobre cada pull request que analisa, e não age com base nele. Veja Como o Coroid verifica seu próprio julgamento.
Decisões que dependem de pessoas
| Decisão | Quem a toma |
|---|---|
| Fazer merge de um pull request na sua branch | Uma pessoa, dentro do GitHub ou do GitLab, ou com Aprovar e fazer merge no Coroid |
| Liberar e implantar | Uma pessoa, por meio do seu pipeline ou de uma liberação no Coroid |
| Definir para que serve o trabalho autônomo e seu orçamento | Um proprietário ou administrador, ao publicar um mandato |
| Definir o que significa concluir um trabalho | A pessoa que solicitou o trabalho, em seu contrato de resultado |
| Criar trabalho: qualificação interrompida | Uma pessoa com permissão, com Criar trabalho mesmo assim e um motivo |
Coroid nunca faz merge por conta própria, e não existe configuração que permita isso. Veja Merge.
Os mandatos não alteram quem faz o merge
Um mandato permite que o trabalho comece sem que alguém precise solicitar cada etapa. Porém, o resultado não é aprovado sem a decisão de uma pessoa. O trabalho iniciado sob um mandato passa pelo mesmo processo de verificação que qualquer outra tarefa e termina da mesma forma: um pull request aguardando aprovação humana.
O que um mandato acrescenta é a responsabilidade pelo trabalho autônomo: quais projetos pode afetar, quanto pode gastar e um registro de todas as decisões tomadas sobre ele.
Como Coroid verifica seu próprio julgamento
Para cada pull request que Coroid analisa e para cada tarefa pronta para ser mesclada, Coroid anota o que teria decidido se pudesse realizar a mesclagem:
- Aprovaria. Tudo o que é necessário está presente e em conformidade: as verificações de qualidade no último commit do pull request, a revisão do Coroid, as checagens do seu provedor, uma mesclagem limpa e, para uma tarefa, os resultados de QA e da revisão.
- Bloquearia. Pelo menos um desses critérios bloqueia a aprovação.
- Não foi possível determinar. Faltava algo necessário. A ausência de evidências nunca conta como aprovação.
O julgamento nunca é enviado ao pull request, nunca altera uma tarefa e nunca mescla nada. Ele ainda não é exibido no Coroid.
Coroid então compara cada julgamento com o que aconteceu após a mesclagem:
- um pull request posterior intitulado Reverter… marca o anterior como revertido;
- um pull request posterior que diz Corrige #n marca o pull request n como correção rápida;
- na tela de revisão da tarefa, em O que aconteceu após a mesclagem, qualquer pessoa na organização pode marcar um pull request mesclado como revertido, correção rápida ou defeito reportado.
Uma aprovação em um pull request que foi posteriormente revertido ou corrigido conta como uma aprovação incorreta. Em seu próprio repositório, Coroid também insere cópias deliberadamente incorretas de alterações reais para medir o que consegue detectar.
Por que manter esse registro?
Para que a pergunta "Coroid pode ser confiável para mesclar esse tipo de alteração?" seja respondida com evidências — com que frequência suas aprovações falharam, para quais tipos de alteração e em quantos casos — e não apenas com confiança. Hoje, nada age com base nesse registro. Se isso mudar algum dia, será uma escolha explícita do proprietário, e esse registro será a base dessa decisão.