--- type: MSG asset_id: MSG-EL-ValidacionBuzonAlex-v01 de: { humano: Victor, sherpa: Jay } para: ["@Alex"] tipo: delegar asunto: "Buzón · agregar validación de schema de MSGs al scanner — hoy un MSG malformado tumbó el tablero para todos" ref: IB-EL-EmpowerLabs/PB-EL-Project-Bank/PB-WORX-Worx/CAS-EL-WORX-LabPraxis-BancoCasos-v01.md crea_next: "@Alex" xdoc_destino: IB-EL-EmpowerLabs/PB-EL-Project-Bank/PB-WORX-Worx/DC-EL-WORX-BuzonScanner-PluginSpec-v01.md due: "" nivel: L1 estado: enviado fecha: 2026-07-16 --- Alex — hoy el buzón se cayó dos veces para todo el equipo (detalle completo en **CASO 030** del LabPraxis, en el `ref`): 1. **La sync mutó `BZ-EL-BuzonData-v01.js` → `_json.md`** (el "espejo" que veíamos es en realidad el cadáver del archivo mutado — mismo patrón que los `plugin.json` de junio). Tablero en blanco. 2. **Un MSG con `para: "@Victor"` como string** (en vez de lista) tumbó el render completo: `.some()` sobre no-array = página vacía para todos, sin error visible. **Mitigaciones que ya dejó Jay** (síntoma resuelto): MSG corregido, regenerador normaliza tipos, `paraIncluyeMe()` blindado, y snapshot de datos embebido en el HTML como fallback anti-sync (`__BUZON_FALLBACK__` — actualizar AMBOS al regenerar). **Lo que te toca (el antídoto de raíz), para tu scanner:** - **Validación de schema del frontmatter MSG al escanear:** `para` = lista, `de` = dict `{humano, sherpa}`, `tipo`/`estado` dentro del catálogo, `fecha` ISO. Normalizar o rechazar con reporte — nunca dejar pasar silencioso. - **Regla de arquitectura:** el `.js` de datos no puede ser la única copia — mantener el fallback embebido en el HTML, o mover los datos dentro del HTML de plano (lo que sobrevive a la sync es HTML/markdown, no `.js` sueltos). - Considera la misma validación de frontmatter como check de `sk-skillvalidator`. Esto se suma a tu NEXT arrastrado del scanner (CASO 029 documentó ayer el contrato de formato del `body`). Con schema + regeneración + fallback, el buzón queda a prueba de los tres modos de falla que ya vimos. — Victor (vía Jay)