# Investigación de rendimiento

Encuentra a dónde va realmente el tiempo, cambia una sola cosa y demuestra el cambio con la misma medición que encontró el problema.

## Entregable

Un documento Markdown, `performance-investigation.md`, con la estructura fijada en **Salida** más abajo. Mide contra los umbrales fijados por **Definición de presupuesto de rendimiento** y devuelve la evidencia de que el sistema vuelve a estar dentro de ellos.

## Entradas obligatorias

- **La queja tal como se reportó** — qué va lento, para quién, haciendo qué y desde cuándo si se sabe.
- **Una forma de reproducirla** — un entorno, una cuenta, un conjunto de datos o una traza que muestre el comportamiento.
- **Acceso a la medición** — el perfilador, la instrumentación de tiempos o las trazas que el sistema expone.

Si falta cualquiera, repórtalo como ausente y no vayas más allá del paso que bloquea. Nunca pases a una corrección apoyándote en una explicación plausible: la causa plausible y la causa real coinciden mucho menos de lo que nadie espera.

## Entradas opcionales

- El presupuesto que la interacción debería cumplir y quién es su responsable
- Mediciones históricas de antes de que el comportamiento cambiara
- El historial de cambios del periodo que describe la queja
- La forma del tráfico y los volúmenes de datos en producción, frente a los del entorno de pruebas
- La infraestructura sobre la que corre el sistema y qué comparte con otras cargas
- Intentos anteriores sobre el mismo problema y qué midió cada uno

Cuando falte una entrada opcional, el informe declara qué queda por ello sin confirmar. No rellena el hueco con una hipótesis.

## Ejecución

**1 — Reproducir antes de cambiar nada.** Establece las condiciones bajo las que aparece el comportamiento: la entrada, el volumen de datos, el entorno, la concurrencia, el estado de la caché. Una investigación que no consigue reproducir el problema se detiene en este paso y reporta qué hace falta para reproducirlo.

**2 — Tomar una línea base.** Mide el caso reproducido tal como está, registra el instrumento, las condiciones y el percentil, y repite la medición las veces suficientes para mostrar su dispersión. Sin línea base no hay nada con lo que comparar una corrección, y toda afirmación posterior sobre ella es una opinión.

**3 — Medir a dónde va el tiempo.** Usa el perfilador, las trazas o la instrumentación de tiempos para atribuir el intervalo a sus partes, y registra la atribución tal como se midió. Un componente que nadie midió no es sospechoso; está sin medir, y el informe dice cuáles son esos componentes.

**4 — Encontrar el cuello de botella y no la sospecha.** Sigue la medición hasta el mayor coste atribuible y confírmalo: quítalo, esquívalo o varía su entrada y observa cómo se mueve la medición. El cuello de botella es la parte cuyo cambio mueve la cifra, y la prueba es la medición que se movió.

**5 — Cambiar una sola cosa.** Haz el cambio más pequeño que atienda al cuello de botella confirmado, y solo ese. Dos cambios a la vez producen un resultado que no se puede atribuir, y un resultado que no se puede atribuir no se puede defender ni revertir con confianza.

**6 — Medir otra vez en las condiciones de la línea base.** El mismo instrumento, las mismas condiciones, el mismo percentil, la misma repetición. Registra la cifra nueva junto a la anterior. Si la cifra no se movió, registra que no se movió, revierte el cambio y vuelve al paso 3 — un cambio conservado porque debería haber ayudado es deuda técnica con un buen relato encima.

**7 — Fijarlo.** Añade la prueba o la comprobación que falla si el comportamiento vuelve, en el punto de medición que nombra el presupuesto. Una corrección sin prueba de regresión es una corrección con fecha de caducidad.

## Salida

`performance-investigation.md`, en este orden:

- **1. Queja y fecha** — qué se reportó, quién y cuándo
- **2. Reproducción** — las condiciones bajo las que aparece el comportamiento y qué hizo falta para producirlas
- **3. Línea base** — la medición antes de cualquier cambio: instrumento, condiciones, percentil, dispersión
- **4. Atribución** — a dónde fue el tiempo, tal como se midió, y qué quedó sin medir
- **5. Cuello de botella** — cuál es y la medición que lo confirmó
- **6. Cambio** — qué se cambió y por qué ese cambio atiende al cuello de botella confirmado
- **7. Resultado** — la medición después del cambio, en las condiciones de la línea base, junto a la línea base
- **8. Prueba de regresión** — qué falla ahora si el comportamiento vuelve y dónde se ejecuta
- **9. Sin establecer** — las hipótesis que no se confirmaron y qué resolvería cada una

## Validación

El informe está listo cuando se cumple todo esto:

- La sección 3 registra una línea base tomada antes de hacer cualquier cambio
- La sección 5 nombra una medición, y no una inspección, como su confirmación
- La sección 6 describe un solo cambio; un segundo cambio es una segunda investigación
- La sección 7 reporta la medición posterior en las mismas condiciones que la sección 3
- La sección 8 nombra una prueba que falla cuando el comportamiento vuelve
- Cada causa declarada en el documento se traza hasta una medición de la sección 4

Falla la ejecución si se reporta una causa sin una medición detrás, o si la medición posterior se tomó en condiciones distintas de las de la línea base.

## Gestión de fallos

- **El problema no se puede reproducir** — detente en la sección 2, reporta las condiciones que se probaron y nombra qué hace falta: un entorno, un conjunto de datos, una traza de un usuario afectado o instrumentación en producción.
- **No hay perfilador ni instrumentación** — reporta la reproducción, y la línea base si la interacción se puede cronometrar de principio a fin. Declara que la atribución es imposible sin instrumentación y nombra qué hay que añadir.
- **La queja y la medición no coinciden** — mide en el punto que experimenta el usuario, registra ambos resultados con sus condiciones y reporta la diferencia. No la resuelvas eligiendo la medición más fácil de tomar.
- **Salieron varios cambios juntos** — reporta el resultado combinado y declara que no se puede atribuir el mérito a ningún cambio concreto. Repite la investigación de uno en uno antes de registrar una causa.
- **Acceso parcial** — mide lo alcanzable, lista en la sección 9 los componentes que no se pudieron observar y entrega. Una investigación que nombra lo que no pudo ver es utilizable; una que lo omite señala a lo que le tocó medir.
