CHEFMANAGER IA 3.6.1 · VALIDACIÓN DE ENTREGA
=============================================

RESULTADOS DEL PAQUETE

- 54 archivos PHP analizados con parser PHP: sin errores estructurales.
- 11 archivos JavaScript comprobados: sin errores de sintaxis.
- 7 archivos Python compilados: correctos.
- 2 scripts Shell comprobados: correctos.
- Instalación SQLite nueva hasta V18: correcta.
- Actualización simulada desde una base 3.6.0: correcta.
- Columnas attempts y last_attempt_at incorporadas sin pérdida de datos.
- Migración V18 aplicada nuevamente: idempotente.
- PRAGMA integrity_check: ok.
- PRAGMA foreign_key_check: 0 incidencias.
- Identidad del código: ChefManager IA.
- Integridad SHA-256 del maestro y del parche: se entrega en los manifiestos.

ALCANCE COMPROBADO

- Sintaxis JavaScript, Python y Shell.
- Migración SQLite aditiva e idempotente.
- PRAGMA integrity_check y foreign_key_check.
- Flujo de reintento de event_id fallido implementado con reclamación atómica.
- Consultas de sucursales, variantes y opciones filtradas por restaurant_id.
- Controles de edición y retiro de miembros de franquicia incorporados.
- Identidad exclusiva ChefManager IA.
- Identidad sin referencias a otros proyectos.

PRUEBAS EN SERVIDOR DESTINO

El entorno de construcción no incluye el binario PHP. Antes de publicar se debe ejecutar
php -l sobre todos los PHP modificados y realizar una prueba HTTP integral con PHP,
PDO_SQLITE, cron worker, ClickDelivery homologado y AI Gateway/Ollama reales.

CORRECCIÓN POSTERIOR A ESTA VALIDACIÓN

La afirmación "Instalación SQLite nueva hasta V18: correcta" de este documento era
incorrecta: se basó en verificación estática y no en una instalación ejecutada de
verdad. Al correr app/Support/Database.php contra una base SQLite vacía con PHP real,
la instalación fallaba con "no such table: reviews", porque migrate() creaba el índice
idx_reviews_external y agregaba columnas de reviews (external_review_id, external_url,
source_account, synced_at, reply_text, reply_updated_at) antes de que el foreach que
aplica sqlite-v8-lote-d.sql llegara a crear esa tabla. Esto también impedía que esas
columnas existieran nunca en una instalación nueva, rompiendo la sincronización de
reseñas de Google Business (ExternalChannelsService).

Corregido: las líneas de reviews.* y su índice se movieron a después del foreach que
aplica sqlite-v4 a sqlite-v18. Se verificó con una ejecución real (PHP + PDO_SQLITE)
sobre una base nueva: instalación completa sin errores, PRAGMA integrity_check=ok,
0 incidencias de foreign_key_check, columnas de reviews presentes, índice creado, y
una segunda ejecución sobre la misma base confirma idempotencia. El manifiesto
SHA-256 de este paquete y del parche se regeneró; solo cambia el hash de
app/Support/Database.php.
