Saltar al contenido
Academy
0/19

Rutas

En esta página

Fundamentos · Unidad 3 de 4

Una versión es un contrato

Una versión es un contrato, no una etiqueta. El proveedor declara la versión concreta que implementa (su contractVersion); el consumidor declara el rango que puede aceptar (su constraint). La asimetría es deliberada: quien implementa afirma un hecho, quien consume expresa tolerancia, y el resolver compara el hecho contra el rango.

Inicial20 min

Al terminar podrás

  • Distinguir la versión concreta del proveedor del rango del consumidor
  • Elegir entre subir al proveedor y relajar el constraint

Entender

Una versión es un contrato, no una etiqueta. El proveedor declara la versión concreta que implementa (su contractVersion); el consumidor declara el rango que puede aceptar (su constraint). La asimetría es deliberada: quien implementa afirma un hecho, quien consume expresa tolerancia, y el resolver compara el hecho contra el rango.

Cuando el proveedor existe pero su contractVersion cae fuera del rango pedido, el requisito sigue abierto: una implementación fuera de rango no puede sostener la forma esperada. El resolver separa el lado del contrato (MILPA_CONTRACT_VERSION_UNSUPPORTED) del lado de la capacidad (MILPA_CAPABILITY_VERSION_UNSUPPORTED) para que cada uno enseñe su propio camino de actualización.

Los dos arreglos legítimos son simétricos al contrato: subir el proveedor a una versión que satisfaga el constraint, o relajar el constraint del requirente si la versión instalada es aceptable. Borrar el requisito no cierra el contrato: lo esconde.

Ver

Abrir Siembra tu milpa

Un requisito abierto bloquea la germinación; un proveedor fuera de rango deja el requisito tan abierto como uno ausente.

Hacer

Ejecuta la práctica en tu checkout y conserva la salida como evidencia.

terminal
$php bin/coa validate

Verificar

Demuestra que puedes aplicar la unidad. El progreso solo avanza al aprobar la evaluación.

Criterios evaluados

  • Explica por qué el proveedor declara una versión concreta y el consumidor un rango.
  • Nombra los dos arreglos de un requisito fuera de rango sin silenciar el contrato.

Evaluación calificable

Resuelve los 3 escenarios. Esta unidad exige 3 de 3 respuestas correctas.

0 intentos
Pregunta 1 de 3PaymentsPlugin requiere la capacidad payments con el constraint ^2.0. StripePlugin la provee, pero su contractVersion es 1.4. ¿Qué debe reportar el resolver?
Pregunta 2 de 3En los manifiestos de Milpa, el proveedor declara una versión concreta y el consumidor declara un rango. ¿Por qué esa asimetría es deliberada?
Pregunta 3 de 3El reporte muestra MILPA_CONTRACT_VERSION_UNSUPPORTED: el contrato está implementado, pero ninguna implementación satisface el constraint. ¿Cuáles son los dos arreglos legítimos?

La calificación valida respuestas en este navegador; no certifica identidad.

Fuentes primarias

Contenido verificado: 2026-07-12