Feature: Bump de límite lint (700→2000) + auto-alert en wiki_lint_bulk
Resumen
Incremento del límite de SELECT en wiki_lint_bulk de 700 a 2000 páginas y adición de auto-alert visual cuando se alcanza el límite. Responde al footgun documentado en s90: el cron lint con limit:200 hardcoded escondía 111 orphans porque solo veía las 200 páginas más viejas en la tabla.
Integrado en commit s90 (28-05-2026) tras revisión de observabilidad y detectar falta de cobertura en corpus creciente.
Contexto: el footgun
Problema original (s90 retrospectivo):
- Cron
wiki-lint.ymlejecutabawiki_lint_bulkconlimit:200hardcoded. - Corpus de la wiki creció de ~300 a ~600 páginas en meses.
- Con limit:200, solo se escaneaban las 200 páginas con
last_verifiedmás viejo. - Resultado: 111 orphans (páginas sin referencias) quedaban invisibles; no se ejecutaban acciones de lint sobre ellas.
Raíz: El límite es una heurística para evitar timeout en el SELECT pero no es transparente; el operador no sabía que existían páginas sin escanear.
Solución
A) Bump de límite
Parámetro limit en wiki_lint_bulk incrementado de 700 a 2000:
# .github/workflows/wiki-lint.yml (línea 69)
limit: 2000
Y en /opt/biblioteca-crons/wiki-lint.sh (sed in-place):
sed -i 's/"limit":700/"limit":2000/g' config.yml
Cobertura:
- Corpus actual: ~569 páginas (2026-05-28).
- 2000 cubre 3.5x el corpus actual → margen para ~24 meses de crecimiento a ritmo +30 páginas/semana.
B) Auto-alert: flag limit_reached
Cuando allPages.length >= limit, se activa el flag y se añade una advertencia visible en el summary del log de lint:
const limitReached = allPages.length >= limit;
const limitAlert = limitReached
? ` ⚠ LIMIT_REACHED=${limit} (corpus puede haber crecido — subir limit en wiki-lint.yml + /opt/biblioteca-crons/wiki-lint.sh)`
: '';
// Se incluye en summary + artifacts del log
Ejemplo de salida cuando se alcanza el límite:
{
"scanned": 2000,
"limit_reached": true,
"limit_used": 2000,
"stale": [...],
"...": "..."
}
Con en el summary visible:
Lint bulk: 2000 pages · ... applied(...) ⚠ LIMIT_REACHED=2000 (corpus puede haber crecido — subir limit en wiki-lint.yml + /opt/biblioteca-crons/wiki-lint.sh)
Cambios
| Archivo | Cambio | Líneas |
|---|---|---|
.github/workflows/wiki-lint.yml | Bump limit 700 → 2000 | 69 |
functions/api/mcp/handlers/wiki.ts::wikiLintBulk() | Auto-alert flag + limitAlert string | 1484–1507 |
functions/api/mcp/index.ts | Logging de limit_reached + limit_used en artifacts | (indirecto) |
Operación
El cron lint ejecuta cada noche (hora exacta TBD en infra); cuando limit_reached=true:
- ✅ El lint sigue ejecutándose normalmente (cubre las 2000 más viejas).
- 🔔 Se registra en
bib_wiki_log(operation=‘lint’) con flaglimit_reached: true. - 👁️ Operador revisa los logs y ve la advertencia.
- ⬆️ Si es consistente por varias semanas, bump a 3000 (o arquitectura del SELECT).
Registros de cambios
| Versión | Cambio | Fecha |
|---|---|---|
| 1.0 | Bump 700→2000 + auto-alert | 2026-05-28 |
Decisiones de diseño
-
¿Por qué 2000 y no 3000 o ilimitado?
- 3000 daría 5x cobertura (muy holgado). 2000 es el punto donde: cobertura suficiente para 24 meses, pero aún forcing un próximo bump (forcing a la pregunta “¿sigue creciendo?”).
- Ilimitado: riesgo de timeout en SELECT; preferimos límite visible + alerta.
-
¿Por qué el flag
limit_reacheden artifacts?- Permite queryar retroactivamente
SELECT * FROM bib_wiki_log WHERE artifacts LIKE '%limit_reached%'o parsing JSON. - Dashboard futuro puede graficar “¿cuándo se alcanzó el límite?” como indicador de crecimiento.
- Permite queryar retroactivamente
-
¿Cadencia de review del flag?
- Mensualmente: si
limit_reached=trueen >80% de las noches del mes, bump. - Trimestralmente: revisar de todas formas (independentemente del flag).
- Mensualmente: si
Véase también
- [[entity—biblioteca—tool—bib-pipeline-stats]]
- [[entity—biblioteca—tool—bib-ask-rejections]]
- [[entity—biblioteca—tool—wiki-lint-bulk]]
- [[concept—biblioteca—supercontexto]]
- [[concept—biblioteca—footgun]]