Dizzle
8ecdd88c15
fix(pool): diagnose empty pools, align catalog filter, and surface drop reasons ( #12795 )
...
Um pool `auto/*` vazio que não diz por que está vazio é a pior forma de falha: o operador vê ausência e não sabe se é config, cota ou catálogo. Registrar qual estágio removeu quantos, e carregar `dropReason` em cada entrada de `quotaHealth.providers`, transforma silêncio em diagnóstico.
Os três defeitos achados de carona valem tanto quanto a feature — em especial a cota livre recorrente sem teto sendo tratada como desconhecida em vez de segura, que é justamente o caso que mais aparece.
Revalidei após reconstruir sobre o tip: **15/15**, typecheck:core limpo, `check-api-typecheck` OK (289).
**Uma mudança minha no `catalogPaidFilter.ts`.** Mantive a sua extração — ela é mais limpa que o predicado inline — mas troquei o corpo para usar `isFreeForProvider` por id. O módulo OR-eava `providerHasFreeModels(resolved) || providerHasFreeModels(canonical)` num único `freeProvider` e depois testava `isFreeModel` em cada um. Com isso, um id cujo próprio provider não documenta tier livre passa a ler como grátis sempre que o alias irmão documenta — que é exatamente o buraco que o #12744 fechou e já está no tip. Por id preserva a garantia; nenhuma outra linha do módulo mudou.
**Dívida registrada:** o `virtualFactory.ts` foi de 1187 para 1219 somando esta onda e cruzou o teto de 1200 pela primeira vez. Congelado com os candidatos a extração nomeados na justificativa.
2026-09-10 09:25:59 -03:00
..
2026-09-02 20:37:02 -03:00
2026-06-19 06:49:01 -03:00
2026-08-21 13:57:42 -03:00
2026-08-20 15:07:19 -03:00
2026-08-30 02:27:25 -03:00
2026-06-30 06:54:29 -03:00
2026-07-02 10:47:13 -03:00
2026-08-31 14:14:02 -03:00
2026-06-29 16:51:03 -03:00
2026-08-20 10:27:26 -03:00
2026-07-13 09:12:40 -03:00
2026-09-03 23:26:59 -03:00
2026-08-21 00:29:01 -03:00
2026-09-02 01:19:49 -03:00
2026-09-10 09:13:10 -03:00
2026-08-18 10:51:34 -03:00
2026-08-25 18:22:46 -03:00
2026-09-02 01:19:49 -03:00
2026-08-30 02:51:34 -03:00
2026-08-31 13:39:21 -03:00
2026-09-03 23:40:22 -03:00
2026-08-21 10:28:01 -03:00
2026-09-10 09:20:18 -03:00
2026-07-04 13:00:30 -03:00
2026-07-29 15:18:55 -03:00
2026-09-03 23:38:57 -03:00
2026-08-12 02:13:41 -03:00
2026-08-30 02:27:25 -03:00
2026-09-02 01:19:49 -03:00
2026-08-30 02:27:25 -03:00
2026-09-02 03:14:41 -03:00
2026-09-04 00:03:16 -03:00
2026-07-07 13:14:06 -03:00
2026-08-30 02:27:25 -03:00
2026-09-01 11:06:04 -03:00
2026-07-29 15:18:55 -03:00
2026-08-09 09:54:47 -03:00
2026-08-30 09:16:52 -03:00
2026-08-21 04:25:56 -03:00
2026-08-25 21:08:05 -03:00
2026-08-30 09:16:52 -03:00
2026-09-02 00:27:29 -03:00
2026-07-02 10:47:13 -03:00
2026-08-12 16:54:50 -03:00
2026-09-08 09:29:41 -03:00
2026-06-30 06:54:29 -03:00
2026-09-07 09:02:59 -03:00
2026-06-03 06:45:04 -03:00
2026-08-26 17:54:57 -03:00
2026-08-30 11:11:29 -03:00
2026-06-30 06:54:29 -03:00
2026-09-07 09:02:59 -03:00
2026-09-08 09:29:45 -03:00
2026-08-30 02:27:25 -03:00
2026-08-25 13:12:50 -03:00
2026-08-18 10:49:52 -03:00
2026-09-08 09:29:38 -03:00
2026-09-04 00:45:38 -03:00
2026-07-29 15:18:55 -03:00
2026-08-30 19:39:42 -03:00
2026-07-29 15:18:55 -03:00
2026-08-18 11:31:53 -03:00
2026-02-26 15:11:40 +00:00
2026-08-26 17:54:57 -03:00
2026-06-20 14:55:24 -03:00
2026-09-02 03:12:51 -03:00
2026-09-07 09:15:00 -03:00
2026-04-17 09:00:32 -03:00
2026-08-30 02:27:25 -03:00
2026-09-01 12:07:02 -03:00
2026-08-09 15:16:55 -03:00
2026-04-23 16:57:43 -03:00
2026-09-10 09:25:59 -03:00
2026-08-23 14:25:04 -03:00
2026-08-18 11:25:46 -03:00
2026-08-04 14:34:02 -03:00
2026-08-07 20:53:21 -03:00
2026-08-21 20:54:51 -03:00
2026-08-30 02:27:25 -03:00
2026-05-29 12:44:29 -03:00
2026-08-18 11:31:46 -03:00
2026-08-26 17:40:22 -03:00
2026-06-17 02:43:21 -03:00
2026-08-29 08:10:17 -03:00
2026-08-23 16:51:25 -03:00
2026-03-29 14:37:55 +02:00
2026-03-17 04:24:46 -03:00
2026-08-09 09:52:28 -03:00
2026-08-26 08:11:09 -03:00
2026-05-29 12:44:29 -03:00
2026-08-30 02:27:25 -03:00
2026-08-20 06:29:42 -03:00
2026-08-30 02:27:25 -03:00
2026-08-05 22:41:38 -03:00
2026-09-03 21:01:09 -03:00
2026-06-29 08:40:06 -03:00
2026-08-30 09:09:36 -03:00
2026-06-29 08:40:06 -03:00
2026-08-30 09:21:53 -03:00
2026-09-01 11:58:15 -03:00
2026-07-29 15:18:55 -03:00
2026-09-01 11:58:15 -03:00
2026-08-31 14:13:53 -03:00
2026-08-20 11:47:38 -03:00
2026-08-30 02:27:25 -03:00
2026-08-30 09:16:52 -03:00
2026-08-18 10:57:44 -03:00
2026-07-29 15:18:55 -03:00
2026-08-30 02:27:25 -03:00
2026-08-25 20:11:56 -03:00
2026-09-03 21:31:13 -03:00
2026-08-31 14:13:53 -03:00
2026-09-01 00:50:58 -03:00
2026-08-23 07:01:07 -03:00
2026-08-17 08:21:53 -03:00
2026-08-21 14:58:53 -03:00
2026-08-15 14:23:29 -03:00
2026-08-09 09:55:16 -03:00
2026-08-20 09:31:12 -03:00
2026-08-24 19:57:12 -03:00
2026-08-30 02:27:25 -03:00
2026-04-30 01:27:03 -03:00
2026-06-03 06:45:04 -03:00
2026-08-18 11:31:53 -03:00
2026-06-01 23:13:19 -03:00
2026-08-20 13:11:03 -03:00
2026-08-28 06:52:46 -03:00
2026-08-20 15:19:32 -03:00
2026-08-30 02:27:25 -03:00
2026-06-29 08:40:06 -03:00
2026-09-03 21:31:13 -03:00
2026-08-26 08:10:51 -03:00
2026-07-29 15:18:55 -03:00
2026-08-25 01:38:59 -03:00
2026-08-11 09:16:23 -03:00
2026-06-13 17:27:40 -03:00
2026-08-07 20:54:11 -03:00
2026-08-25 13:12:38 -03:00
2026-09-03 23:39:22 -03:00
2026-08-30 02:27:25 -03:00
2026-08-30 02:36:26 -03:00
2026-08-24 20:04:11 -03:00
2026-08-26 08:11:30 -03:00
2026-02-18 14:43:57 -03:00
2026-02-18 00:02:15 -03:00
2026-08-30 02:27:25 -03:00
2026-06-09 15:56:24 -03:00
2026-08-18 11:25:46 -03:00
2026-07-29 15:18:55 -03:00
2026-08-25 18:55:18 -03:00