Skip to content

routable de modelo virtual ignora provedor desconectado (status falso positivo) #197

Closed

Description

@patrickbrandao

Problema

virtualModelRoutable (packages/backend/src/routing/virtual-models/virtual-model-chain.ts, entrou no #190) diz routable: true para um virtual cujas rotas pertencem a um provedor desconectado do agente.

chainContextWindow só descarta rotas unavailable, e snapshotRouteState devolve unknown quando a conexão não tem modelos no snapshot, que é exatamente o caso de um provedor removido ou desabilitado para o agente.

Cenário

  1. Crie um virtual só com rotas deepseek/*.
  2. Desconecte o DeepSeek do agente, mantendo outro provedor (para não cair em no_provider).

Resultado:

  • routing virtual list mostra routable: true;
  • thinker routing status e thinker_routing_status mostram routes_by_virtual_model: true e incluem o virtual em active_virtual_models;
  • o proxy (isRouteAvailable, fallback de registros em provider-key.service.ts:~435-446) devolve false e o pedido termina em M301.

O impacto é só no status informativo do MCP, da CLI e da listagem. O roteamento está correto.

Correção sugerida (reviewer do #190)

Tratar unknown como o fallback de isRouteAvailable faz: a rota só conta se o provedor tem registro ativo para o agente. Carregar os provedores uma vez em toViews. A descoberta fria continua contando. Alternativa: routable tri-state.

Falta teste para "provedor desconectado". O teste "routes all gone" só cobre um modelo sumido de um provedor que continua conectado.

Refs #176, ADR 0004. Should-fix registrado na revisão do #190: #190 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:backendBackend: NestJS, TypeORM, proxy, CLI, MCP

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions