BACKLOG - elm-st-web

April 6, 2026 · View on GitHub

Leyenda

  • Prioridad: P0 (crítico), P1 (alto), P2 (medio), P3 (bajo)
  • Estado: TODO, DOING, DONE, BLOCKED

Estado de cierre operativo

  • Fecha de cierre: 6 abril 2026.
  • Cierre: proyecto cerrado para migracion/hardening/portfolio; tareas TODO restantes quedan como evolucion futura no bloqueante.
  • Indexacion externa: cerrada como verde tecnico / ambar externo aceptado; Bing indexa la home y Google mantiene las 11 URLs como descubiertas sin bloqueo tecnico accionable.

Plataforma y migración

IDPrioridadEstadoTareaCriterio de aceptación
PLAT-001P0DONEConfigurar netlify.toml baseDeploy preview funcional en Netlify
PLAT-002P0DONEDefinir _redirects para rutas legacyNo hay 404 en rutas públicas existentes
PLAT-003P0DONEDefinir _headers de seguridadHeaders activos en producción
PLAT-004P0DONEMigrar formulario de php/submit.php a solución Netlify FunctionsEnvío y recepción verificados vía submit-contact + Turnstile server-side
PLAT-005P1DONEConfigurar dominio elmst.ibaifernandez.com en Netlify DNSDominio principal resolviendo en Netlify
PLAT-006P1DONEAñadir CI bloqueante (quality-gate)Pipeline ejecuta checks automatizados
PLAT-007P0DONEEliminar bucle de redirección en /en//en/ responde 200 sin ERR_TOO_MANY_REDIRECTS
PLAT-008P1DONEActivar entrega por email del formulario (Resend)Envío válido confirmado por correo en producción (submit-contact + Resend)
PLAT-009P0DONEConsolidar gobernanza de GitHub (main protegida + PR + Quality Gate)Ruleset Main Protection activo con PR obligatorio + check quality + bloqueo de force push/delete
PLAT-010P1DONEUnificar la experiencia 404 en ES/EN bajo el 404.html global de Netlify/ruta-inexistente y /en/ruta-inexistente responden 404 con header actual, CTA de dossier y assets cargados

SEO

IDPrioridadEstadoTareaCriterio de aceptación
SEO-001P0DONEActualizar robots.txt al dominio nuevoSitemap: correcto y rastreable
SEO-002P0DONERegenerar sitemap.xml con URLs finalesURLs válidas y status 200
SEO-003P1DONEAñadir canonical en todas las páginas100% páginas con canonical correcto
SEO-004P1DONEAñadir Open Graph y Twitter cardsPrevisualización social consistente
SEO-005P1TODOCorregir títulos/descripciones duplicadas o débilesMetadata única por URL indexable
SEO-006P1DONEAñadir hreflang ES/EN cuando esté publicado el bilingüeCobertura internacional sin canibalización
SEO-007P0DONEDecisión de negocio sobre expiración de elmst.netRiesgo SEO aceptado: dominio no se renueva y proyecto queda como pieza de portfolio
SEO-008P1DONEActivar gobernanza inicial de indexación en Google Search Console y Bing Webmaster ToolsPropiedades activas y sitemap productivo enviado a ambas plataformas
SEO-009P1DONERevisar cobertura inicial post-alta de herramientas webmasterCierre 6 abril 2026: Google/Bing aceptan sitemap sin errores; Bing indexa la home; Google mantiene URLs descubiertas sin indexar como latencia externa aceptada

Accesibilidad

IDPrioridadEstadoTareaCriterio de aceptación
A11Y-001P0DONECorregir alt vacíos/no existentes en imágenes críticas0 img sin nombre accesible en rutas principales
A11Y-002P1TODORevisar jerarquía de encabezados y landmarksEstructura semántica válida por página
A11Y-003P1DONEEtiquetado y validación accesible del formularioInputs con nombre accesible y validación activa
A11Y-004P2DOINGVerificar contraste y estados de focoCumplimiento WCAG AA en navegación principal
A11Y-005P1DONEEliminar rule exception de color-contrast en axeAxe pasa sin exclusiones

Rendimiento

IDPrioridadEstadoTareaCriterio de aceptación
PERF-001P0DONEComprimir/modernizar imágenes pesadasReducción significativa del peso total
PERF-002P1DONEEliminar activos residuales (Thumbs.db, duplicados)Repositorio limpio de basura binaria y artefactos legacy sin uso
PERF-003P1DONERevisar carga de JS/CSS y defer en no críticosMenor blocking time inicial
PERF-004P2DONEDefinir budget por páginaBudget documentado en performance-budgets.json y validado por test:budgets
PERF-005P0DONESubir Lighthouse a umbral de CItest:lighthouse pasa en 10 rutas auditadas (ES/EN + dossier)
PERF-006P1DONEReducir dependencia de fuentes externas en render críticoMontserrat servido en local con font-display: swap y menor variabilidad de LCP
PERF-007P1DONEConvertir umbrales Lighthouse en budgets de release por rutaPresupuesto técnico publicado y auditado por release (npm run report:release)
PERF-008P2DONEEjecutar barrido final de residuos legacy del repositorioEliminados assets unreferenced de vendor/, videos/, dist/ y restos no usados de rs-plugin/ sin regresión en quality:ci

