---
name: azure-backlog-health
description: Audita el backlog de Azure Boards y avisa de lo que se está pudriendo - items sin estimar, sin criterios de aceptación, parados, duplicados o bugs sin triar. Úsala antes de un refinamiento o como revisión periódica del backlog.
version: 1.0.0
license: CC-BY-4.0
updated: 2026-08-16
---

# Azure Boards: salud del backlog

Un backlog no se degrada de golpe. Se llena de items que nadie va a coger, y
un día el refinamiento dura dos horas y no sale nada.

## Los siete avisos

Cada uno es una consulta y un umbral. Ajusta los umbrales al ritmo del equipo,
pero **tenlos escritos**: sin umbral no hay aviso, hay opinión.

**1. Sin estimar y a punto de entrar**
Los N primeros del backlog ordenado sin `StoryPoints` o `Effort`. Entrar en
sprint sin estimar es comprometerse a ciegas.

```sql
SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
  AND [System.WorkItemType] = 'Product Backlog Item'
  AND [System.State] IN ('New', 'Approved')
  AND [Microsoft.VSTS.Scheduling.Effort] = ''
ORDER BY [Microsoft.VSTS.Common.BacklogPriority] ASC
```

**2. Sin criterios de aceptación**
`Microsoft.VSTS.Common.AcceptanceCriteria` vacío en cualquier PBI aprobado.
Sin criterios, "terminado" lo decide quien lo mire, y siempre discrepan.

**3. Parados**
`[System.ChangedDate] < @today - 30` en estado activo. Un item que lleva un mes
en "Committed" no está en curso: está olvidado.

**4. Bugs sin triar**
Bugs en estado `New` con más de 3 días, o cualquier bug sin severidad y sin
prioridad. Un bug sin triar es una decisión que nadie ha tomado.

**5. Sin dueño en el sprint**
Work items en la iteración actual con `System.AssignedTo` vacío pasado el
primer día. Los recoge todo el mundo, lo que significa nadie.

**6. Zombis**
Creados hace más de 180 días, nunca priorizados, nunca tocados. No se
arreglan: se cierran. Un backlog de 400 items donde 250 no se harán jamás hace
imposible encontrar los 150 que sí.

**7. Épicas sin cerrar con todos los hijos hechos**
Features y épicas cuyos hijos están todos en `Done`. Casi siempre es un cierre
que se olvidó y distorsiona cualquier informe de avance.

## Detección de duplicados

WIQL no la hace. Se descargan títulos y descripciones y se comparan por
similitud (tokens en común normalizados, o embeddings si hay muchos). Se
proponen como **candidatos**, nunca se fusionan solos: dos títulos parecidos
son a menudo dos problemas distintos del mismo módulo.

## El aviso

Agrupado por acción, no por tipo de item, y **con techo**:

```
BACKLOG · 214 items · 6 avisos

REFINAR YA (top 10 del backlog)
  #1240  Export de informes         sin estimar, sin criterios
  #1244  Filtro por cliente         sin criterios

TRIAR (bugs)
  #1251  Error 500 al guardar       New, 6d, sin severidad

CERRAR O REVIVIR
  17 items sin tocar desde hace más de 180 días  → lista adjunta

SIN CAMBIOS
  Estimación, dueños de sprint y jerarquía de épicas, correctos.
```

- **Máximo 10 líneas accionables por aviso.** Más de eso no se lee y se
  convierte en ruido de fondo.
- Si no hay nada urgente, se dice en una línea y se acabó. La credibilidad de
  un aviso periódico se gasta cada vez que interrumpe sin motivo.
- El agente **propone**; mover, cerrar o reasignar lo confirma una persona.
  Cerrar 17 items zombis es correcto el 90% de las veces, y el 10% restante es
  el que te acuerdas.
