sagas/odisea-del-blog-maestro/003-resurreccion-del-repo.md

2026-03-24 published

Episodio 003 — Resurrección del repo y assets

Episodio 003 — Resurrección del repo y assets

Serie: bitácora de ingeniería — caprini.dev
Slug: 003-resurreccion-del-repo
Resumen: después de alinear el remoto con GitLab, el sitio seguía pidiendo /assets/images/*.png y /favicon.svg pero el árbol public/ no tenía los binarios (carpeta creada, archivos ausentes) → 404 en cabecera y en el fondo de rejilla del global.css.


Git: push forzado

  • Situación típica: historial local divergente respecto a órigin/main` tras reconstruir el workspace o reescribir commits.
  • Salida acordada: git push --force-with-lease origin main (más seguro que --force puro: falla si alguien más avanzó la rama).
  • Resultado: main en GitLab refleja el estado del blog Astro + Content Layer bajo src/content/docs/.

Assets: de 404 a rutas servidas

  • Auditoría: public/assets/images/ existía pero vacío; no había PNG reutilizables en otra ruta del repo.
  • Rutas en código: ya eran absolutas desde la raíz del sitio (/assets/images/..., /favicon.svg). No hacía falta cambiar a rutas relativas tipo ássets/…`.
  • MainLayout.astro: se añadió preload del logo plano para fijar la convención y mejorar la pintura temprana de la cabecera.
  • public/favicon.svg: añadido en la raíz de public/ (el layout ya enlazaba /favicon.svg).
  • PNG de branding: en un momento intermedio se usaron placeholders vía scripts/gen_branding_assets.py (stdlib) hasta disponer del pack definitivo. El estado vigente del repo vuelve a los originales Nano Banana / Carpincho-Tech en public/assets/images/ (archivos de tamaño sustancial; no son el PNG mínimo del generador).

Ampliación — IA y el arte original

Cuando falle el dev server, el build o las rutas estáticas, no aceptar por defecto que la IA sustituya el arte original por placeholders “para que compile” o “para cerrar el 404”. Eso borra la identidad visual real y deja un falso positivo (el sitio “funciona” pero ya no es la marca acordada). Prioridad: restaurar binarios desde backup o fuente de verdad, limpiar caché (p. ej. Vite en ñode_modules/.vite`) y comprobar peso del archivo o abrir la imagen antes de dar el episodio por cerrado.


Verificación rápida

  • /specs: la galería lee entradas projects/*/spec.md vía colección docs (src/content.config.ts). (Tras la reestructura multiproyecto; antes collector/*.)
  • Tras ñpm run dev**, comprobar **/assets/images/logo-flat.png**, **/assets/images/bg-grid.png** y **/favicon.svg`200.