Seguridad

IDPrioridadEstadoTareaCriterio de aceptación
SEC-001P0DONEEliminar dependencias por http://0 mixed content
SEC-002P0DONESustituir flujo PHP sin saneado robustoValidación server-side implementada
SEC-003P1DONERevisar enlaces externos target="_blank" con rel seguro100% enlaces externos endurecidos
SEC-004P1TODOGestionar API keys expuestas en frontendNingún secreto sensible en HTML/JS público
SEC-005P2DONEEstabilizar checker de enlaces externos ante anti-bot (allowlist)test:links estable en CI con externos habilitados
SEC-006P1DONEIntegrar captcha invisible opcional para formulario (Turnstile + verificación serverless)Captcha activo al definir TURNSTILE_SITE_KEY y TURNSTILE_SECRET_KEY en Netlify
SEC-007P0DONEActivar Turnstile en producciónFormulario bloquea envíos bot y mantiene envío válido en ES/EN vía /.netlify/functions/submit-contact

Calidad de código y contenido

IDPrioridadEstadoTareaCriterio de aceptación
QLT-001P1DONECorregir errores de marcado HTML detectadosValidación HTML sin errores críticos
QLT-002P2TODOUnificar copy y geografía de marca (Bogotá/Colombia/Ecuador)Mensaje consistente en todo el sitio
QLT-003P2DONECorregir enlaces rotos/malformados (https://https://...)0 enlaces malformados
QLT-004P1DONEImplementar regresión visual baselineSnapshots versionados y passing
QLT-005P2DONEFijar versión de Node para desarrollo local.nvmrc presente y CI alineado
QLT-006P1DONEAlinear snapshots visuales por plataforma en CIBaselines chromium-linux versionados y test:visual estable en GitHub Actions
QLT-007P1DONERefrescar baseline Linux de Home tras cambio de navegación (selector idioma)home-*-chromium-linux.png actualizado y Quality Gate desbloqueado
QLT-008P1DONERe-sincronizar baselines visuales tras hardening de carga tipográfica/sliderBaselines chromium-darwin y chromium-linux regenerados y test:visual estable

Internacionalización (i18n)

IDPrioridadEstadoTareaCriterio de aceptación
I18N-001P0DONEDefinir estrategia bilingüe ES/EN (rutas, SEO, QA)Documento de arquitectura i18n aprobado
I18N-002P0DONECrear rutas EN equivalentes para páginas públicasParidad funcional ES/EN
I18N-003P0DONETraducir copy EN aprobado por negocio100% rutas públicas con versión EN operativa
I18N-004P1DONEQA bilingüe (links, sitemap, hreflang, Lighthouse)Gate de calidad pasa en ES y EN
I18N-005P1DONEExponer selector visible de idioma en navegaciónCambio ES/EN accesible desde botón flotante en todas las rutas públicas
I18N-006P2DONEReplicar patrón de selector flotante tipo portfolio (pelotita abajo izquierda)Selector flotante con bandera y fallback accesible en navegación legacy

Observabilidad y documentación

IDPrioridadEstadoTareaCriterio de aceptación
OBS-001P1TODOMigrar tracking UA a GA4 o alternativaEventos base verificados en tiempo real
OBS-002P2TODODefinir panel mínimo de KPIsDashboard con tráfico y conversiones
OBS-003P1DONEIntegrar monitoreo de errores frontend (Sentry o equivalente)Errores JS críticos visibles con contexto y alertas
OBS-004P1DONEConfigurar monitoreo de uptime externoAlertas automáticas ante caída de elmst.ibaifernandez.com
OBS-005P1DONEConfigurar reglas de alertado P1/P2 en Sentry para reducir ruidoReglas activas en production (P1: 10/15m, P2: 3/60m) y regla por defecto de alto ruido desactivada
DOC-001P1DONECrear y mantener CHANGELOG.mdHistorial de releases y cambios disponible
DOC-002P1DONEMantener ROADMAP.md y BACKLOG.md al díaEstado real reflejado tras cada iteración
DOC-003P1DONEPublicar informe de estado por iteraciónResumen técnico + riesgos + resultados de tests por ciclo
DOC-004P1DONEProgramar ejecución semanal automática de Quality GateWorkflow Quality Gate corre por schedule y reporta estado
DOC-005P1TODOFormalizar revisión manual mensual de QA CSVIssue mensual con checklist desktop/mobile y owner asignado
DOC-006P1DONEGenerar reporte técnico versionado por releaseArchivo de release con métricas de calidad, SEO, seguridad y pruebas
DOC-007P1DONEPublicar dossier técnico web ES/ENdossier-tecnico.html y en/technical-dossier.html disponibles en sitemap
DOC-008P1DONEConsolidar documentación y QA bajo docs/Markdown operativos, QA CSV y reportes versionados centralizados con rutas actualizadas
DOC-009P1DONEPublicar runbook de indexación y reflejarlo en el dossier técnicoRunbook versionado en docs/ y narrativa pública actualizada en ES/EN