ADR 0215 — A decisão do projeto chega ao dev e ao QA
Status
Accepted. 2026-10-14 (AT-526; decisões do dono em 14/10). REVISA uma parte
do ADR 0214: a regra "decisão sem
afeta que toque a tarefa não entra" do contexto do dev. Regras em RN-870,
RN-871 e RN-872.
Tema: gates. O efeito que importa é o do gate de QA: ele deixa de repetir
uma pergunta que o usuário já respondeu.
Context
Medido no TP-01 (15ª rodada, viralabs-app-2026-10-11b):
- O usuário respondeu "código inexistente ou apagado responde 404?" às 15:45.
A tarefa "listagem e exclusão de links" era de OUTRA história, e o QA dela
afirmou que a pergunta seguia sem resposta, deu
needs_user_decisione o gate estacionou sem pergunta aberta no projeto — o fio não tinha o que responder. - O
afeta.regrasque o Criativo grava são TÍTULOS de regra, e o filtro do ADR 0214 (afetaAlgum) compara com IDS: nenhuma decisão do Criativo casava nunca. Mesmo com ids, as regras citadas não eram as da história da tarefa. - O veredito aceitava
openQuestionIdde pergunta inexistente ou já respondida, e estacionaria para sempre.
Decision
- O
openQuestionIddo veredito é conferido (RN-870): tem de existir no projeto e estar ABERTO, antes de qualquer escrita. Inexistente (ou de outro projeto) é 404pergunta_nao_encontrada; já respondida é 409pergunta_ja_respondidacom o texto da decisão no corpo (decisao), sem escrita e sempr.gate_changed— o QA lê a decisão em vez de esperar. afeta.regrasaceita o título exato (RN-871): no funil de eventos, o título exato de umartifact.business_ruledo projeto vira o id (o mais recente, se o título se repete); o que não é id nem título exato é 400 nomeado. A leitura do contexto do dev também casa pelo TÍTULO das regras da história, para as decisões gravadas antes desta regra.- As outras decisões do projeto chegam também (RN-872, opção (a) do
dono):
GET /internal/sessions/:sessionId/dev-contextdevolve, além dedecisoes(as que tocam a tarefa),decisoesDoProjeto— as demaisdecision_recorddo projeto, numa lista SEPARADA, dentro do MESMO teto de 10: as da tarefa vêm primeiro e consomem o teto antes. É isto que revisa o ADR 0214, cuja frase "decisão semafetanão entra" deixa de valer para a lista do projeto (continua valendo paradecisoes).
Consequences
- O campo novo é aditivo: o engine o ignora até a lane do engine imprimir a
seção "Outras decisões do projeto" no kickoff do dev e no recorte do QA
(
context_builder.exlê o contexto porMap.getcom chave nomeada). - O teto de 10 é COMPARTILHADO. Num projeto com muitas decisões, as antigas que não tocam a tarefa ficam de fora — o preço de não alargar o contexto.
decisoesDoProjetoinclui todadecision_recorddo projeto, não só as nascidas de pergunta respondida pelo usuário (as do Criativo sobre restrição técnica também, RN-711).- Título que se repete entre versões de regra resolve para a mais recente; não há recusa por ambiguidade.