# Pendientes

Único lugar donde se listan los pendientes del proyecto — limpiezas sueltas de una línea y el
resumen de las tareas grandes en curso. Cada fuente técnica (por qué existe el pendiente, cómo se
verifica) sigue viviendo en su doc de subsistema; acá solo el checklist accionable + link.

**Regla:** un pendiente nuevo se agrega ACÁ, no como tabla suelta en otro doc. Si necesita
justificación técnica larga, esa parte va en el doc del subsistema y acá queda el resumen + link.

## Limpieza y tareas sueltas

| | Pendiente | Detalle |
|---|---|---|
| 🟢 | Reorganizar las 43 migraciones sueltas en la raíz de `database/migrations/` (145 en total: 43 → `module_editor/` nuevo (41) + `module_core/` (+1) + `module_guest/` (+1)) | ✅ Hecho (2026-09-24, rama `pivot/reorganizar-migraciones`): `git mv` en commit solo de paths (0 líneas de diff), `loadMigrationsFrom(module_editor)` agregado en `AppServiceProvider`, y las 43 rutas actualizadas en `pint.json → notPath` (siguen protegidas, no se sacaron del array). Detalle del reparto y la clasificación de los casos ambiguos (`media`, `site_backups`, `null_orphan_logo_short_paths`) en `docs/IMPORTAR-CONTENIDO-EN-PROD-EN-CALIENTE.md`. |
| 🟢 | Borrar ramas `pivot/editor-web` y `merge/production-fix-fusion` | ✅ Hecho (2026-09-24, local + remoto). `pivot/editor-web` estaba confirmada contenida en `origin/production` y `origin/development`. `merge/production-fix-fusion` **no** estaba contenida en ninguna (1101 archivos de diferencia contra `production`, no era ancestro de nada) — se borró de todos modos por decisión explícita del usuario, nombrándola, tras la advertencia. Quedan solo `development`, `production` y `master`. |
| 🟢 | 5 typos en nombres de producto del carousel de "Additional Accessories": `dalo tex`, `Cetury tex`, `Cunting lens`, `urex Yarn`, `Cilinders and Tensloners` | ✅ Decisión del usuario (2026-09-18): **no corregir**. Es contenido de catálogo que ya nace sin traducir/sin revisar en todos los sectores por igual — no es deuda de la migración. Se deja documentado en `docs/MIGRACION-VISTAS-DB-PENDIENTES.md` §7 por si el negocio decide corregirlo algún día. |
| 🟢 | `pint.json` tiene `notPath` con las 145 migraciones existentes hoy (2026-09-21), para que Pint no les meta reformateo cosmético sin relación con la tarea en curso | ✅ Hecho. Es una lista congelada por nombre: cualquier migración **nueva** no está ahí, así que Pint sí la formatea. Verificado con `pint --test` sin path (equivalente a como corre `--dirty`): 0 migraciones en el output; un archivo de prueba fuera de la lista sí fue evaluado. Cuando se reorganicen los directorios (fila de arriba), sacar del array las rutas que se muevan o queden vacías. |
| 🟢 | ~~Correr `./vendor/bin/sail bin pint` (sin `--dirty`) una vez sobre todo el proyecto~~ | ❌ Descartado (2026-09-23): `CLAUDE.md` ahora prohíbe correr Pint sobre todo el proyecto — solo `--dirty` sobre lo que la tarea tocó, una vez al cerrarla. Los ~460 archivos con detalles de estilo pendientes se quedan como están; no se van a reformatear en bloque. |
| 🟢 | Revisar bien el comando `storage:clean-unused` — comparación por `basename()` da falsos positivos reales | ✅ Causa raíz confirmada y arreglada (2026-09-28): `shared_sections.content` (secciones reutilizables) nunca estaba en `$jsonSources` — de los 45 archivos borrados en el incidente, 7 (`pages/`) sí eran falsos positivos reales por esto; los 38 de `blogs/` eran huérfanos genuinos (verificado contra dump real de producción del 26/09). Fix + detalle completo en `docs/CLAUDE-COMANDOS-ARTISAN.md`. |
| 🟢 | Borrar el comando `machine-catalogues:move-to-canonical-path` | ✅ Hecho (2026-09-28). Corrido en producción (confirmado por el usuario), archivo `app/Console/Commands/MoveMachineCataloguesToCanonicalPath.php` borrado — su output ya vive en `machine_catalogues.url`, no hacía falta para `migrate:fresh`. |

## Tareas grandes en curso (con doc propio)

- **Permisos y roles** — ✅ CERRADO (2026-09-18). Encabezado y checklist actualizados, verificado
  contra un dump real de producción: los 6 pasos de seeders/migraciones ya corrieron, las 4 acciones
  manuales están hechas, y los 3 usuarios `admin` se quedan como están (decisión del usuario, no
  migran a `machinery_manager`). Sin pendientes.
  → `docs/PERMISOS-ROLES-SEGURIDAD.md`

- **Correos multi-idioma según idioma preferido del usuario** — ✅ CERRADO (2026-09-21). T1-T4 +
  mejora de dashboards por rol en producción desde ~2026-07-28, en uso real hace más de un mes
  (confirmado por el usuario). Sin pendientes.
  → `docs/I18N-CORREOS-IDIOMA-USUARIO.md`

- **`LocaleTabs` sin round-trip para tabs de idioma** — ✅ CERRADO (2026-09-24, rama
  `pivot/locale-tabs-alpine`). `LocaleTabs` (campos planos) ya no pasa por servidor al cambiar de
  idioma; de paso se resolvió un bug real (dos `LocaleTabs` en la misma sección compartían estado)
  y se separó el TipTap mezclado con texto plano a `LocaleSwapEditor` en 5 sitios para no montar 6
  editores reales a la vez. Perfil `minimal` ampliado (underline/strike) aplicado a
  `cards_with_modal`. Probado con guardado real contra la DB, no solo en pantalla.
  → `docs/CLAUDE-PANEL-RENDIMIENTO.md` §20

  **Quedan 2 pendientes, fuera de alcance de esta ronda:**
  - `MachineResource:591` (representantes por división) y 3 sitios de `ProductSectorBlocks`
    (`officialRepresentative`, `imagesGrid`, `Carousel`) reusan `LazyTabs` a mano para simular
    pestañas de idioma — mismo round-trip lento del `LocaleTabs` viejo, pero sin TipTap de por
    medio (sin el riesgo de los 6 editores). No se tocó.
  - `cards_with_modal`: cambiar de pestaña "Modal Content" sigue costando ~1.4 MB/1.5s porque el
    modal completo y la tabla del relation manager se re-renderizan juntos (el "piso" documentado
    en §12 del mismo doc). Bajarlo de verdad requeriría separar el bloque del componente que tiene
    la tabla — arquitectura más grande, ya probada una vez sin éxito suficiente (§6/§7).
