josemoreupeso.es
02-module-field-report.md β€” TLOTP
# πŸ“‹ MΓ³dulo G2 β€” Informe de Campo

## MisiΓ³n

Consolidar los 5 informes Rohirrim en un ΓΊnico informe estructurado.
Mostrarlo al usuario para validar antes de continuar al Consejo.
El mapa del terreno, firmado por los cinco jinetes.

---

## Formato del Informe

```
╔══════════════════════════════════════════════════════════════╗
β•‘   ⚑ INFORME DE CAMPO β€” Los Rohirrim han regresado           β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

πŸ‡ Γ‰OWYN DEL STACK
   Lenguajes:   [lista detectada]
   Frameworks:  [lista detectada]
   Bases de datos: [lista detectada]
   Testing:     [lista detectada]

πŸ‡ THΓ‰ODEN DEL DOMINIO
   App:         [tipo de aplicaciΓ³n]
   Arquitectura: [patrΓ³n detectado]
   MΓ³dulos:     [lista de mΓ³dulos/bounded contexts]

πŸ‡ MERRY DE LA FORJA
   Frameworks test: [lista]
   Tipos de tests:  [unit/integration/e2e]
   Cobertura:   [configurada / no configurada]
   Calidad:     [linters, phpstan, etc.]

πŸ‡ PIPPIN DE LOS ENTS
   CI/CD:       [herramienta]
   Pipelines:   [lista de workflows]
   Docker:      [sΓ­/no]
   Cloud:       [proveedor si se detecta]

πŸ‡ GAMLING DE LOS NEXOS
   MCPs:        [lista instalados]
   Agentes CC:  [lista instalados]
   APIs externas: [lista referenciadas]
   Auth:        [sistema detectado]

══════════════════════════════════════════════════════════════
[βœ… 5/5 Rohirrim regresaron con datos]
[o ⚠️ 4/5 β€” Gamling no pudo mapear los nexos (sin acceso a .claude.json)]
══════════════════════════════════════════════════════════════
```

**IMPORTANTE**: El informe usa los datos reales devueltos por los agentes.
No inventar ni rellenar con ejemplos si el agente devolviΓ³ "sin datos".

**Nombres dinΓ‘micos**: Si `GANDALF_TEAM` estΓ‘ activo y hay exploradores asignados,
sustituir los nombres clΓ‘sicos (Γ‰owyn, ThΓ©oden, Merry, Pippin, Gamling) por los
nombres reales de los agentes del team junto con su nombre de lore asignado
(ver tabla de mapping en `01-module-rohirrim.md`). Ejemplo:
`πŸ‡ PHP-PRO (FRODO BOLSΓ“N)` en lugar de `πŸ‡ THΓ‰ODEN DEL DOMINIO`.
Si no hay team activo, mantener los nombres clΓ‘sicos de los Rohirrim.

---

## Paso de Consenso del Consejo (condicional)

**Solo si `GANDALF_CONSENSORS` tiene agentes definidos:**

Mostrar banner:

```
╔════════════════════════════════════════════════════════════╗
β•‘  ⚑ EL CONSEJO REVISA EL INFORME DE CAMPO                  β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

  Los agentes consensuadores leen el mapa de los Rohirrim.
  Su sabidurΓ­a enriquecerΓ‘ la expediciΓ³n antes de continuar.

  πŸ—‘οΈ [nombre-agente-consensuador-1] β€” revisando...
  πŸ—‘οΈ [nombre-agente-consensuador-2] β€” revisando...
```

Lanzar en paralelo un Agent por cada consensuador con este prompt:

```
Eres [nombre del agente, tipo: tipo] y formas parte del Consejo de Rivendel.
Has recibido el siguiente informe de exploraciΓ³n del proyecto:

[contenido del informe G2]

Revisa el informe desde tu perspectiva como [tipo de agente].
ΒΏHay algo que los Rohirrim hayan podido pasar por alto, subestimar o que merezca mayor atenciΓ³n desde tu especialidad?
Devuelve un JSON:
{
  "agente": "[nombre]",
  "observaciones": ["obs1", "obs2"],  // mΓ‘x 3, concretas
  "alerta": "[si hay algo crΓ­tico que el equipo deberΓ­a saber, o null]"
}
```

Tras recoger las respuestas, mostrar:

```
╔════════════════════════════════════════════════════════════╗
β•‘  ⚑ VOCES DEL CONSEJO                                      β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

  πŸ—‘οΈ [agente-1]: [observaciones]
  πŸ—‘οΈ [agente-2]: [observaciones]
  [si hay alertas]: ⚠️ ALERTA: [texto]
```

Luego continuar con el AskUserQuestion existente del informe.

---

## AskUserQuestion tras el informe

```json
{
  "questions": [{
    "header": "Informe de Campo",
    "question": "⚑ ¿El mapa del terreno estÑ correcto, viajero?",
    "multiSelect": false,
    "options": [
      {
        "label": "βœ… SΓ­, el terreno estΓ‘ bien mapeado",
        "description": "Continuar a definir el objetivo de la aventura"
      },
      {
        "label": "✏️ Hay imprecisiones β€” las corrijo",
        "description": "Editar secciones del informe manualmente"
      },
      {
        "label": "πŸ”™ Volver al menΓΊ de Gandalf",
        "description": ""
      }
    ]
  }]
}
```

---

## Flujo de correcciΓ³n

Si el usuario elige corregir, preguntar quΓ© secciΓ³n:

```json
{
  "questions": [{
    "header": "CorrecciΓ³n del mapa",
    "question": "⚑ ¿Qué sección del mapa corregimos?",
    "multiSelect": false,
    "options": [
      {
        "label": "πŸ‡ Γ‰owyn del Stack β€” lenguajes y frameworks",
        "description": ""
      },
      {
        "label": "πŸ‡ [agente de dominio] β€” arquitectura y mΓ³dulos",
        "description": "Si GANDALF_TEAM activo: usar el nombre del agente asignado al anΓ‘lisis de dominio/arquitectura (con su nombre de lore). Si no hay team: 'ThΓ©oden del Dominio'."
      },
      {
        "label": "πŸ‡ Merry de la Forja β€” testing y calidad",
        "description": ""
      },
      {
        "label": "πŸ‡ Pippin de los Ents β€” CI/CD e infraestructura",
        "description": ""
      }
    ]
  }]
}
```

Si hay mΓ‘s secciones: paginar con la misma opciΓ³n 4 β†’ segunda pantalla con Gamling y Confirmar.

Tras la correcciΓ³n, pedir confirmaciΓ³n y mostrar el informe actualizado.

---

## Guardar informe en contexto

El informe consolidado (incluyendo correcciones) se guarda como contexto interno
para los mΓ³dulos G3, G5, G6, G7 y G8. Es la base de toda la especificaciΓ³n.

Denominar internamente como `contexto_rohirrim`.

---

## TransiciΓ³n

Si el usuario confirma el informe:
β†’ Cargar @prompts/gandalf/sections/03-module-objective.md

Si viene de "Solo exploraciΓ³n Rohirrim":
β†’ No continuar a G3. Volver al menΓΊ de Gandalf con AskUserQuestion.

---

**MΓ³dulo**: `02-module-field-report.md`
**Invocado desde**: `01-module-rohirrim.md`
**Requiere**: contexto de los 5 Rohirrim