O erro que nos ensinou o problema

Em agosto de 2026 medimos o motor do Frame Oracle em quatro domínios diferentes, pedindo que ele explicasse vídeos reais. O resultado foi consistente e desconfortável: o motor é forte onde pode LER e fraco onde precisa ESTIMAR. Os erros caíram exatamente no vão entre o que o vídeo mostra e o que a resposta precisava ter.

  • Receita: 500g virou 1,5kg. A quantidade era dita uma única vez, só no áudio, sem reforço na tela.
  • Mecânica: inventou o passo "levante o veículo" — um passo que o vídeo omite.
  • Português: nenhum erro. A informação estava escrita na tela.

O padrão salta: onde havia texto legível, acerto; onde havia uma menção fugaz ou um vão, invenção.

E aqui está o ponto que reorganizou nossa engenharia: o problema não é o modelo inferir. Inferir é útil e às vezes é exatamente o que se pede. O problema é ele entregar inferência com a mesma cara de leitura. Quem lê a resposta não tem como distinguir uma coisa da outra — e por isso não tem como saber onde precisa conferir.

O caso mais didático que registramos foi este:

[01:33] Sirva com arroz branco

Nunca dito. Nunca mostrado. Com timestamp. A invenção vestida com a roupa da evidência.

Por que "não invente" no prompt não resolve

A saída óbvia é instruir o modelo: "não afirme nada que não esteja no vídeo". Nós tentamos, e descartamos — não por preciosismo, mas porque instrução é persuasão, e persuasão falha calada. Quando ela falha, nada acusa: você recebe uma frase confiante, bem escrita, indistinguível de uma frase correta.

O princípio que adotamos é outro:

Se o modelo erra um campo sendo razoável, o campo está errado.

Ou seja: em vez de pedir que ele não cometa o erro, construímos o formato de resposta de modo que o erro seja inexprimível. Não é confiança no modelo — é uma estrutura em que a alucinação vestida de leitura não tem como ser escrita.

O vocabulário: cinco bases, do mais ancorado ao menos

Toda afirmação numa resposta do Frame Oracle declara de onde saiu. São cinco bases possíveis, e a ordem não é decorativa — ela vai da mais ancorada à menos:

  1. tela — está escrito ou visível na imagem.
  2. fala — foi dito no áudio.
  3. inferido — o modelo concluiu a partir do que viu ou ouviu.
  4. fora_do_video — vem de conhecimento geral, não deste vídeo.
  5. nao_consta — o vídeo não responde isso.

As duas primeiras são o que chamamos internamente de bases lidas: são as únicas que se apoiam em algo efetivamente observável no arquivo.

Uma decisão importante e talvez contraintuitiva: isso é agnóstico de domínio. Não existe "receita" nem "mecânica" nem "matemática" dentro dessa regra. "Diga de onde tirou" vale igual para os quatro domínios que medimos e para os que ainda não medimos. O que muda por domínio é apenas quais afirmações são arriscadas — e isso é configuração, não código.

As três regras estruturais

O vocabulário sozinho seria só uma etiqueta, e etiqueta se preenche errado. O que faz a diferença são três regras que o formato impõe:

1. Base lida EXIGE instante. Se a afirmação vem de tela ou fala, ela precisa carregar um timestamp. O raciocínio é direto: se o modelo viu, ele sabe quando viu. Uma leitura sem instante não é leitura — é lembrança.

2. inferido PROÍBE instante. Esta é a regra que mata o [01:33] Sirva com arroz branco. Carimbar um momento específico em algo que não foi observado é a assinatura exata do defeito que medimos. No nosso formato, essa combinação não compila: uma afirmação inferida com timestamp é rejeitada antes de chegar a qualquer tela.

3. nao_consta é base de primeira classe. Isto é menos óbvio e talvez seja o mais importante. Se "não sei" não for uma resposta barata e legítima, o caminho de menor resistência para qualquer modelo é inventar. Dar a "o vídeo não responde isso" o mesmo status das outras bases é o que torna o silêncio uma opção viável em vez de uma falha.

As três valem por construção, não por checagem. Não são um passo de validação que alguém pode esquecer de chamar — são propriedades do formato. E a lista de bases não-observadas é derivada da lista completa menos as lidas, de modo que uma base nova cai na regra sozinha, sem ninguém precisar lembrar de atualizar uma segunda lista.

A segunda trava: um instante que o vídeo não pode conter não é um destino

Grounding não termina no formato. Medimos um caso em que, num vídeo de 7 segundos, o modelo respondeu citando "o segundo 40".

A correção intuitiva seria limitar o número à duração do vídeo — levar o 40 para o 7. Nós escrevemos essa versão e depois a apagamos, porque ela é a versão elegante do próprio defeito: o clique funcionaria, o vídeo iria para algum lugar, e nada diria que o número era falso. A interface viraria cúmplice da invenção.

O que fazemos é recusar. Um instante que o vídeo não pode conter não recebe endereço, e o componente que receberia o comando de navegar simplesmente não navega.

Um botão que não navega é honesto. Um que navega para o lugar errado mente com confiança.

Existe uma tolerância de meio segundo, porque arredondamento no último instante é arredondamento, não invenção. Fora dela, a resposta é não.

O que isso entrega a quem recebe um laudo

O destinatário final de uma análise do Frame Oracle raramente é quem a encomendou — é o cliente do cliente. Alguém que recebe um documento e precisa decidir se confia nele.

Para essa pessoa, a diferença prática é poder conferir. Uma afirmação marcada como tela com um instante é uma afirmação que ela abre, assiste e verifica em cinco segundos. Uma afirmação marcada como inferido é uma leitura da qual ela pode discordar — e discordar de uma interpretação declarada é uma conversa produtiva, ao contrário de discordar de um fato inventado que parecia observação.

O limite honesto, dito por extenso

Aqui está a parte que normalmente não entra num texto sobre a própria tecnologia, e que entra neste porque um artigo sobre grounding que esconde suas lacunas se refuta a si mesmo.

Grounding valida COERÊNCIA, não VERACIDADE. O sistema garante que a declaração de origem seja internamente consistente — que inferido não venha com timestamp, que tela venha com um. Ele não garante que a afirmação seja verdadeira. Um modelo que minta de forma internamente consistente atravessa a estrutura inteira.

O que a estrutura faz não é provar. É permitir provar: ela obriga a resposta a dizer onde conferir, e transfere a última palavra para quem assiste ao vídeo. É menos do que uma garantia e é muito mais do que uma frase confiante.

E o que ainda não está pronto: a prova precisa chegar ao documento entregue, clicável, para que o destinatário final não dependa de ter o projeto aberto. Essa peça está em construção enquanto este texto é publicado. O vocabulário e as regras estruturais existem e são testados; o elo entre eles e o documento final, não ainda.

Preferimos publicar isso do que publicar a versão em que tudo já funciona.