Skip to content

fix(models): custom provider nodes lost their synced catalog after #9294 - #9691

Closed
diegosouzapw wants to merge 2 commits into
release/v3.8.50from
fix/9294-custom-node-synced-catalog
Closed

diegosouzapw wants to merge 2 commits into
release/v3.8.50from
fix/9294-custom-node-synced-catalog

Conversation

@diegosouzapw

Copy link
Copy Markdown
Owner

Bug (produção)

O #9294 trocou a leitura do catálogo synced em lookupModelMeta por getActiveSyncedCatalog, que filtra por conexões ativas cujo campo provider == providerId. Nodes custom (#7694 — proxies com prefixo) vivem em provider_nodes e o campo provider deles carrega o TIPO (openai-compatible), então a query nunca casa e o catálogo do node resolve vazio silenciosamente. Efeitos:

Fix

Fallback cirúrgico em getActiveSyncedCatalog: quando a query por provider não retorna nada mas o próprio storedProviderId endereça um catálogo (chaves <id>:<id>), usa-o se existir um provider NODE com esse id (getProviderNodeById — nodes não têm flag is_active: existir = ativo, deletar = desligar). A intenção do #9294 (excluir catálogos de conexões inativas de providers nomeados) fica intacta.

Validação (TDD, Hard Rule #18)

tests/unit/sync-reasoning-supported-efforts-7694.test.ts reproduziu a quebra (2 failing: sufixo não stripado; tier list undefined) → 23/23 com o fix. Debug do caminho documentado: o mapa por conexão continha o catálogo, o filtro de conexões o descartava.

⚠️ Os unit shards deste PR herdam os base-reds do lote 08-06 até o #9688 mergear (migration collision + import fantasma). Refs #9294, #7694.



getActiveSyncedCatalog filters by provider-named ACTIVE connections, but
custom provider nodes (#7694 prefix proxies) live in provider_nodes — their
'provider' column carries the node TYPE, so the query never matches and the
node's synced catalog silently resolves empty. That killed the #7694
effort-suffix resolution (<prefix>/<model>-high no longer stripped) and
dropped supportedThinkingEfforts/limits for every custom node.

Fix: when the provider-named query yields nothing but the storedProviderId
itself addresses a catalog (<id>:<id> keys), fall back to it if a provider
NODE with that id exists (nodes have no is_active flag — existing means
active, deletion is the off switch).

Validation (TDD): tests/unit/sync-reasoning-supported-efforts-7694.test.ts
reproduced the break (2 failing: suffix not stripped, tier list undefined)
and passes 23/23 with the fix.
@diegosouzapw

Copy link
Copy Markdown
Owner Author

Fechado como dedup: a sessão /sweep-reds chegou à mesma regressão de forma independente e o commit 18717aa6b8 do #9688 traz uma solução mais completa — fallback para o conjunto key_value provider-wide (a fonte exata pré-#9294, cobre qualquer catálogo órfão de conexão ativa, não só provider_nodes), explicitamente non-authoritative e com available fail-open para nodes. Mesmo diagnóstico (query por conexões ativas nunca vê provider_nodes → catálogo vazio → #7694 effort-suffix morto), mesma suíte de validação (sync-reasoning-supported-efforts-7694 23/23). O #9688 é o dono canônico dos base-reds do lote.

@diegosouzapw
diegosouzapw deleted the fix/9294-custom-node-synced-catalog branch August 7, 2026 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant