Documentação

Gating por confiança e escalonamento para uma pessoa

A página anterior defendeu que o código deve ser dono do limiar. Esta página é sobre o que o limiar divide — as três faixas de cada lado dele.

Três faixas, não duas

Os projetos reais raramente fazem «automático ou não». Três faixas é a forma comum:

Faixa Condição Ação
Automático Confiança acima do limiar superior e verificações extra passam Faz simplesmente
Escalar Cai no meio Entregar a uma pessoa
Descartar Confiança abaixo do limiar inferior Não fazer nada, e também não gastar a atenção de uma pessoa

A terceira faixa é fácil de esquecer e é a mais barata das três. «Não olhado» e «uma pessoa espreita» diferem de uma pessoa.

Uma implementação de triagem é típica: pagina só quando P(SEV1) + P(SEV2) ≥ 0.80; descarta abaixo de 0.20 só quando uma verificação de acionabilidade também discorda; manda a faixa do meio para uma pessoa.

A faixa do meio é onde vivem os problemas reais

Assim que existem as três faixas, todas as perguntas difíceis passam para a do meio:

É capacidade humana, não capacidade livre. Quanto mais larga a faixa, mais escalonamentos, mais uma pessoa trata. Uma taxa de escalonamento de 9% parece baixa — até a taxa base ser milhares por dia.

Precisa de um fail-safe, ou fica presa em silêncio. Assim que entregas uma decisão a uma pessoa, nada acontece até uma pessoa olhar. Num painel, isso parece exatamente «está tudo bem». A resposta da ferramenta de triagem é direta: sem confirmação em 15 minutos, pagina de qualquer forma. Melhor acordar alguém do que deixar um P1 numa fila.

A própria condição de escalonamento pode falhar. Uma barreira de autonomia dentro de um agente continua só quando um Choice ultrapassa 0.6 e um Noul de segurança de autonomia ultrapassa 0.5, devolvendo o turno à pessoa em caso contrário. Ambos os números têm de passar — porque «o que devo fazer» e «isto é seguro» são perguntas separadas, e uma só confiança não pode responder honestamente às duas.

Fixar o limiar: medir primeiro

Escolher 0.8 ao calhas é a abordagem mais comum e a que mais provavelmente se torna ruído três meses depois. A abordagem reproduzível é medir, nos teus próprios dados anotados, o limiar necessário para atingir a tua exatidão-alvo.

Um exemplo público: com 0.7 como barreira de baixa confiança, uma execução sobre n=130 apanhou 3 de 3 classificações erradas com uma taxa de escalonamento de 9%. A amostra é pequena. O seu valor não é o 0.7 — é que é assim que um número desses deve ser reportado: dimensão da amostra, taxa de escalonamento e o que foi apanhado.

A latência é o risco subestimado

Os números medidos da ferramenta de triagem merecem uma tabela própria:

Métrica Valor
p50 418 ms
p95 1477 ms
Custo cerca de $0.04 por mil
Chamada mais lenta 151 ms abaixo do seu próprio timeout de 2 segundos

O p95 é 3.5× o p50. Isso significa que a cauda importa mais do que a média — porque a política de timeout dispara na cauda, e quando dispara estás no ramo de recurso, não no ramo que concebeste. A chamada mais lenta ficou a 151 ms do timeout, ou seja, o determinismo do sistema dependeu de uma moeda que por acaso não caiu mal.

Por isso os sistemas de gating costumam falhar não por «julgar mal», mas por esgotar o tempo e seguir o plano de recurso. Testa o ramo de recurso independentemente do caminho principal.

Duas direções de recurso, ambas corretas

Quando algo dá erro, as implementações públicas dividem-se em dois campos, e ambos estão certos:

  • fail-closed: um juiz de permissões nega em caso de timeout ou erro. Uma barreira de segurança tem de funcionar assim — uma barreira de segurança fail-open é um buraco silencioso.
  • fail-open: um hook Stop do Claude Code permite em qualquer erro. Uma barreira de eficiência tem de funcionar assim — uma barreira de eficiência fail-closed bloqueia todo o fluxo.

O critério não é «qual é mais segura», mas qual custo é maior: um bloqueio falso ou um bloqueio falhado. E tem de ser decidido quando escreves o código, porque o que determina é o caminho de exceção, não o principal.

Numa frase

Numa conceção de três faixas, o trabalho está na faixa do meio: a sua largura é um custo, o seu fail-safe é uma propriedade de fiabilidade. Concebe ambos explicitamente em vez de deixar os valores predefinidos.