ADR 0258 — A resposta dada pelo chat fecha a pergunta em aberto
- Status: aceito
- Data: 2026-11-05
- Tema:
gates - Referencia: o ADR 0214 (estende os itens 2, 3 e 6; o 0214 não é editado), as RN-858, RN-860 e RN-862, e as RN-1002 (api) e RN-1003 (engine), que implementam esta decisão (AT-741, EP-030, decisão do dono de 05/11/2026).
Contexto
No TP-01 de 05/11 (24ª rodada), o Criativo deixou quatro perguntas em aberto. O usuário respondeu as quatro pelo chat, e o Criativo gravou as regras e a decisão. As perguntas, porém, seguiram na fila com "Aceitar sugestão": nenhum open_question.answered saiu.
O ADR 0214 só previa um caminho para fechar a pergunta: o clique do autor da sessão na fila (PerguntasEmAbertoUseCase.responder). O engine tinha só a ferramenta que abre a pergunta (declare_open_question), nenhuma que a feche, e a instrução central não dizia o que fazer quando a resposta vem pelo chat. A pergunta respondida continuava aberta, e o gate estacionado pelo needs_user_decision continuava parado.
Decisão
- O agente fecha a pergunta. A ferramenta
answer_open_question(questionId,respostaopcional; sem ela, vale a sugestão da própria pergunta) entra nos quatro perguntadores do ADR 0214: Criativo, PO, Arquiteto e Dev Lead. Qualquer um deles fecha uma pergunta do projeto, não só o agente que a abriu. - Só com resposta inequívoca. A frase central do
fluxo_do_timemanda fechar só quando a resposta do usuário no chat é INEQUÍVOCA; na dúvida, a pergunta segue aberta e o botão segue valendo. Para isso, as perguntas abertas (comquestionIde a sugestão) chegam ao turno dos quatro perguntadores. - Fechar religa o gate, como o clique. O efeito é o mesmo do botão: o par
decision_record+open_question.answered, e o gate estacionado de cada tarefa afetada é retomado (RN-860). - Uma rota interna com o mesmo núcleo do
responder. O engine chamaPOST /internal/projects/:projectId/open-questions/:questionId/answercom token de serviço. A rota e oresponderhumano compartilham um núcleo só; o engine não grava evento.respondidaPorcontinua sendo o autor da sessão, e o agente vai emviaAgente. A pergunta já fechada devolvealready_answered(nunca 409), para que a chamada seja idempotente.
Consequências
- A pergunta respondida pelo chat sai da fila sem um segundo gesto do usuário, e o QA volta a julgar com a decisão no contexto.
- O item 3 do ADR 0214 ("quem responde é só o autor da sessão") continua valendo para o clique. A resposta pelo chat é do próprio autor, então a decisão continua dele; o agente só a registra.
- Preço declarado: o agente pode ler como inequívoca uma resposta que não era. A régua é a frase central, e o
decision_recordguarda a resposta registrada, que o usuário pode conferir. - O que não muda: a ferramenta continua sendo a única origem da pergunta (item 2 do 0214), o veredito
needs_user_decisione o estacionamento do ADR 0207.
Alternativas consideradas
- Só a tela deixar claro que a pergunta segue aberta (opção b). Recusada pelo dono: o usuário já respondeu, e pedir o clique repete a resposta.
- Fechar só o agente que abriu a pergunta. Recusada: a resposta pode chegar no chat de outro perguntador do mesmo projeto.
- Detectar a resposta no texto, sem ferramenta. Recusada pelo mesmo motivo do 0214: heurística sobre prosa erra nos dois sentidos.