---
name: quinotospec-mjolnir-refactor
description: Flujo para generar una Propuesta de Refactor "Mjolnir" que reescribe módulos enteros bajo demanda.
---

# Workflow: Mjolnir Refactor

Flujo para generar una Propuesta de Refactor "Mjolnir" que reescribe módulos enteros bajo demanda. Este workflow usa el sistema estándar de proposals de QuinotoSpec (`.quinoto-spec/proposals/{slug}/`) en lugar de una estructura paralela.

## Datos requeridos para ejecutar el workflow

El workflow debe ser invocado con los siguientes datos. **Si falta alguno, detener el proceso y solicitar al usuario antes de continuar.**

- **nombre**: Nombre del módulo que se desea refactorizar. Se usa como slug de la propuesta (kebab-case).
- **problema**: Descripción del motivo por el que se desea refactorizar el módulo.
- **resultado_esperado**: Qué resultado se espera alcanzar a través de la refactorización.
- **detalles_adicionales**: Otras informaciones de valor (librerías, formatos, tecnologías, restricciones, etc.).

---

## Paso 1 — Inicialización del contexto

Genera el archivo `.quinoto-spec/proposals/{SLUG}/mjolnir-refactor.yml` con el siguiente schema exacto:

```yaml
nombre: ""
problema: ""
resultado_esperado: ""
detalles_adicionales: ""
ultimo_paso_completado: 0
```

Completa los campos con los datos provistos. El campo `ultimo_paso_completado` se usará para reanudar el flujo si falla en algún punto.

> **⚠️ Verificación humana requerida**: Solicitar confirmación del usuario antes de continuar al paso 2. El usuario puede editar el `.yml` antes de aprobar.

Después de la confirmación, registra la decisión en `.quinoto-spec/approvals/{{APPROVAL_ID}}.json` y valida `human-approval` para el subject `.quinoto-spec/proposals/{{SLUG}}/mjolnir-refactor.yml` y action `mjolnir-refactor` antes de continuar.

Una vez confirmado, ejecuta `quinotospec-update-changelog`:
- **Título**: Mjolnir Init: {nombre}
- **Resumen**: Archivo de contexto generado en `.quinoto-spec/{nombre}/mjolnir-refactor.yml`.

---

## Paso 2 — Discovery del módulo + Mapa de Impacto

> Actualiza `ultimo_paso_completado: 1` en el `.yml` al iniciar este paso. Si falla, el proceso puede reanudarse desde aquí.

1. **Mapa de impacto previo al discovery**: Antes de analizar el módulo, identificar qué otros módulos, archivos o servicios del proyecto **importan o dependen** del módulo a refactorizar. Documentar este mapa en `.quinoto-spec/proposals/{SLUG}/00-impact-map.md`.
2. Realiza un discovery completo del módulo actual usando como contexto los archivos de `.quinoto-spec/proposals/{SLUG}/`.
3. El discovery debe incluir la definición de DoR/DoD específica para este refactor (no dejar `08-product-and-agreements.md` vacío).

Una vez completado, ejecuta `quinotospec-update-changelog`:
- **Título**: Mjolnir Discovery: {nombre}
- **Resumen**: Discovery del módulo '{nombre}' generado en `.quinoto-spec/{nombre}/`. Mapa de impacto documentado.

---

## Paso 3 — Generación de la Propuesta Técnica

> Actualiza `ultimo_paso_completado: 2` en el `.yml` al iniciar este paso.

1. Vuelve a leer el archivo `.quinoto-spec/proposals/{SLUG}/mjolnir-refactor.yml` por si el usuario realizó cambios desde el paso 1.
2. Ejecuta el workflow `quinotospec.create-proposal` con `PROPOSAL_DESCRIPTION` basado en `{problema}: {resultado_esperado}`. La propuesta se crea en `.quinoto-spec/proposals/{SLUG}/` usando el sistema estándar de QuinotoSpec.

Una vez completado, ejecuta `quinotospec-update-changelog`:
- **Título**: Mjolnir Proposal: {nombre}
- **Resumen**: Propuesta técnica de refactor generada para el módulo '{nombre}'.

---

## Paso 4 — Generación de User Stories

> Actualiza `ultimo_paso_completado: 3` en el `.yml` al iniciar este paso.

Ejecuta el workflow `quinotospec.create-user-stories` sobre la propuesta generada en el paso 3 (`.quinoto-spec/proposals/{SLUG}/`), completando así el ciclo estándar: propuesta → stories → listo para `create-tasks`.

Una vez completado, ejecuta `quinotospec-update-changelog`:
- **Título**: Mjolnir User Stories: {nombre}
- **Resumen**: User stories generadas para el refactor del módulo '{nombre}'.

---

## Instrucción de Reanudación

Si el proceso fue interrumpido, leer el campo `ultimo_paso_completado` del archivo `.quinoto-spec/proposals/{SLUG}/mjolnir-refactor.yml` para saber desde qué paso continuar. No repetir pasos ya completados.
