Design: um item do array para cada compromisso explícito; omita resumos, prioridade e sentimento. Um responsável ou uma data desconhecidos usam null porque a ausência é significativa; uma string vazia é inválida. “Em breve” permanece na evidência, mas não pode preencher due_date.
Esquema: action, string obrigatória e não vazia; owner, chave obrigatória, string|null; due_date, chave obrigatória, string|null, somente YYYY-MM-DD; status, enumeração obrigatória; evidence, objeto obrigatório, com speaker como string não vazia, timestamp em HH:MM:SS e excerpt como string não vazia de ≤200 caracteres. Ordem das chaves: action, owner, due_date, status, evidence. Regra entre campos: o status completed exige evidência de que a conclusão foi declarada; due_date deve ser null, a menos que haja uma data exata na evidência.
Cláusula exata do prompt: “Retorne somente um array JSON UTF-8. Cada compromisso explícito deve ser um objeto com as chaves nesta ordem: action, owner, due_date, status, evidence. Use null quando não houver responsável ou data de vencimento exata declarados; nunca omita chaves nem converta expressões relativas em uma data. status deve ser proposed, confirmed, completed ou cancelled. evidence deve conter speaker, timestamp em HH:MM:SS e um trecho da fonte de no máximo 200 caracteres. Retorne [] quando não houver compromisso explícito. Não acrescente prosa nem Markdown.”
Válido: [{"action":"Enviar o orçamento revisado","owner":"Nora","due_date":null,"status":"confirmed","evidence":{"speaker":"Nora","timestamp":"00:14:22","excerpt":"Vou enviar o orçamento revisado em breve."}
}]. Vazio válido: []. Inválido: due_date "em breve" viola a regra ISO; a omissão de owner viola a regra de chave obrigatória. A revisão humana ainda verifica se o trecho é um compromisso e se “Nora” corresponde à pessoa correta.