# REGLAS FIJAS DE EJECUCIÓN — CESCAC (orden permanente del dueño, 2026-07-18)

> **Estas reglas se aplican SIEMPRE, ANTES de ejecutar cualquier cosa, sin que el dueño las repita.**
> Fuente única: este archivo (repo) + copia en vps.cescac.com/cerebro/. Todo agente las lee al arrancar.

## ⭐ FLUJO MAESTRO POR MENSAJE v2 (orden permanente 2026-07-19 — reemplaza v1 2026-07-18; se cumple en CADA mensaje del dueño; si no se cumple, el trabajo NO tiene validez)

> Versión enfocada con diagramas mermaid: `cerebro/flujo.md` / renderizado en
> `https://vps.cescac.com/cerebro/flujo.html`.

1. **ANALIZAR A FONDO** el mensaje completo → dividir en TAREAS numeradas (skill divisor-tareas). NADA se pasa por alto — cada frase, cada pedido, cada referencia. Mostrar la tabla de tareas detectadas.
2. **CONSULTAR LOS 4 CEREBROS + HUB VPS**: `codebase-mcp`/`codegraph` (símbolos/call-graph del código), `notebooklm` (research grounded), `obsidian` (vault de notas), `graphify` (grafo de conocimiento oficial — código+docs+conceptos, `cerebro/grafo/`) + `vps.cescac.com/cerebro` (hub: memoria persistente, handoff, tablero, reglas). Ahí vive el contexto — DE AHÍ sale qué hay y qué no. Dejar **EVIDENCIA explícita en el flujo/respuesta**: qué se consultó y qué devolvió cada cerebro (no solo decir "consulté", mostrar el hallazgo). No re-diagnosticar lo ya resuelto.
   - **2b. CONSULTAR `cerebro/lecciones.md`** (nuevo 2026-07-19, `https://vps.cescac.com/cerebro/lecciones.md` — append-only, whitelist): antes de ejecutar, revisar si el error/patrón que vas a tocar YA está documentado ahí (pixel ajeno, teal incorrecto, gemini-cli discontinuado, espacios en nombres de archivo en comandos shell, story-en-feed, superadmin secuestrado, IP fantasma en nginx, sobrescritura de archivos compartidos, escaping heredoc/SSH, falsa confianza de OCR, tablero sin lock, backups `.bak` huérfanos, tokens expuestos en logs/URL/servicio). **Prohibido repetir un error ya listado.** Si tu tarea produce un error/incidente nuevo (o casi lo repite), lo appendeas ahí mismo al cerrar (ver mecanismo de mantenimiento en `cerebro/voces-agentes.md` §QA).
