diff --git a/sprints/sprint-8/ETAPA_0_PROMPT.md b/sprints/sprint-8/ETAPA_0_PROMPT.md
new file mode 100644
index 0000000..c6b6e21
--- /dev/null
+++ b/sprints/sprint-8/ETAPA_0_PROMPT.md
@@ -0,0 +1,268 @@
+# Sprint 8 — Etapa 0: Versionado profesional
+
+> **Tipo:** Infraestructura / Documentación
+> **Rama:** main
+> **Estimación:** 1-2 horas
+> **Dependencias:** ninguna — es la primera etapa del sprint
+
+---
+
+## Objetivo
+
+Establecer el ciclo profesional de versiones antes de abrir cualquier feature nueva:
+1. `CHANGELOG.md` con historial completo desde v0.1.0
+2. `package.json` actualizado a v0.8.0
+3. `AppFooter` visible en la app con la versión actual
+4. `simulador-web/CLAUDE.md` actualizado con la sección de versionado
+
+---
+
+## Contexto
+
+El producto está en producción en https://inq-roi.inqualityhq.com y https://process-cost-platform.pages.dev. No existe `CHANGELOG.md`. La versión en `package.json` tiene algún valor anterior (verificar). No hay componente de footer con versión visible en la UI.
+
+El sprint adopta Conventional Commits a partir de esta etapa. Todos los commits de Sprint 8 deben seguir el formato especificado en `simulador-web/CLAUDE.md` (sección "Gestión de versiones y commits").
+
+---
+
+## Alcance estricto
+
+### 1. Verificar versión actual en `package.json`
+
+Leer `package.json` y reportar el valor actual de `"version"`. Luego actualizarlo a `"0.8.0"`.
+
+### 2. Crear `src/lib/version.ts`
+
+```typescript
+// Lee la versión desde package.json en tiempo de build (Vite lo expone vía import.meta.env)
+// Alternativa simple: constante string que se actualiza manualmente con cada release
+export const APP_VERSION = '0.8.0'
+```
+
+Si Vite ya expone `import.meta.env.VITE_APP_VERSION` o similar, usar ese mecanismo. Si no, usar la constante string — es más simple y suficiente para el caso de uso.
+
+### 3. Crear `src/components/AppFooter.tsx`
+
+Componente discreto, una sola línea, esquina inferior. Visible en todas las páginas.
+
+**Diseño:**
+- Texto: `InQ ROI v0.8.0 · Powered by InQuality`
+- Tipografía: `text-xs text-muted-foreground`
+- Alineación: centrado o derecha, `py-4`
+- Sin borde superior ni decoración adicional
+
+```tsx
+import { APP_VERSION } from '@/lib/version'
+
+export function AppFooter() {
+ return (
+
+ )
+}
+```
+
+### 4. Integrar `AppFooter` en las páginas principales
+
+Agregar `` al final del layout o directamente en las páginas indicadas. Mínimo obligatorio:
+
+- `LibraryPage.tsx` — antes del cierre del contenedor principal
+- `ReportPage.tsx` — antes del cierre del contenedor principal
+
+Si existe un layout compartido que envuelva todas las páginas (verificar en `router.tsx` o `App.tsx`), preferir ponerlo ahí una sola vez. Si no existe layout compartido, agregar en las dos páginas listadas.
+
+**NO modificar** el header `AppHeader.tsx` — la versión va en el footer, no en el header.
+
+### 5. Crear `CHANGELOG.md`
+
+Ubicación: `simulador-web/CHANGELOG.md` (raíz del proyecto, mismo nivel que `package.json`).
+
+Formato: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
+
+```markdown
+# Changelog
+
+All notable changes to InQ ROI will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+
+## [0.8.0] - 2026-07-07
+### Added
+- CHANGELOG.md con historial de versiones
+- AppFooter con versión visible en todas las páginas
+- Conventional Commits adoptados como estándar de commits
+
+## [0.7.0] - 2026-07-07
+### Added
+- Multi-tenancy: tabla `organizations`, 4 roles de plataforma (platform_admin, member, client_editor, client_viewer)
+- Edge Functions `invite-user` y `revoke-user` para gestión de acceso
+- Panel de administración `/admin` con gestión de Organizations y Users
+- Login email/password y página `/reset-password` para flujo de invitación
+- Back button contextual en workspace (muestra nombre del cliente via JOIN en getById)
+- Política RLS `simulations_update` para que client_editor pueda guardar simulaciones
+
+### Fixed
+- Race condition en AuthContext: `isProfileLoaded` como guard antes de renderizar contenido rol-dependiente
+- `syncProfileFromDB` ahora lee `platform_role` y `org_id` desde DB (no inferido por dominio de email)
+- `normalizeGroupLabel()`: limpia artículos iniciales de labels de grupos con datos corruptos
+
+## [0.6.0] - 2026-06-24
+### Added
+- Logo InQuality en header de PDFs (isotipo, páginas 2+, fallback a texto)
+- Panel de análisis de sensibilidad en tab ROI: sliders de volumen e inversión, recálculo en tiempo real
+- Doble línea en CumulativeSavingsChart (base gris dashed + ajustada naranja con área sombreada)
+- `whitespace-nowrap` en MetricCell de columna Eficiencia
+
+### Fixed
+- `ProfileSheet.getAccessToken()` leía clave inexistente (`'supabase.auth.token'`); el guardado de perfil nunca llegaba a Supabase desde Sprint 4. Fix: calcular `sb-${projectRef}-auth-token`
+
+## [0.5.0] - 2026-06-23
+### Added
+- Fix crítico: workspace loading — race condition auth/processId resuelto con `isProfileLoaded`
+- Controles de zoom BPMN: fit-viewport con centering correcto, botones zoom-in/zoom-out/fit
+- Heatmap con gradiente continuo de 4 stops + toggle percentile/min-max persistido
+- "Ver procesos por recurso" en catálogo de recursos
+- Campo "empresa" en perfil de usuario
+- Columna "Eficiencia de automatización" en ComparisonTable (+ columna "Ahorro esperado")
+
+### Fixed
+- Flakiness en botón "Guardar cambios": debounce + Web Locks en process-store
+- Specs E2E migradas de Dexie a Supabase
+
+## [0.4.0] - 2026-06-18
+### Added
+- Autenticación Google Workspace OAuth + Supabase
+- Migración completa IndexedDB (Dexie) → PostgreSQL (Supabase)
+- Row Level Security con `is_platform_admin()` y políticas granulares
+- Catálogo global de recursos (sin processId)
+- Identidad en UI: avatar/dropdown AppHeader, "Actualizado por" en proceso
+- ResourceCatalogPage + ResourceFormSheet
+- Fix Web Locks API deadlock (processLock)
+- Fix `.maybeSingle()` en simulation-repo
+- Fix `formatCostPerHour()` precisión dinámica
+- Fix Google OAuth `prompt: 'select_account'`
+- Catálogo con contexto de proceso (banner + query param fromProcess)
+
+## [0.3.0] - 2026-05-27
+### Added
+- Biblioteca de procesos con grupos/tags/búsqueda (Dexie v4)
+- Indicador de simulación desactualizada ("Hay cambios sin simular")
+- Zoom BPMN fit-viewport
+- Recursos TO-BE en escenario automatizado (motor + UI + reporte + PDF)
+- Branding InQ ROI en todas las páginas (AppHeader + favicon + logos)
+- Kit de socialización del equipo: guía de usuario, guía de pre-venta, presentación PPTX
+
+## [0.2.0] - 2026-05-20
+### Added
+- Modelo de recursos `utilizationMinutes + units` (migración Dexie v3)
+- ActivityPanel con cálculo de costo en tiempo real
+- Reporte web con filas expandibles de desglose de recursos
+- Edición inline de proceso/cliente
+- Tabla de recursos en PDF (página condicional)
+
+## [0.1.5] - 2026-05-18
+### Added
+- Identidad visual completa: paleta naranja InQ #F59845, gradiente → magenta #ED3E8F
+- PDFs de clase profesional: 3 documentos (Actual, Automatizado, ROI)
+- Badge ⚡ en canvas BPMN para actividades automatizables
+- ROI con 5 KPIs
+- Sistema de componentes establecido
+
+## [0.1.0] - 2026-05-01
+### Added
+- MVP: importar BPMN 2.0, parametrizar actividades, simular costos, exportar PDF
+- Motor de simulación AS-IS / TO-BE (Modelo A)
+- Heatmap de costos en canvas BPMN
+- Reporte web básico con tabla de actividades y gráfico de barras
+```
+
+**Nota sobre las fechas:** usar las fechas de cierre formal de sprint documentadas en `STRATEGIC_DIRECTION.md`. Si alguna fecha no está documentada, usar la fecha más cercana disponible (commits de git son referencia).
+
+### 6. Actualizar `simulador-web/CLAUDE.md`
+
+La sección "Gestión de versiones y commits" ya está en `CLAUDE.md` (fue agregada en el cierre de Sprint 7). Verificar que el contenido sea correcto y consistente con lo que se implementa en esta etapa. Si la sección no existe, crearla.
+
+Verificar específicamente que diga:
+- `Sprint 7 = v0.7.x (MVP multi-tenant). Sprint 8 arranca en v0.8.0.`
+- El formato de Conventional Commits está documentado con los scopes correctos
+
+**Si la sección ya existe y es correcta, NO modificar `CLAUDE.md`** — no tocar lo que ya está bien.
+
+---
+
+## Criterios de validación
+
+### Funcionales
+- [ ] `package.json` tiene `"version": "0.8.0"`
+- [ ] `src/lib/version.ts` exporta `APP_VERSION = '0.8.0'`
+- [ ] `AppFooter` renderiza `InQ ROI v0.8.0 · Powered by InQuality`
+- [ ] Footer visible en LibraryPage (validación visual)
+- [ ] Footer visible en ReportPage (validación visual)
+- [ ] `CHANGELOG.md` existe con historial desde v0.1.0 hasta v0.8.0
+
+### Técnicos
+- [ ] Build sin errores TypeScript (`npm run build`)
+- [ ] Tests sin regresiones (`npm run test`)
+- [ ] No hay cambios en archivos fuera del scope listado
+
+---
+
+## Restricciones explícitas
+
+- **NO** modificar `AppHeader.tsx` — la versión va en el footer solamente
+- **NO** agregar modal de "novedades" ni changelog interactivo en la UI
+- **NO** usar `import.meta.glob` ni mecanismos complejos para leer el version — la constante simple es suficiente
+- **NO** agregar dependencias nuevas — todo con lo que ya existe en el stack
+- **NO** crear README.md ni documentación adicional — solo los archivos listados
+
+---
+
+## Archivos autorizados a modificar/crear
+
+```
+simulador-web/
+├── package.json ← actualizar "version"
+├── CHANGELOG.md ← crear
+├── src/
+│ ├── lib/
+│ │ └── version.ts ← crear
+│ └── components/
+│ └── AppFooter.tsx ← crear
+├── src/features/library/LibraryPage.tsx ← agregar al final
+├── src/features/report/ReportPage.tsx ← agregar al final
+```
+
+Si existe un layout global donde sea más correcto poner `AppFooter`, se puede usar en lugar de modificar LibraryPage y ReportPage — pero reportar la decisión antes de ejecutar (Nivel 2).
+
+---
+
+## Commit esperado
+
+```
+chore(version): v0.8.0 — CHANGELOG, AppFooter, version.ts
+```
+
+Seguido de:
+
+```
+docs(changelog): etapa 0 sprint 8
+```
+
+(Si se hacen en un solo commit, usar el primer mensaje.)
+
+---
+
+## Reporte esperado
+
+Al finalizar, reportar:
+1. Valor previo de `"version"` en `package.json`
+2. Si el layout global existe (y si AppFooter se puso ahí en lugar de en las páginas)
+3. Lista exacta de archivos modificados con diff resumen
+4. Resultado de `npm run build` y `npm run test`
+5. Screenshot o descripción del footer visible en la app (para validación visual del director)