Al terminar esta lección
- Presentar el Sprint como una conversación de decisiones, con origen, alternativa descartada y consecuencia para cada una.
- Cortar un backlog en slices verticales ordenados por riesgo, y explicar qué dependencia obliga a cada orden.
- Separar construcción de spikes con dueño y criterio de salida, y explicar qué incertidumbre afecta la estimación.
- Defender frente al cliente un OUT con condición de reapertura, un BLOCKED con dueño y una decisión de secuencia.
Escena 1 · La revisión empieza al revés
El martes el Sprint de Nexo estaba terminado en la versión de documento: contexto, objetivos, arquitectura, riesgos, plan de pruebas y bundle. El jueves por la mañana, antes de presentarlo, el Responsable del Desarrollo cambió el método de revisión. En lugar de leerlo de arriba hacia abajo, tomó cada decisión técnica y preguntó qué ASR, regla de negocio o riesgo la había originado.
La lectura inversa es el primer filtro, y casi siempre encuentra algo. Si una decisión no tiene origen, probablemente es una preferencia del equipo. Si tiene origen pero nadie recuerda la alternativa descartada, todavía no se puede defender. La tabla siguiente es el resultado de esa revisión sobre seis decisiones que aparecían en el borrador.
| Decisión en el borrador | Origen (ASR, RN o riesgo) | Veredicto |
|---|---|---|
| PostgreSQL como fuente transaccional de la reserva | Concurrencia sobre la última unidad (RN-05, AC-06) | Defendible. Registrada como ADR-002. |
| Redis para bloquear la última unidad | Ninguno. Es una herramienta, no un requisito. | Descartada. La consistencia de la reserva queda dentro de la transacción de PostgreSQL. |
| Microservicios para catálogo, pedidos, crédito y stock | No hay ASR de escala independiente. El riesgo real es la consistencia entre pedido y reserva. | Rechazada. Monolito modular como estilo de despliegue (ADR-001). |
| Emitir la factura dentro del primer release | Integración fiscal con API externa todavía no conocida (SPK-01) | Se mueve a una frontera posterior. El pedido queda pendiente de facturación. |
| TTL de reserva de 24 horas | RN-07, sin evidencia de tiempos | No es una decisión. Es un dato pendiente con dueño. |
| Recomendaciones de productos con IA | Ningún problema medido lo sostiene | OUT del primer release. |
Esa tabla muestra algo que un diagrama de cajas no muestra: tres de las seis filas no son decisiones de arquitectura. Son fronteras, datos pendientes o descartes. Un Sprint que las mezcla con decisiones se vuelve difícil de defender, porque el cliente no puede distinguir qué ya está resuelto y qué todavía no.
La revisión termina con un hábito que conviene copiar: para cada decisión importante hay cuatro frases escritas. Qué problema o riesgo existe. Qué opciones se consideraron. Por qué se eligió una. Qué costo o condición podría hacer revisarla. Si solo podés nombrar la tecnología, la decisión no está lista.
Escena 2 · La respuesta que se pierde
La segunda revisión es de fallos. El Responsable del Desarrollo eligió tres puntos donde algo externo o concurrente puede salir mal y recorrió el sistema completo en cada uno: qué commit ocurrió, qué estado ve el usuario, qué se reintenta, qué se audita y cómo se recupera. El punto más revelador fue el worker que emite comprobantes. El código de la primera versión, escrito por otro desarrollador y revisado por nadie, tenía dos defectos que ninguna prueba unitaria detectaba.
Antes de leer la respuesta, tomate un minuto para buscar los defectos. Hay exactamente dos líneas problemáticas.
¿Qué líneas del worker fiscal son un problema?
Hacé clic en las líneas con defectos de diseño. No busques errores de tipos: el código compila.
El Responsable del Desarrollo no reescribió el código en la reunión. Lo que hizo fue convertir cada defecto en una pregunta del contrato de fallo: ¿qué clave se envía?, ¿qué se consulta si no hay respuesta?, ¿qué estado ve el vendedor mientras tanto? Las respuestas quedaron en la tabla de contratos de la lección 8.1, y el worker se reescribió después con esas respuestas como criterio de aceptación.
Esa es la diferencia entre una revisión de código y una revisión de Sprint. El código dice cómo falla hoy. El contrato dice cómo debe fallar, y permite que cualquier versión futura se compare contra él.
Escena 3 · "¿Entonces no son microservicios?"
La reunión de revisión con el cliente empezó con contexto y objetivos, no con arquitectura. Marta, la dueña, escuchó el problema del pedido 48172 y después preguntó lo que todos esperaban: por qué no se partía el sistema en servicios desde el principio, si iba a crecer.
La respuesta es una decisión de consecuencias, y se puede practicar. Elegí una opción y mirá la consecuencia. La conversación sigue según lo que contestes.
La pregunta por los microservicios
Estás en la reunión de revisión con Marta, la dueña de Nexo. Tenés veinte minutos y el equipo necesita una respuesta sobre la arquitectura antes de firmar.
Marta (dueña)
Entonces, ¿no son microservicios? Si esto va a crecer, ¿por qué no lo partimos desde ahora?
¿Qué respondés?
Después de la conversación, el equipo volvió a escribir la respuesta en el formato que sirve para cualquier decisión: problema, alternativa descartada, razón y condición de revisión. Ese texto quedó como DEC-08-02 más abajo.
Escena 4 · Una lista de decisiones, no de deseos
Antes de cerrar el backlog, el equipo hizo una última pasada: tomó cada ítem del borrador y lo clasificó. La pregunta no era si el ítem era bueno. Era qué estado tenía en el Sprint: decisión tomada, OUT con motivo, BLOCKED con dueño o ruido sin origen.
Decisión, OUT, BLOCKED o ruido
Clasificá cada ítem del borrador según su estado en el Sprint.
Pedido y reserva se confirman en la misma base de datos.
Facturación electrónica completa dentro del primer release.
TTL de reserva de 24 horas.
Sustitución automática de productos cuando falta stock.
Portal B2B de autoservicio como base del primer release.
Bus de eventos porque 'queda moderno' para el futuro.
Un detalle del caso importa mucho: el portal no desapareció del proyecto. Pasó de ser la base del primer release a ser una frontera posterior, que se construye sobre la reserva y el pedido ya verificados. La decisión es de secuencia, no de rechazo.
Escena 5 · De cuatro cajas a seis slices
El backlog de Nexo tuvo tres versiones, y las tres son útiles para entender por qué la última es la correcta.
La primera versión estaba organizada por componentes: dominio, persistencia, integración con el ERP, crédito, reservas, fiscal y frontend. Era ordenada, pero ninguna de esas piezas podía demostrarse sola. El equipo habría terminado la persistencia varias semanas antes de conocer el precio real de un pedido.
La segunda versión estaba organizada por pantallas: portal de clientes, pedidos, depósito y facturación. Cuando se presentó, la responsable de operaciones preguntó lo que nadie había querido preguntar: "¿Cómo vamos a probar el portal si todavía no confiamos en precios ni reservas?". La pregunta reveló que el orden seguía el mapa de la aplicación y no el riesgo.
La tercera versión se ordenó por valor y riesgo. Cada slice tiene un actor, un resultado observable, las reglas que gobierna y el riesgo que baja. Y la reserva, que es la decisión más cara, entra temprano.
| Slice | Valor observable | Reglas y criterios | Riesgo que baja | Depende de |
|---|---|---|---|---|
| 1. Pedido con precio y crédito | El vendedor registra un pedido con SKU vigentes y ve precio y crédito calculados en el servidor. El pedido queda en BORRADOR, sin reserva todavía. | RN-01, RN-03. AC-02, AC-03, AC-04, AC-05, AC-09. | Precios y SKU incorrectos. En la muestra, 37 de 60 pedidos corrigieron SKU. | Nada |
| 2. Reserva e idempotencia | El pedido reserva stock en el mismo commit. Dos pedidos por la última unidad: uno confirma y el otro recibe un rechazo sin efectos. Un reintento devuelve el mismo pedido. Es el SLICE-C-RESERVA del módulo 9. | RN-05, RN-06. AC-01, AC-06, AC-07, AC-10. | Sobreventa y pedidos duplicados (EV-05, OBJ-3, OBJ-4). | Slice 1 |
| 3. Autorización de excepción | Autorización de crédito con permiso separado y motivo obligatorio. El pedido queda PENDIENTE_AUTORIZACION con reserva blanda, no firme. | RN-01, RN-02 (valor BLOCKED), NFR-02. AC-08. | Autorizaciones por audio sin constancia (EV-03 y pedido 48172). | Slice 2 |
| 4. Equivalencias de SKU | Las equivalencias se aplican solo si están vigentes en la fecha del pedido. Los acuerdos sin vigencia validada quedan pendientes de revisión comercial. | RN-04. Escenarios nuevos bajo AC-04 y AC-05. | Equivalencias en una hoja personal (EV-02) y precios sin fecha. | Slice 1 |
| 5. Preparación y quiebre | El pedido confirmado llega a preparación desde el outbox. Un faltante en picking reajusta la reserva con auditoría. | RN-05. CU-03 y CU-04. AC-11. | Pedidos que llegan a depósito sin confirmar, y quiebres que no quedan registrados. | Slice 2 |
| 6. Intención fiscal | El pedido queda marcado como pendiente de facturación. La intención fiscal se emite desde el worker contra un fake del proveedor, con la misma clave. | NFR-04. AC-12 y T12. | Pedido confirmado sin comprobante después de una caída fiscal. | Slice 5 |
Las dependencias explican el orden. El slice 2 no puede esperar al 1, porque reservar un pedido sin precio ni crédito verificados sería reservar sobre supuestos. El slice 3 necesita una reserva blanda que ya exista. El 5 necesita el outbox y la reserva confirmada. El 6 necesita el outbox del 5, porque la intención fiscal se escribe ahí.
Hay cuatro decisiones de corte que conviene justificar en voz alta, porque el cliente las va a cuestionar:
- La reserva entra antes que la autorización porque es la decisión más cara de revertir. Si la reserva concurrente resulta más difícil de lo previsto, el riesgo aparece temprano y no contamina el resto.
- El portal no está en la lista de slices. Se construye como boundary sobre las capacidades del slice 2 y 3, cuando ya sabemos qué precio y qué stock muestra.
- La facturación real queda fuera. El slice 6 deja el contrato de fallo y la intención durable, pero no promete un comprobante con CAE en el primer valor.
- Ningún slice es una capa. Cada uno tiene un actor que puede verificar el resultado, aunque sea un operador interno.
Escena 6 · Estimar sin inventar
Cuando el dueño pidió una estimación, la respuesta inicial fue "backend de pedidos: cinco días". Esa cifra mezcla demasiadas incógnitas en un número solo: la reserva concurrente, la integración con el ERP, la política de crédito y la prueba fiscal. Cuando una de ellas se complica, el número deja de servir.
Una estimación defendible explicita supuestos y separa lo conocido de lo que todavía es investigación. El artefacto siguiente es la estimación del slice 2, escrita para que la revisen el Responsable del Desarrollo, Marta y el equipo técnico.
slice: 2
nombre: "Reserva e idempotencia (SLICE-C-RESERVA)"
alcance_incluye:
- "Reserva condicional por depósito y SKU, dentro de la transacción del pedido"
- "Idempotencia por requestId con fingerprint"
alcance_excluye:
- "TTL de reserva (RN-07, BLOCKED)"
- "Sustitución automática de productos"
supuestos:
- "PostgreSQL con transacciones locales disponible en el ambiente de prueba"
- "Los depósitos CBA y CEN se modelan con warehouse_id"
incertidumbre:
- "Comportamiento del ERP al sincronizar stock (SPK-02, dueño: líder técnico)"
spike_previo: "SPK-02 con duración máxima acordada antes de empezar el slice"
estimacion: "rango publicado solo después de cerrar SPK-02; sin número antes de medir"
condicion_de_revision: "si la prueba concurrente falla dos veces por la misma causa, se reabre el diseño de la reserva"
Estimación opaca o estimación con supuestos
Backend de pedidos: cinco días.
Nadie sabe qué incluye, qué queda afuera ni qué lo haría cambiar. Cuando la reserva concurrente se complica, el equipo tiene dos opciones malas: esconder el atraso o renegociar el alcance después de firmar.
Slice 2: rango condicionado a SPK-02. Incluye reserva y idempotencia. Excluye TTL, que está BLOCKED. Supone PostgreSQL transaccional y dos depósitos modelados. Se revisa si la prueba concurrente falla dos veces por la misma causa.
Si el supuesto falla, el cambio se ve en el registro y no aparece como sorpresa.
Esta estimación tiene un rasgo que conviene notar: no tiene número hasta el spike. Eso no es falta de compromiso. Es honestidad sobre lo que todavía no se sabe, y el cliente lo entiende mejor cuando se le muestra el costo de la incertidumbre en lugar de esconderlo.
Escena 7 · El bundle del slice 2
De la arquitectura no se deriva un documento que se pega entero en cada conversación con un agente. Se deriva un bundle por slice. El bundle del slice 2 es el que el módulo 9 usa como ejemplo, bajo el nombre histórico SLICE-C-RESERVA.
El bundle declara qué condiciona el slice y qué queda explícitamente afuera. Una parte importante es la lista de fuera de alcance: si el agente necesita una política que no está escrita, tiene que preguntar, no inventarla.
# Alias histórico: SLICE-C-RESERVA
slice: 2
objetivo_observable: "Dos pedidos compiten por la última unidad. Uno confirma y el otro recibe un rechazo sin efectos. Un reintento devuelve el mismo pedido."
autoridad:
- "RN-05: disponible = onHand - reserved, nunca menor que cero, por depósito y SKU"
- "ADR-002: PostgreSQL es la fuente transaccional de la reserva"
- "ADR-005: idempotencia por requestId en la misma transacción que pedido y reserva"
- "ADR-006: fingerprint sobre cliente, depósito preferido y líneas normalizadas por SKU y cantidad"
contratos_focales:
- "StockPort.reserve(orderId, depotId, sku, qty) devuelve Reserved o InsufficientStock"
- "CreateOrderResult devuelve confirmed, conflict o rejected"
invariantes:
- "disponible >= 0 para cada depósito y SKU"
- "mismo requestId y mismo fingerprint: mismo resultado, sin efecto nuevo"
- "mismo requestId y fingerprint distinto: conflict, sin efecto"
pruebas:
- "AC-06 con base real, repetida (checkpoint C)"
- "AC-07 y el caso de conflicto de T08"
- "AC-10: falla antes del commit con rollback completo (T09)"
archivos_relevantes:
- "src/application/create-order.ts"
- "src/ports/stock.ts"
- "src/adapters/postgres-stock.ts"
- "tests/integration/stock-reservation.test.ts"
fuera_de_alcance:
- "UI y cambio de nombres públicos"
- "Redis o dependencias nuevas"
- "TTL de reserva (RN-07, BLOCKED): si el agente lo necesita, debe preguntar y no inventar un valor"
gates:
- "npm run typecheck"
- "npm run test:unit"
- "npm run test:integration -- stock-reservation"
Un detalle de numeración vale la pena nombrarlo. En algunos borradores viejos aparece "ADR-003 PostgreSQL es fuente transaccional de la reserva". Es un error de identificador: ADR-002 es PostgreSQL y ADR-003 es el worker. Si un bundle cita el ID equivocado, el agente va a cambiar código según un registro que no existe. La corrección no es una decisión de diseño: es mantener un único registro de ADR y revisar los IDs antes de entregar.
Escena 8 · La revisión con el cliente
La reunión con el cliente se preparó como una presentación de consecuencias, no de patrones. La regla que siguió el equipo fue simple: cada decisión técnica se presenta con el problema que evita, en el lenguaje de quien tiene que aprobarla.
El equipo empezó por el contexto y los objetivos. Explicó que el cuello de botella no es solamente la carga inicial del pedido: el pedido atraviesa identificación, precio, crédito, reserva y preparación, con datos dispersos. El objetivo del release es reducir las cargas dobles y hacer explícitas las decisiones de confirmación.
Después vinieron las decisiones con consecuencias:
Una operación transaccional evita reservas huérfanas. La idempotencia evita pedidos duplicados cuando la red reintenta. Un outbox evita perder la notificación a preparación después del commit. El cliente no necesita aprender esos nombres para entender el riesgo.
Marta preguntó por la facturación. El equipo respondió con una decisión de secuencia y no con un no:
El primer valor que queremos probar termina cuando existe un pedido comercialmente confirmado y listo para preparación. Facturación es importante, pero introducirla ahora agrega normativa e integración fiscal sin ser necesaria para validar el núcleo. Diseñamos una frontera para integrarla después.
Esa respuesta funciona porque tiene motivo, frontera y condición. Lo que no funciona es decir "la facturación no entra" sin nada más: el cliente lo escucha como una negativa, aunque sea una decisión correcta.
Más tarde apareció el TTL de reserva. Marta propuso poner 24 horas. El equipo mostró dos episodios reales: pedidos que se preparan en menos de una hora y pedidos grandes que esperan autorización hasta el día siguiente. Con esos dos casos, la discusión se movió. Elegir 24 horas sin política podía congelar stock o liberar mercadería reservada. Se acordó medir los tiempos de espera durante la primera semana y definir antes quién tiene autoridad para fijar el valor. Ese acuerdo quedó registrado como RN-07 BLOCKED con dueño.
Laura, de administración y crédito, pidió lo que más le importaba: que la autorización de excepciones no dependiera de un audio. El equipo le mostró el slice 3 y el requisito NFR-02: quién autoriza, cuándo, con qué motivo y para qué pedido. Ella aceptó que la decisión de autorizar siga siendo humana, siempre que quede constancia.
Sergio, de depósito, quería que el sistema sugiriera sustitutos automáticamente. La respuesta fue BLOCKED con motivo: no existe una matriz de marca, compatibilidad y preferencia. Sin ella, cualquier sustitución automática sería una suposición con el nombre de una función.
Para cada decisión que el cliente pueda cuestionar, prepará cuatro frases:
- Qué problema o riesgo existe.
- Qué opciones consideraste.
- Por qué elegiste una.
- Qué costo o condición podría hacerte revisarla.
Si solo podés nombrar la tecnología, la decisión todavía no está lista para defenderse.
Escena 9 · Decisiones que se pueden discutir
Las conversaciones de la revisión terminan en registros cortos, no en recuerdos. Estos son los dos que el equipo escribió. Tienen motivo, alternativa, condición de reapertura o revisión y un responsable.
## DEC-08-01 · Facturación electrónica queda fuera del primer valor
- Estado: OUT del primer release. Integración posterior.
- Lo que sí entra: el pedido confirmado queda marcado como pendiente de facturación, y la intención fiscal se escribe en el outbox (slice 6).
- Motivo: el valor a probar es un pedido comercialmente confirmado y listo para preparación. La emisión agrega normativa e integración externa que no son necesarias para validar el núcleo.
- Condición de reapertura: contrato fiscal probado contra fake (T12) y SPK-01 cerrado con la API real del proveedor.
- Responsable: Marta (dueña), con administración (Laura).
## DEC-08-02 · Pedido y reserva se confirman en la misma base
- Estado: decidido.
- Problema: confirmar un pedido sin su reserva rompe RN-05, y reservar sin pedido deja stock huérfano.
- Alternativas descartadas: servicio de stock separado (coordinación distribuida sin beneficio medido) y cola externa para reservar (más difícil de probar en concurrencia).
- Condición de revisión: el stock necesita escalar o aislarse por operación, con un ASR que lo justifique.
- Referencias: ADR-001, ADR-002, AC-06.
- Responsable: el Responsable del Desarrollo (validado con Marta).
Un registro así permite algo que una conversación no permite: que alguien lo lea dentro de seis meses, cuando cambie la política, y sepa qué debe reabrirse y quién lo decide.
Cuándo el Sprint creció demasiado
Un Sprint se infla de dos maneras. La primera es cuando intenta resolver procesos que no comparten objetivo: el pedido, el portal y la contabilidad conviven en el mismo documento sin una pregunta común. La segunda es cuando describe módulos que no aparecen en ningún caso de uso prioritario, o decisiones sobre un futuro lejano sin ASR actual.
El criterio práctico es preguntar qué riesgo del próximo horizonte de construcción reduce cada sección. Arquitectura no significa predecir el producto completo. Significa reducir riesgos importantes del próximo tramo de trabajo, y dejar explícitamente afuera el resto.
Del Sprint al contrato comercial
Un Sprint bien construido permite convertir incertidumbre en condiciones comerciales claras. La propuesta separa tres cosas: lo que se confirma, lo que es opcional y lo que está bloqueado por evidencia pendiente. También define qué cambios posteriores cuentan como cambio de alcance: los que alteran una regla o una frontera aprobada.
Esto protege a ambas partes. El cliente entiende qué compra. El equipo no esconde riesgo dentro de horas genéricas. Y si durante la construcción aparece evidencia que contradice una regla aprobada, no se culpa al documento: se registra el cambio, se evalúa el impacto y se decide.
Un ejemplo de lo que una propuesta no debe hacer: prometer que el sistema "automatiza el crédito con IA". Eso convierte una decisión de autorización humana en una promesa que el sistema no puede cumplir, y que el cliente reclamará cuando la primera excepción no se resuelva sola.
Qué debería poder responder cada página del Sprint
La sección de contexto explica por qué existe el proyecto. La de alcance dice qué construimos ahora. Los casos y las reglas dicen qué comportamiento prometemos. La arquitectura muestra cómo protegemos las propiedades importantes. Los riesgos muestran dónde podemos equivocarnos. El plan incremental muestra cómo obtendremos evidencia temprana. Las pruebas muestran cómo vamos a saber que cumplimos.
Si una sección no responde una pregunta útil, probablemente se puede reducir. Ese es el criterio de corte final, y se aplica también a esta lección: cada escena responde una pregunta que el Sprint tuvo que contestar en la reunión.
Errores frecuentes
Síntoma: el cliente aprueba el Sprint y dos semanas después pide "cuenta corriente, que estaba implícito". Causa: el OUT no tenía motivo, condición de reapertura ni responsable. Corrección: registrar el OUT como DEC-xx con las tres cosas, y mostrarlo al cliente antes de la firma.
Síntoma: "backend de pedidos: cinco días" se aprueba y en la segunda semana el plan ya no cierra. Causa: la estimación mezcla construcción con investigación y no tiene supuestos explícitos. Corrección: separar los spikes con criterio de salida y estimar solo el trabajo que ya se conoce.
Síntoma: el bundle cita ADR-003 como PostgreSQL y el agente cambia el código según ese ID. Causa: los IDs de decisión no se revisaron entre documentos. Corrección: un solo registro de ADR (ADR-002 PostgreSQL, ADR-003 worker) y una revisión de IDs antes de entregar cualquier bundle.
Síntoma: el primer entregable es visible solo para clientes externos, y el depósito no ve nada útil. Causa: el corte siguió las pantallas y no el riesgo. Corrección: empezar por un slice con actor interno que pueda observar la decisión, como el slice 1 y el 2.
Síntoma: el agente propone un TTL "razonable" para cerrar el slice de reserva. Causa: el bundle no declara el TTL como fuera de alcance con la instrucción de preguntar. Corrección: listar RN-07 como BLOCKED en "fuera de alcance" y agregar la instrucción explícita de no inventar valores.
Síntoma: el cliente pide una reunión para "volver a discutir la arquitectura" sin nuevos datos. Causa: las decisiones no tienen condición de revisión. Corrección: mostrar la condición del registro y preguntar qué evidencia nueva existe. Si no hay, la decisión sigue vigente.
Qué puede hacer el agente. Proponer un primer corte de slices a partir de la lista de IN, marcar dependencias que no se mencionan, detectar slices que no tienen actor ni resultado observable y redactar un borrador de bundle a partir de las reglas y los ADR citados.
Qué no debe decidir. La prioridad por riesgo, las estimaciones, el valor de cualquier TTL o umbral, qué se considera OUT o BLOCKED, y qué se presenta como decisión tomada. Esas definiciones son de personas con autoridad.
Contexto mínimo. La lista de IN, OUT y BLOCKED, las RN y AC citadas por cada slice, y los ADR que las respaldan. Con eso alcanza para revisar el corte.
Prompt de ejemplo:
Te paso la lista de IN, OUT y BLOCKED del primer release de Nexo y el catálogo AC-01 a AC-12.
Proponé un corte en slices verticales que cumpla estas reglas:
- Cada slice tiene un actor, un resultado observable y los AC que lo prueban.
- Ningún slice depende de un BLOCKED para cerrar.
- Cada dependencia entre slices se justifica con una regla o un riesgo.
- Si un AC queda sin slice, decímelo. No inventes un AC-13.
Devolvé una tabla con slice, valor observable, AC, dependencias y riesgo que baja.
No propongas valores para TTL, tolerancia de crédito ni umbrales de latencia.
Cómo revisar la salida. Verificá que cada AC aparezca exactamente una vez como prueba principal, y que no haya ningún slice sin actor. Revisá que las dependencias tengan sentido: un slice que depende de un BLOCKED no se puede cerrar. Y comprobá que no haya IDs nuevos sin fuente. Si el agente propone un slice que no está en la lista de IN, pedile que explique de dónde sale.
Para llevarte
- Revisá cada decisión con lectura inversa: origen, alternativa descartada y consecuencia. Si una de las tres falta, la decisión no está lista.
- Un backlog se corta por valor y riesgo. La reserva, que es la decisión más cara, va temprano.
- Un OUT necesita motivo, condición de reapertura y responsable. Sin esas tres cosas se renegocia cada semana.
- Una estimación defendible explicita supuestos e incertidumbre. Si no tiene número antes del spike, eso es honestidad y no falta de compromiso.
- El bundle de cada slice declara lo que queda fuera, y en especial lo que el agente no puede decidir.
- Antes de entregar un bundle, revisá que los IDs de ADR y AC coincidan con el registro. Un ID equivocado produce código equivocado.
Comprobá tu criterio
El Sprint enumera componentes, pero no explica fallos ni el orden de implementación. ¿Qué revisión ayuda más?
¿Cómo valoras el contenido técnico de esta lección?
Tu feedback nos ayuda a mejorar los laboratorios prácticos de Eje Z.