3. **[CONDICIONAL] PRE-INTERVENCIÓN — agente AUDITOR primero**: si la orden es del tipo "revisa/mejora/audita X" (no un pedido de creación desde cero), ANTES de tocar nada se lanza un agente AUDITOR con el rol/profesión correspondiente al dominio (nivel top 0.01% mundial) que entrega una LISTA COMPLETA: pendientes, mejoras, errores, vulnerabilidades/seguridad. **De ESA lista nace el prompt master del ejecutor** (paso 4) — recién ahí hay intervención real. Si la orden NO es de este tipo (ej. "crea X nuevo"), se salta directo al paso 4 con el pedido tal cual.
4. **CREAR PROMPT MASTER** por tarea: el prompt de ejecución completo que recibirá cada agente ejecutor — incluye **contexto + reglas + skills/herramientas necesarias + entregable + verificación**. Si hubo auditor (paso 3), nace de su lista de hallazgos, no del pedido original en crudo.
5. **CARGAR SKILLS/HERRAMIENTAS**: las skills/herramientas declaradas en el prompt master (paso 4) se invocan/inyectan explícitamente en el prompt del agente ejecutor antes de delegar — no se asume que el ejecutor "ya sabe" qué usar.
6. **DESIGNAR MODELO POR COMPLEJIDAD**: Opus/Fable PLANIFICA y orquesta; ejecutan Haiku (simple) / Sonnet (normal) / Opus-Fable (crítico), cada uno con el nivel de razonamiento que la tarea necesite. Regla de costo: tareas grandes → subagente barato; edits mínimos → inline.
7. **PARALELIZAR SIEMPRE**: dividir en tareas simultáneas, multiagente/multitarea, actuar como GRAN ORQUESTADOR (lanzar agentes independientes en paralelo, pipeline cuando hay dependencias).
8. **SKILLS + ROLES PRO (ejecución)**: el agente ejecutor ADOPTA el rol/profesión correspondiente al nivel top 0.01% mundial — análisis exhaustivo, que no se escape nada (ni lo que a otras IA se les escapa).
9. **AGENTE EVALUADOR SIEMPRE** (qa-reviewer): tras cada bloque de trabajo, un agente evalúa: vulnerabilidades, errores, que lo hecho esté BIEN, documentación completa, y detecta MEJORAS → las mejoras entran a la cola de tareas (siempre hay cola de mejoras tras terminar algo).
10. **VERIFICAR QUE SIRVA + LOOP**: probar que lo creado funciona de verdad (curl/SQL/test real); loop contra reglas y órdenes hasta cumplir (si falla, vuelve al paso 4 con lo aprendido). Al cerrar, la respuesta final se arma ECONÓMICA (delegar resúmenes a modelo barato tipo Haiku cuando aplique, salida tersa, skills de ahorro de tokens).
11. **TODO A MARKDOWN PRIMERO**: nunca leer documentos "normales" (PDF/imagen/Office) directo — procesarlos a markdown (markitdown/tesseract/pdfplumber) y trabajar sobre el .md. Ahorro masivo de tokens.
12. **CEREBROS COMPARTIDOS Y SINCRONIZADOS**: memoria persistente compartida entre TODOS los agentes — vps.cescac.com (hub), graphify (grafo), codebase-mcp/codegraph, obsidian (vault obsidian_cescac), notebooklm. El contexto vive en los cerebros: cargarlo de ahí, escribir de vuelta ahí. Incluye SIEMPRE: (a) **preguntar/proponer mejoras** al cerrar → `cerebro/voces-agentes.md` (append-only) + tarea nueva en el tablero si amerita ejecución; (b) **aportar 1+ idea de ingreso** legal → `cerebro/ideas-ingresos.md` (append-only, tarea recurrente `T-INGRESOS-PERPETUO` del tablero, sin dueño fijo).

## 0 · ANTES de ejecutar (checklist obligatorio)
1. **CARGAR CEREBROS**: memoria local (MEMORY.md) + CONTEXTO_MAESTRO.md + vps.cescac.com/cerebro/ + los docs AUDIT/diagnóstico del repo relevantes al tema. NO re-diagnosticar lo ya diagnosticado. NO repetir errores de feedback_autoaprendizaje.
2. **PLANEAR y DELEGAR**: Opus planifica; Sonnet/Haiku ejecutan (tareas grandes → subagente; edits mínimos → inline). 3 fallos → escalar tier.
3. **VERIFICAR MODO PRODUCCIÓN**: nada en staging/sandbox/DRY_RUN sin razón explícita. Si algo está en modo prueba en producción → es un BUG, reportar y arreglar.
4. **Backup antes de cada edit** (.bak_YYYYMMDD) + `php -l`/`py_compile` + **reset OPcache** (crm/sm/contable tienen validate_timestamps=0).
5. **Registrar** en docs/REGISTRO_CAMBIOS_CORE.md + cierre 5 campos + ✅ OK DR.

## 1 · ADS (regla dura permanente)
- **Tope $20/día TOTAL**: $5 GEOMED + $5 Alquiler Maquinaria + **$10 el resto de TODO lo que oferta CESCAC** (línea blanca, contable, finanzas, software, sublimados… rotación dentro de los $10). SOLO esas activas, cero stray. Sumar TODO antes de activar algo.
- **Objetivo SIEMPRE mensajes/conversaciones** (REPLIES / click-to-WhatsApp). Nunca tráfico/likes.
- **KPI duro: conversación ≤ $1.** Si una campaña pasa de $1/conversación → SE REESTRUCTURA TODO: población objetivo, creativo (gráfico/copy/reel), enfoque del anuncio. Iterar hasta lograr ≤$1 por cada producto/servicio.
- **Ruteo por número**: GEOMED → +593 98 147 0454 · Maquinaria → Wilson +593 99 194 4993 · resto → +593 93 923 0827. Cada anuncio a SU comprador ideal, nunca mezclar audiencias.
- Todo conectado: ads → CRM → páginas → contenido → redes (mismo mensaje, mismo embudo).
- Políticas Meta: sin promesas absolutas, "compactador vibratorio" (NUNCA "sapo"), CESCAC ALQUILA maquinaria.

