Skip to main content
Estado: Propuesto (RECONSTRUCCIÓN — requiere validación) · Fecha: 2026-08-17 (reconstruido) Refs: ../constitution/founding-constitution.md
Traducción. Autoritativo: ../../adr/adr-006-entitlements-engine.md. ⚠️ Reconstruido a partir del material que tenemos, no recuperado. Etiquetas: [derived] tiene respaldo en el repositorio · [inferred] es deducido · [proposed] es un hueco que llené.

Contexto

Todo módulo termina necesitando preguntar “¿este tenant puede hacer esto?”. Respondida ad hoc, esa pregunta termina como comparaciones de nombre de plan repartidas por el código —if (plan === 'pro')— y cambiar un plan significa entonces encontrarlas todas. [inferred]

Decisión

Las capacidades son entitlements nombrados, y el código pregunta por la capacidad, nunca por el plan. [inferred] Un plan es un conjunto de entitlements; preguntar hasEntitlement('custom_domain') sobrevive a un cambio de nombre de plan, a una promoción y a un contrato enterprise a medida, mientras que preguntar por el plan no. Los entitlements son capacidades booleanas o límites numéricos. [inferred] Un límite se verifica en el punto de uso y bloquea o permite un overage, por métrica, configurable por tenant desde Softcrum Ops (DEC-G2). [derived] El consumo medido es una preocupación separada de los entitlements: los snapshots de consumo miden, los entitlements gatean. [derived]

Consecuencias

  • Un cambio de plan es dato. Un trato enterprise a medida es una fila, no una rama.
  • Ops puede otorgar una capacidad a un solo tenant sin un deploy. − Dos sistemas que razonar —gating y medición— y el límite entre ambos tiene que quedar claro.

Lo que no pude determinar

Este ADR es el más [inferred] de los ocho. El motor de entitlements se referencia en todo el material como si existiera, pero nada describe su forma. Si funciona distinto, este documento es una propuesta más que una reconstrucción.