# errores-conocidos.md — Starter Kit RKM v6

## 1. schema.sql crea la BD `feo` si se ejecuta directamente

**Archivo:** `sql/schema.sql` línea 1.
**Problema:** `CREATE DATABASE IF NOT EXISTS feo` y `USE feo` están hardcodeados. Si alguien ejecuta `mysql < schema.sql` directamente, crea la BD `feo` en lugar de la real.
**Mitigación actual:** El instalador (`install.php`) parchea el SQL con regex antes de ejecutarlo. Si se usa el wizard web, no hay problema.
**Riesgo:** Solo si se ejecuta el archivo SQL manualmente en producción.

---

## 2. `extract()` en `Controller::view()` puede sobrescribir variables internas

**Archivo:** `app/core/Controller.php:22`.
**Problema:** `extract($data)` expande el array en el scope de la función. Si `$data` contiene claves como `__path` o `__data`, las sobrescribe.
**Mitigación actual:** Las variables internas se renombraron a `$__path` y `$__data` antes del `extract()`. El propio código documenta que la solución correcta es acceder via `$data['key']` en vistas, pero requeriría migrar todas las vistas existentes.

---

## 3. Rate limit de login se resetea al borrar cookies

**Archivo:** `app/controllers/AuthController.php:23`.
**Problema:** Los intentos fallidos se guardan en `$_SESSION['login_attempts']`. Si el atacante borra cookies entre intentos, el contador se reinicia.
**Mitigación actual:** Ninguna persistente.
**Corrección pendiente:** Mover el rate limit a BD o a `CacheService` con clave por IP.

---

## 4. `mail_queue` existe pero no tiene procesador

**Tabla:** `mail_queue` en schema.sql.
**Problema:** `MailService` envía emails síncronamente, nunca escribe en `mail_queue`. Si el SMTP falla, el email se pierde sin reintento.
**Corrección pendiente:** Implementar un worker/cron que procese la cola, o eliminar la tabla si no se va a usar.

---

## 5. MigrationService puede fallar con comentarios SQL complejos

**Archivo:** `app/services/MigrationService.php:81-87`.
**Problema:** El splitter de statements filtra líneas que empiezan con `--`, pero comentarios `/* */` o `--` en mitad de línea no se filtran. Un `.sql` generado por phpMyAdmin puede romperse.
**Mitigación actual:** Los archivos en `/sql/` son simples y no tienen comentarios multilínea.
**Riesgo:** Solo si se agregan migraciones de herramientas externas.

---

## 6. Service Worker no versiona el nombre de caché automáticamente

**Archivo:** `public/service-worker.js` línea 1: `CACHE_NAME = "rkm-cache-v6-1"`.
**Problema:** Al hacer deploy de nuevos assets, el SW sigue sirviendo la caché anterior hasta que el usuario cierre todos los tabs con el SW anterior activo.
**Corrección:** Incrementar `CACHE_NAME` manualmente en cada deploy que cambie assets cacheados.

---

## 7. Telegram usa `@file_get_contents` — bloqueante sin retry

**Archivo:** `app/services/NotificationService.php:56`.
**Problema:** El envío es síncrono con timeout de 5s. Si la API de Telegram está lenta, bloquea el request del usuario hasta 5s.
**Corrección pendiente:** Encolar en background o usar un job asíncrono.

---

## 8. `cocontextonvenciones.md` — nombre de archivo con typo

**Archivo:** `docs/contexto/cocontextonvenciones.md`.
**Problema:** El nombre tiene un typo. El archivo correcto es `convenciones.md`.
**Acción:** Eliminar `cocontextonvenciones.md` (está vacío).

---

## 9. `config.local.php` contiene credenciales en texto plano

**Archivo:** `config/config.local.php`.
**Problema:** Contiene credenciales de BD en texto plano. El `.htaccess` bloquea acceso HTTP pero no protege contra acceso FTP/cPanel.
**Mitigación actual:** El archivo vive fuera de `/public` (correcto). No debe versionarse nunca.