## 2 · CRM / BOT VENDEDOR (regla dura permanente)
- **El bot DEBE conocer el catálogo real**: ítem con IMAGEN + PRECIO + link. Cotiza con eso, deriva con eso, cierra con eso. Nunca "no tengo" → deriva a humano.
- **SOLO Línea Blanca verifica stock — y SOLO al momento de CERRAR** (no como excusa para frenar la conversación: cotiza, captura datos, y el stock se confirma en paralelo al cierre). Los demás servicios NO verifican stock: siguen su flujo directo a cierre/agenda.
- Abrir con VALOR, nunca con muro legal (consentimiento pasivo/diferido, LOPDP por interés legítimo).
- Siempre damos el ÚLTIMO mensaje. Lead caliente → notificar al humano (+593 98 176 5440) + escribir sales_pipeline (lead→contactado→cotizado→vendido) para que la venta SE VEA.

## 3 · PAGOS (regla dura permanente)
- TODO en modo PRODUCCIÓN (NUVEI_ENV=prod, PAYPAL_ENV=live, PAYPHONE_STORE_ID set). Sandbox en producción = bug crítico.
- Toda confirmación de pago = verificación SERVER-SIDE (nunca confiar en ?status=paid de URL).
- Cambio en pasarela → probar con 1 cobro real chico ($1-2) antes de dar por cerrado.
- Secretos SOLO en .env, nunca en chat/log/commit.

## 4 · GENERADORES DE DINERO (regla permanente)
- Fábrica diaria VPS = pipeline ÚNICO (cron 6am, 3 productos/día, tope Gumroad 6+backlog). Verificar que corrió cada día.
- Publicar hasta el TOPE seguro de cada plataforma. Payhip sin tope. Gumroad 10/día ventana rotativa.
- Foco: canales CON tráfico propio que PAGUEN a Ecuador (Mercado Libre EC local · Amazon KDP + Creative Market + Redbubble global). Etsy/PromptBase/Stripe NO pagan a Ecuador — no insistir.
- Publicar ≠ vender: sin tráfico o sin compradores propios, no sumar más plataformas.

## 5 · CATÁLOGOS (regla permanente)
- Procesar catálogos de proveedores (imágenes/PDF WhatsApp) SIN tokens (tesseract/pdfplumber local).
- El catálogo alimenta: bot CRM (imagen+precio) + Meta/WhatsApp Catalog + Mercado Libre. Un solo origen, todos los canales.

## 5b · MARCA Y CONTENIDO (regla permanente 2026-07-18 · colores/tipografía actualizados 2026-07-19)
- **SIEMPRE usar los LOGOS ORIGINALES** de CESCAC y cada submarca (desde cescac.com/assets/logos/ o el banco oficial verificado HTTP 200). NUNCA generar/alucinar/improvisar un logo. Cada submarca tiene SU logo propio.
- **META-REGLA:** cada vez que el dueño repita algo mucho o dé una instrucción de gran atención → SE GUARDA COMO REGLA NUEVA aquí + memoria + cerebro VPS, sin que lo pida.
- **COLOR INSTITUCIONAL OFICIAL (verificado en Manual de Marca CESCAC.pdf, fuente única de verdad — ver `MANUAL_MARCA_CESCAC.md`): verde oscuro `#025338`** (CMYK C91 M39 Y81 K41 · RGB 2,83,56). **NO usar teal `#0d9488`** — el propio manual lo muestra como USO INCORRECTO explícito (pág. 16, "Cambios de Color", tachado con X roja). `#024F2D` (usado antes en CLAUDE.md global) es cercano pero no exacto — corregir a `#025338`.
- **Colores por submarca (anillo oficial):** Construcción `#DD9624` · Medicina `#3B9FD9` · Línea Blanca `#E7E6E6` · Tecnología `#215DA9` · Sublimación `#8E3089` · Market `#C05D61` · Taller Creativo `#48AE4D` / `#64328A` (dos variantes documentadas, rotulado duplicado en el manual — confirmar cuál aplica a cuál sub-línea con Anthony si hace falta precisión).
- **Tipografía oficial del manual: Century Gothic Bold (títulos) + Arial (cuerpo/párrafos).** Ni Playfair Display+Inter ni Outfit Black+Manrope (usados en creativos previos) coinciden con el manual — evaluar migración con Anthony antes de aplicar en producción.
- **Colores complementarios (libres, no reemplazan al institucional):** café `#64431A` · rojo `#E41C1A` · amarillo `#EED557` · naranja `#F08339` — solo para eventos/celebraciones.

