ums

Política de Versionado — Resumen para Developers

Idioma: English Español

Este es un resumen orientado a developers de la política de versionado del schema. La decisión arquitectural completa está en ADR-0074.

El contrato cliente semántico está documentado en Contrato Semantico del Auth Graph. Es la ruta actual para consumidores externos que ya no deberían depender de GUIDs en el payload por defecto.


Resumen

Casi nunca necesitas pensar en la versión. Bumpeas tu SDK en una cadencia normal; las reglas de arriba mantienen producción segura mientras tanto.


Qué cambios cuentan como qué

Bump MAJOR (breaking)

Bump MINOR (aditivo)

Bump PATCH (cosmético)

Ante la duda, el owner del schema bumpea mayor. Falso-MAJOR es molesto; falso-MINOR es un incidente.


Qué haces como consumidor del SDK

  1. Fija un rango MAJOR. Tu package.json o csproj ya lo hace mediante umsSchemaCompatibility. No amplíes el rango a menos que hayas probado contra un MAJOR nuevo.
  2. Observa los logs en busca de estos eventos:
    • SchemaMinorMismatchEvent — el servidor emite un MINOR más nuevo. Considera actualizar pronto.
    • SchemaServerOlderEvent — tu SDK es más nuevo que el servidor. Usualmente seguro pero rastrea upgrades del servidor UMS.
    • UnknownFieldsObservedEvent — el servidor está enviando campos que no puedes usar. Actualiza en tu próxima oportunidad.
    • DeprecatedFieldUsageEvent — tu código lee un campo marcado para remoción. Migra antes del próximo MAJOR.
  3. Re-autentica ante AUTH_205 — tu SDK no puede interpretar de forma segura lo que el servidor envió. O el servidor se actualizó (tú también deberías) o el servidor se degradó (habla con tu operador UMS).

Qué haces como contribuyente del servidor UMS

Cuando propones un cambio en el grafo, documenta la categoría del bump en la descripción del PR:

Impacto de schema: MINOR — agrega campo opcional context.user.locale.

CI valida que el schemaVersion declarado del schema coincida con la categoría del cambio corriendo golden fixtures de la versión previa contra el schema nuevo.

Para cambios MAJOR:

  1. Abre un ADR separado documentando la breakage y el camino de migración.
  2. Actualiza compatibility-matrix.md.
  3. Comunica vía release notes al menos un release MINOR antes.

Para deprecaciones:

  1. Marca el campo en JSON Schema con "deprecated": true y "x-deprecation-removed-in": "2.0.0".
  2. Espera al menos dos releases MINOR o seis meses.
  3. Remueve en el siguiente MAJOR.

Ejemplo de ciclo de vida de deprecación

Release Acción
Schema 1.4.0 (MINOR) Agregar context.tenant.legalName (nuevo). Marcar context.tenant.name como deprecated: true, reemplazo es legalName.
Schema 1.5.0 (MINOR) SDKs leyendo name emiten DeprecatedFieldUsageEvent.
Schema 1.6.0 (MINOR) Igual — último período de gracia.
Schema 2.0.0 (MAJOR) context.tenant.name removido. SDKs viejos (compat <2.0.0) recibirán AUTH_205. Guía de migración publicada.

Ventana mínima: dos MINORs o seis meses, lo que sea mayor.


Referencias