ADR 0262 — O agente retira a regra de negócio obsoleta, citando a substituta ou a resposta
- Status: aceito
- Data: 2026-11-06
- Tema:
time - Referencia: usa a régua do ADR 0214 (a resposta do usuário autoriza a correção, RN-859). Cita o ADR 0186 (a cobertura do backlog decide o aceite) e o ADR 0212 (estado novo sem mudar o portão do claim). Implementado pela RN-1018 (api#34) e completado no engine e no web (AT-755, decisão do dono de 06/11/2026).
Contexto
A regra de negócio é o evento imutável artifact.business_rule, e o log só acumula. Ninguém tinha como retirar uma regra que ficou obsoleta. No TP-01 26ª (06/11), o Criativo pediu ao condutor "remova a regra manualmente" quatro vezes, e a história passou a citar a regra antiga e a nova ao mesmo tempo.
Decisão
- O agente retira a regra sozinho, sem cartão de aprovação. Ele cita a regra substituta (
replacedBy) ou a resposta do usuário (questionId), com a mesma régua da RN-859. Sem citação, a retirada é recusada (400retirada_sem_citacao). - Só o Criativo e o PO retiram. Outro papel recebe 403
papel_nao_retira_regra. - Estado novo, sem mexer no log. O evento
artifact.business_rule_retired { ruleId, reason, storyIds, replacedBy?, questionId? }marca a retirada. A regra continua no log, mas sai de toda leitura que decide algo: lista, cobertura, duplicata, contexto do dev, aceite automático,afeta.regrase resumo de contexto. Criar ou completar história não liga mais regra retirada. - As histórias passam a citar a substituta, inclusive a história
ready, sem nova promoção. Nada é gravado, e a retirada é recusada, em dois casos:- uma história ficaria sem nenhuma regra (409
historia_ficaria_sem_regra); - a história tem tarefa em execução (409
historia_com_tarefa_em_execucao).
- uma história ficaria sem nenhuma regra (409
Consequências
- O Criativo e o PO ganham a ferramenta
retire_business_rule, e a linha do tempo mostra a retirada. - Retirar só pela resposta, sem substituta, só passa quando nenhuma história ficaria sem regra.
- A recusa por tarefa em execução protege o trabalho em curso. A retirada fica para depois do merge ou do bloqueio da tarefa.
Alternativas consideradas
- Cartão de aprovação. Recusada pelo dono: devolve ao usuário a fricção que o TP-01 apontou.
- Botão só na tela. Recusada: não resolve o caso em que o agente percebe a regra obsoleta.
- Apagar ou alterar o evento da regra. Recusada: quebra a imutabilidade do log.