Pular para o conteúdo

ADR-0035: Inversão fail-safe do juiz de escalonamento

  • Status: Accepted
  • Data: 2026-07-01
  • Responsáveis pela decisão: Waldemar Szemat

Toda barreira apoiada em LLM no sistema exceto esta falha em aberto (fail-open): ante um tempo limite, uma exceção, ou uma resposta do juiz vazia ou malformada, os juízes de escopo, persona e fundamentação deixam o turno passar, porque para uma dimensão que não é de segurança o custo de uma sobre-recusa é maior que o de uma rara omissão. A dimensão de escalonamento inverte essa assimetria de custo: uma emergência aguda perdida - AVC, anafilaxia, intenção suicida, hipoglicemia grave - é o dano catastrófico e irreversível, enquanto um template de emergência sobre-disparado é um incômodo limitado, $0 e não medido, já ratificado como comportamento de produto aceito (ADR-0034).

Um juiz semântico de escalonamento é adicionado atrás do piso determinístico para capturar as emergências es-419 e pt-BR idiomáticas, localizadas e ofuscadas que o piso ainda perde. Como esse juiz é construído copiando o classificador de escopo fail-open e invertendo cada ramo, o defeito de maior risco é um deixar-passar remanescente em um ramo de falha que reintroduziria em silêncio o fail-open no caminho crítico para a segurança. Como ratificamos o modo de falha invertido, a postura de limiar e a cota de latência como um contrato explícito, para que a inversão não possa ser erodida em silêncio?

  • Recall acima de precisão em emergências agudas. Um sinal de alarme perdido custa muito mais que um sobre-disparado (a mesma assimetria que ADR-0005 / ADR-0034).
  • Sem regressão de fail-open no caminho de segurança. A inversão deve ser total e auditável, não uma maioria de ramos de melhor esforço.
  • Latência de cauda limitada. O caminho síncrono da barreira não deve estourar o orçamento de latência do turno ante um provedor de juiz lento ou travado.
  • Um limiar defensável e não arbitrário hoje, sem sobre-afirmar uma calibração empírica ainda não rodada.
  • O juiz nunca deve enfraquecer o piso determinístico já enviado.
  • Inversão fail-safe (escalar ante todo desfecho não limpo) com um prior de limiar enviesado ao recall, um tempo limite duro e sem retentativas em linha (escolhida).
  • Manter o juiz fail-open como o juiz de escopo e se apoiar só no piso determinístico para as falhas (rejeitada: um tempo limite ou queda do juiz deixaria passar em silêncio uma emergência aguda - a falha catastrófica exata que o juiz existe para fechar).
  • Fail-safe, mas fixar o limiar de disparo a um valor calibrado empiricamente agora (rejeitada: a calibração com conjunto reservado não foi rodada; fixar agora sobre-afirmaria um valor medido e se adiantaria ao portão de calibração dedicado).
  • Inversão fail-safe total. Cada falha de execução ou de formato escala: um tempo limite, uma exceção, pontuações ausentes, uma racionalização malformada, uma pontuação fora de faixa ou NaN, e uma resposta vazia ou truncada falham todas em direção ao escalonamento, cada uma marcada como um escalonamento impulsionado por erro. Um deixar-passar é alcançável a partir de exatamente dois ramos: um no-op de entrada vazia (não há nada a escalar, então o juiz não é chamado) e uma confiança de emergência bem formada estritamente abaixo do limiar de disparo. Nenhum ramo parseia de melhor esforço uma saída malformada - uma negação como “NÃO escalar” poderia ser mal interpretada - então uma saída fora do esquema é um gatilho fail-safe, não algo a resgatar.
  • O limiar de disparo é um prior enviesado ao recall, não uma fixação empírica. Ele é semeado a partir de um resultado de limiar de decisão ótimo em custo (Elkan) só como âncora de sanidade, porque a confiança do LLM é descalibrada e sobre-confiante. É um valor de configuração limitado e ajustável pelo operador, e não se afirma que esteja calibrado contra um corpus rotulado reservado.
  • Um tempo limite duro limitado sem retentativas em linha. A chamada síncrona ao juiz é envolvida em um tempo limite duro bem abaixo do orçamento de latência do turno; ao expirar, o turno falha seguro ao escalonamento. Não se adiciona uma segunda camada de retentativa no caminho síncrono - o juiz já tem uma retentativa interna, e uma segunda arriscaria uma explosão de latência de cauda. Um desmonte de requisição externo se propaga em vez de ser engolido.
  • O juiz só ADICIONA escalonamentos; nunca estreita nem rescinde o piso. Ele roda só depois que o piso determinístico NÃO disparou e há um juiz configurado, e é combinado atrás do piso por conjunção, então nunca pode suprimir um acerto do piso - consistente com a postura ratificada de recall acima de precisão (ADR-0034). O caminho $0 e sem chave não constrói nenhum juiz e é idêntico byte a byte ao de antes.
  • A calibração empírica é diferida. A calibração empírica do limiar de piso de recall sobre um conjunto reservado, o limiar fixado final, o bloqueio de corpus metamórfico, e o portão de CI fail-fechado com juiz ligado são diferidos a uma fase de portão dedicada. Isto envia o mecanismo no prior, só com provas de controle determinísticas.
  • Uma matriz de injeção de falhas afirma que cada desfecho não limpo escala e que o único negativo limpo abaixo do limiar é o único deixar-passar invocado pelo juiz.
  • As cotas de limiar e de tempo limite e os contadores de escalonamento distintos - impulsionado por política frente a impulsionado por erro, sem PII - são testados unitariamente.
  • Um teste de paridade sem chave confirma que o caminho $0 do piso fica sem alteração.
  • O modo de falha crítico para a segurança é agora um contrato explícito e citado, não um detalhe implícito de uma classe copiada: um revisor não pode reintroduzir em silêncio o fail-open sem falhar a matriz de injeção de falhas.
  • O padrão enviesado ao recall mais o piso determinístico encaminham juntos as emergências agudas idiomáticas e localizadas ao template nativo do locale antes de qualquer recusa de dose mascarada ou de escopo.
  • Uma tempestade de escalonamento por queda de provedor é observável e distinguível do sinal real via os contadores distintos de impulsionado por política frente a impulsionado por erro.
  • A postura de escalar-tudo-ante-falha significa que uma queda de provedor inunda o sorvedouro de revisão humana com escalonamentos impulsionados por erro - a direção segura, mas uma carga de revisão que um disjuntor deve absorver depois.
  • O prior está explicitamente descalibrado: até a calibração diferida, a fronteira de disparo é um palpite defensável, não um piso de recall medido.
  • O fail-safe protege só contra falha de execução ou de formato. Um negativo bem formado mas confiantemente-errado abaixo do limiar não é capturado pela inversão; esse residual fica coberto pelo piso determinístico, que é por isso que ambas as camadas são retidas.
  • Dois valores de configuração ajustáveis pelo operador e um contador de telemetria são adicionados à superfície.

Inversão fail-safe com um prior enviesado ao recall (escolhida)

Seção intitulada “Inversão fail-safe com um prior enviesado ao recall (escolhida)”
  • Bom, porque a inversão coincide com a assimetria de custo da emergência: um sinal de alarme perdido é o dano catastrófico, um sobre-disparo é um incômodo limitado de $0.
  • Bom, porque o tempo limite duro limita a latência de cauda sem uma explosão de retentativas.
  • Bom, porque um prior enviesado ao recall é honesto sobre não ser uma fixação empírica e difere a calibração a um portão dedicado.
  • Ruim, porque pode gerar uma tempestade de escalonamento sob uma queda de provedor - a direção segura, mas uma carga de sorvedouro de revisão que a camada de operações deve absorver depois.
  • Bom, porque é uma cópia sem diff do classificador de escopo fail-open bem entendido.
  • Ruim, porque um tempo limite ou queda do juiz deixaria passar em silêncio uma emergência aguda - o modo de falha catastrófico exato que o juiz existe para fechar.