ADR-013 — Dois status no contrato: execução e tentativa¶
Status: Aceito
Data: 2026-10-07
Contexto¶
A US18 e o dicionário de dados do 4.4 dão o nome status a dois domínios:
- Execução lógica:
em_andamento,concluidaoucancelada. - Tentativa:
running,successoufailed. O health-check não é status da tentativa: é um registro anterior a ela (ADR-017).
No banco, a tabela qualifica a coluna (EXECUCAO_LOGICA.status e TENTATIVA.status). No contrato HTTP da View com o backend (src/backend/openapi.yaml, ARQ-02), os dois valores às vezes viajam no mesmo JSON. Um campo resultado (success | failed) chegou a ser cogitado no resumo do histórico para evitar essa colisão. Ele não existe no dicionário.
Decisão¶
- Não há campo
resultadono contrato. O desfecho da tentativa é ostatusdela. O histórico lê ostatusda execução lógica. - Em
ResumoExecucao,ExecucaoDetalheeTentativa, a chave JSON continuastatus. O objeto qualifica o domínio, como a tabela qualifica a coluna. O schema éStatusExecucaona execução eStatusTentativadentro detentativas. - No evento SSE
status, os dois valores são irmãos no mesmo JSON. As chaves sãostatus_tentativaestatus_execucao. - Nos eventos
falhaesucessosó vaistatus_execucao. O tipo do evento já diz o desfecho da tentativa (failedousuccess). A tela precisa saber se a execução continuaem_andamento, passa aconcluidaou acancelada.
As colunas do PostgreSQL permanecem status. O formato da linha serial continua o do Contrato de telemetria. Esta decisão vale para o JSON da API e do SSE.
Consequências¶
- O OpenAPI em
src/backend/openapi.yamlé a fonte dessa nomenclatura para o front gerar tipos. - O front provisório ainda tem
resultadoemResumoExecucao. O alinhamento à geração de tipos fica para a tarefa de View, sem alterar esta decisão. GerenciadorExecucoescontinua com as duas máquinas de estado de transicoes-execucao.md.