## 2b · VENTANA 24H Y RESPUESTA TOTAL (regla permanente 2026-07-18)
- **NINGÚN lead queda sin responder. El ÚLTIMO mensaje SIEMPRE es nuestro.** Antes de que la ventana de 24h de WhatsApp expire → enviar mensaje de valor que la renueve (respetando topes anti-baneo y plantillas HSM).
- **Única forma de dejar de escribirle a un lead:** que diga NO / no quiere / no le interesa / no molestar (opt-out explícito). Ahí se marca y no se le escribe más.
- El bot detecta: estado de humor, intención de compra, cuándo delegar a asesor humano; envía lo que el cliente pida, guía, y hace marketing de TODAS las líneas CESCAC.
- Responder puede delegarse a IA barata (deepseek vía LiteLLM — cero tokens Claude) con las reglas del prompt vendedor.
- **TODOS los servicios venden automático. ÚNICA excepción: Línea Blanca** confirma stock ANTES de cerrar — pero si el cliente pregunta por un ítem, el bot SÍ consulta el catálogo y envía las opciones REALES con link + precio + imagen.

## 0c · AGENTE PROBADOR (regla permanente 2026-07-19)
- **Nada se marca "realizado" sin que un agente PROBADOR lo ejercite de verdad** (curl/flujo real/SQL/visual) ANTES de la validación final. El evaluador QA no solo lee: PRUEBA. Si la prueba falla → vuelve al ejecutor (loop). Toda entrega incluye la evidencia de la prueba + mejoras identificadas a la cola.
- **0c-bis · MANTENIMIENTO DE `cerebro/lecciones.md` (regla permanente 2026-07-19):** el agente evaluador QA de CADA ronda, además de probar y buscar mejoras, revisa si el trabajo de esta ronda dejó al descubierto un error/incidente NUEVO (o una casi-repetición de uno ya listado) y lo appendea a `cerebro/lecciones.md` (formato `fecha | error/incidente | causa raíz | regla para no repetir | quién`, nunca reescribe entradas previas). Así la lista crece sola con cada ronda, sin depender de que un agente se acuerde de hacerlo manual. Ver protocolo completo y quién más puede appendear en `cerebro/voces-agentes.md`.

## 0e · REGISTRO DE AGENTES + VERIFICAR-ANTES-DE-CREAR (regla permanente 2026-07-19)
- **Cada agente que se lance queda REGISTRADO**: qué agente fue, qué tarea tomó, qué hizo y dónde quedó su entregable (REGISTRO_CAMBIOS_CORE + tablero VPS). Sin registro, el trabajo no cuenta.
- **TODA invocación de agente se registra ADEMÁS en `cerebro/bitacora.md`** (append-only, ampliación 2026-07-19): fila `fecha | agente/rol | qué hizo | entregable (ruta/URL)` al cerrar. `REGISTRO_CAMBIOS_CORE.md` sigue siendo la fuente completa (párrafo denso con evidencia); `bitacora.md` es la vista resumida y escaneable — ambas se llenan, ninguna reemplaza a la otra.
- **ANTES de proponer/pedir/empezar CUALQUIER tarea nueva**: buscar primero si YA se hizo o está en curso (REGISTRO_CAMBIOS_CORE, tablero, docs *_20260*.md del repo, memoria). Si ya existe → NO repetir: usar lo hecho, y si hay duda de si continuar/rehacer → CONSULTAR al dueño. Repetir trabajo hecho = gasto prohibido.
- Ante cualquier duda de "¿esto ya existe?" → verificar en los cerebros ANTES de actuar. Pilas.

## 0d · ORQUESTACIÓN POR CAPACIDAD (regla permanente 2026-07-19)
- El orquestador DERIVA cada tarea al agente por CAPACIDAD: Haiku/deepseek (conversiones, lecturas, resúmenes) · Sonnet (código/contenido) · Opus/Fable (arquitectura/crítico) · **Codex** (builds de features/apps vía plugin) · **Hermes** (tareas 24/7 del tablero) · **Cursor/Antigravity** (toman tareas del tablero, modelo PULL). Todos leen vps.cescac.com (prompt-maestro + reglas-fijas + tablero) y reportan allí.
- La CONVERSIÓN a markdown (regla 0b) la hace SIEMPRE el tier más barato posible: haiku, deepseek vía LiteLLM, o herramienta local gratis (markitdown/pdfplumber/tesseract) — NUNCA Opus/Fable. Así también se procesa lo de imágenes sin quemar tokens caros.
- Ahorro de tokens SIEMPRE: respuestas tersas, resúmenes por tier barato, contexto desde cerebros (no re-derivar).

## 0b · MARKDOWN-FIRST (regla permanente, TODOS los agentes)
- **TODO archivo, sea cual sea (PDF, DOCX, XLSX, PPTX, imagen con texto, HTML, export), PRIMERO se procesa a MARKDOWN** (skill markitdown o equivalente) y se trabaja desde el .md. NUNCA leer documentos pesados directo — ahorra tokens de forma tremenda y estandariza el contexto.
- Los .md resultantes se guardan junto al original o en el cerebro correspondiente para reuso.

## 6 · PROHIBIDO REPETIR (errores ya cometidos — ver feedback_autoaprendizaje)
- Culpar a los ads sin verificar optimization_goal real (son REPLIES, traen ~128 conv/mes; la fuga era el bot).
- Diagnosticar la firma SRI por CLI (falso positivo — verificar por camino web, open_basedir).
- Lanzar campañas nuevas sin pausar/sumar las existentes (sobregasto).
- Decir "no se puede" sin intentar; decir "hecho" sin verificar.
- Olvidar reset OPcache tras deploy PHP.

## 7 · CHECKLIST PRE-PUBLICACIÓN (regla permanente 2026-07-19 — obligatoria antes de publicar CUALQUIER creativo/campaña/ad, cualquier línea)

> Nace de `VALORACION_PROFUNDA_20260719.md` (5 fallas reales del mismo día: GEOMED con logo antiguo,
> páginas propias de GEOMED invisibles al publicador, 2 campañas con objetivo LINK_CLICKS quemando
> 82% de las impresiones por 1 conversación, 31+ leads de ads con `servicio` mal clasificado desde
> el 11-jul, notificaciones WhatsApp al admin sin política de canal). Patrón común: verificar que
> algo EXISTE (HTTP 200 / permiso `granted` / código compila) NO es lo mismo que verificar que es
> CORRECTO. Este checklist obliga la segunda verificación, siempre, antes de publicar.

Antes de publicar cualquier post/story/reel/ad de CUALQUIER línea o submarca, verificar los 7 puntos:

1. **LOGO verificado contra el sitio VIVO de SU marca:** comparar VISUALMENTE (no solo HTTP 200)
   el logo a usar contra el logo real que hoy vive en el sitio propio de esa submarca (ej.
   `geomedhc.com/img/logo.png` para GEOMED — NUNCA un archivo declarado "oficial" en un README sin
   re-verificar). Si la submarca no tiene sitio propio, usar `cescac.com/assets/logos/` tal cual.
   Documentar la URL fuente comparada en el registro del cambio.
2. **WHATSAPP correcto de SU línea** (§1 de este documento): GEOMED → `+593 98 147 0454` ·
   Maquinaria → Wilson `+593 99 194 4993` · resto → `+593 93 923 0827`. Nunca mezclar.
3. **PALETA correcta:** verde institucional `#025338` + acento oficial de la submarca (tabla §5b).
   Cero teal `#0d9488` en cualquier notación (hex, `rgb()`/`rgba()` con sus valores decimales, `hsl()`).
4. **POLÍTICA META ok:** sin promesas absolutas, sin atributos personales, sin antes/después de
   salud, texto <20% del área de la imagen.
5. **DESTINO DE PÁGINA correcto** (CESCAC vs GEOMED vs Cescac.old vs cualquier submarca con página
   propia): verificar a qué `page_id`/`IG business id` apunta el script de publicación. Si la
   submarca tiene página propia administrada por el token (confirmar en `/me/accounts`), el post
   DEBE ir ahí — nunca a la página madre CESCAC bajo un subtítulo. Si el publicador (feed, reels,
   historias — los 3 pipelines) no soporta rutear por página, es BLOQUEANTE: no publicar hasta
   extenderlo (mapa `servicio → page_id/ig_id`) o hacerlo manual a la página correcta.
6. **OBJETIVO DE CAMPAÑA correcto** (si es ad pago, no orgánico): objetivo = mensajes/conversaciones
   (`OUTCOME_ENGAGEMENT`/MESSAGES o equivalente), **NUNCA** `LINK_CLICKS`/tráfico/likes — verificar
   antes de activar o reactivar cualquier campaña, cruzando contra el KPI duro de §1 (≤$1/conversación).
7. **ATRIBUCIÓN → SERVICIO conectada:** si el post/ad alimenta al bot vía Click-to-WhatsApp,
   confirmar que existe (o se crea) un mapeo `anuncio_id/campana_id → servicio` que sobreescriba el
   valor por defecto de la conversación — nunca depender solo de que el cliente escriba una keyword
   reconocible en su primer mensaje.

## 8 · CEREBROS SIEMPRE ACTUALIZADOS (regla permanente 2026-07-19 — orden en vivo del dueño: "no puede volver a pasar que los cerebros estén desactualizados")
- Los **4 cerebros** — `codegraph` (índice SQLite de símbolos/call-graph, se actualiza solo vía file watcher), `graphify` (grafo código+docs en `graphify-out/`), `obsidian` (vault `obsidian_cescac/`), `notebooklm` (research grounded, sesión MCP) — **deben estar frescos SIEMPRE** (capa estructural con <24h de atraso).
- **Mantenimiento nocturno OBLIGATORIO**: tarea programada `CESCAC_Cerebros_Nightly` (Windows Task Scheduler, esta PC, diaria) corre `graphify update` sobre `CRM_CESCAC`, appendea resultado a `CEREBROS_AUTOUPDATE_LOG.md` (repo) y dispara alerta por correo (`notificador_email.php` en el VPS, SOLO si falla) a `familiacescac@gmail.com`. Ver script `scripts/cerebros_nightly_update.ps1`.
- La capa **semántica** de graphify (LLM) requiere `GEMINI_API_KEY`/`GOOGLE_API_KEY` — mientras no exista esa key, el nocturno SOLO refresca la capa estructural/AST (sin LLM, gratis) y lo documenta explícitamente en el log; NO se inventa ni se fuerza una key.
- **Cualquier agente que detecte un cerebro desactualizado >24h debe ACTUALIZARLO en el momento (si tiene el tool/permiso) o REPORTARLO como incidente** en `cerebro/lecciones.md` + `docs/REGISTRO_CAMBIOS_CORE.md` — nunca seguir de largo asumiendo que "ya alguien lo hizo".
- `obsidian` no tiene CLI de actualización — su "frescura" es la del vault en disco (`obsidian_cescac/`), que se actualiza junto con graphify/handoff. `notebooklm` es sesión-MCP (no cron-eable) — su chequeo de salud (`get_health`) lo hace el agente orquestador al usarlo, no un cron headless.
