| OQ-LOY-01 | ¿La ventana de devolución (el tiempo que un earn queda pending) vive en el programa o por regla de acumulación? | FS-LOY-0002 | Distinta de la recomendación — Por programa. Ratificado además que un programa pertenece a una sola empresa. |
| OQ-LOY-02 | ¿Los puntos de estatus expiran, o solo los canjeables? | FS-LOY-0002, FS-LOY-0010, PRD | Distinta de la recomendación — Configurable por moneda. Ambos tipos pueden expirar o no; la plataforma debe permitir toda combinación. |
| OQ-LOY-03 | ¿revoke es distinto de un adjust negativo, o la distinción es solo de reportería? | FS-LOY-0002 | Distinto, y la diferencia es intención. revoke es “esto nunca debió acreditarse” (fraude, reversa); adjust es “corregimos un monto”. Reportería, disputas y antifraude necesitan separarlos, y el costo es una fila en un catálogo. |
| OQ-LOY-04 | ¿points_lifetime_earned vive en contact_balance o en una proyección de reportería aparte? | FS-LOY-0003 | En contact_balance. Crece monótonamente y se actualiza en la misma transacción que ya está abierta; una proyección aparte agrega un job por un entero. |
| OQ-LOY-05 | Cuando varias reglas calzan con un evento, ¿aplican todas o una prioridad se detiene en la primera? | FS-LOY-0004 | Aplican todas, con stop_on_match opcional por regla. El caso común es acumulativo (una regla base más una campaña). Detenerse por defecto sorprende; permitir detenerse explícitamente cubre el caso exclusivo. |
| OQ-LOY-06 | ¿El presupuesto por contacto se evalúa sobre la vida de la campaña o sobre una ventana móvil? | FS-LOY-0004 | Vida de la campaña. Una campaña ya tiene ventana de vigencia; una ventana móvil dentro de otra ventana es difícil de explicar y de auditar. Quien quiera recurrencia crea campañas sucesivas. |
| OQ-LOY-07 | ¿El programa por defecto recibe un nombre visible para el tenant, o uno interno fijo hasta que llegue multi-programa? | FS-LOY-0001 | Distinta de la recomendación — Multi-programa desde el inicio — ver ADR-021. |
| OQ-LOY-08 | ¿per_contact_limit de una recompensa se cuenta sobre la vida del member o sobre un período móvil? | FS-LOY-0005 | Configurable, con default vida. “Una vez por cliente” es el caso dominante; “una vez al mes” es real pero minoritario. Un campo limit_window_days nullable cubre ambos sin bifurcar la lógica. |
| OQ-LOY-09 | Al revertir un canje, ¿los puntos restaurados mantienen su vencimiento original o se reinicia? | FS-LOY-0006 | Mantienen el original. Reiniciar convierte el rollback en una forma de extender vencimientos, y alguien lo va a descubrir. Si el lote original ya expiró, el spec ya define un lote nuevo que hereda el vencimiento más próximo. |
| OQ-LOY-10 | ¿Hay un límite de tiempo tras el cual un canje ya no se puede revertir? | FS-LOY-0006 | Sí, configurable por programa, default 90 días. Sin límite, un canje de hace dos años se puede revertir contra un saldo y un catálogo que ya no existen. |
| OQ-LOY-11 | Largo y alfabeto del código de cupón: ¿cuánta entropía frente a que sea legible en voz alta? | FS-LOY-0007 | Distinta de la recomendación — Aceptada, subida a 12 caracteres para soportar cientos de millones de códigos sin que la generación pelee consigo misma. |
| OQ-LOY-12 | ¿Un código genérico se puede restringir a un segmento en vez de a un contacto? | FS-LOY-0007 | Sí. Es la forma natural de una campaña (“20% para clientes VIP”) y el segmento ya existe en core. La validación agrega una verificación de pertenencia, nada más. |
| OQ-LOY-13 | Cuando se viola un conjunto no combinable, ¿el motor conserva el beneficio de mayor precedencia o rechaza el request completo? | FS-LOY-0008 | Conserva el de mayor precedencia y reporta la exclusión. Rechazar todo en un mostrador deja al cajero sin salida; conservar el mejor beneficio es lo que el cliente espera y la razón tipada explica por qué el otro no aplicó. |
| OQ-LOY-14 | Ventana de atribución de referidos por defecto: ¿30, 60 o 90 días? | FS-LOY-0009 | Distinta de la recomendación — Aceptada como default, con el principio general de que toda empresa pueda configurarlo. |
| OQ-LOY-15 | ¿Las conversiones marcadas por fraude expiran si nadie las revisa, y después de cuánto? | FS-LOY-0009 | No expiran; escalan. A los 14 días sin revisar, alerta al tenant. Expirarlas automáticamente significa perder referidos legítimos por inacción administrativa, que es exactamente lo que la política de “marcar, no rechazar” quiso evitar. |
| OQ-LOY-16 | Ventana de calificación de niveles por defecto: ¿12 meses móviles o año calendario? | FS-LOY-0010 | 12 meses móviles. Es continua y justa, y evita el precipicio de enero. El año calendario existe como modo para quien lo pida, pero no como default. |
| OQ-LOY-17 | ¿Entrar en período de gracia emite un evento, para poder hacer una campaña “estás a punto de perder Gold”? | FS-LOY-0010 | Sí, loyalty.tier.grace_started. Es una de las campañas de retención de mayor rendimiento del formato, y omitir el evento la haría imposible sin sondear la base. |
| OQ-LOY-18 | ¿Un member puede saltarse un nivel cuando un solo evento cruza dos umbrales? | FS-LOY-0010 | Sí, salta al nivel más alto alcanzado, y emite un solo evento. Retenerlo un escalón es arbitrario y el member ya cumplió el umbral. |
| OQ-LOY-19 | Horizontes de aviso de vencimiento por defecto: ¿30 y 7 días, o un único aviso a 14? | FS-LOY-0011 | 30 y 7. El de 30 da tiempo real de reaccionar; el de 7 es el que convierte. Uno solo a 14 es un compromiso que no hace bien ninguna de las dos cosas. |
| OQ-LOY-20 | ¿cohort_key es la fecha de vencimiento o el mes? | FS-LOY-0011 | La fecha. El mes agrupa lotes con vencimientos distintos en un solo aviso, y el member recibe “vencen 1 200 puntos” cuando en realidad vencen 400 el día 3 y 800 el día 28. |
| OQ-LOY-21 | ¿Un desafío puede ser repetible (mensual, con reinicio), o cada instancia es un desafío distinto? | FS-LOY-0012 | Instancias distintas, generadas por una plantilla. Un desafío repetible con reinicio destruye la historia de participación; instancias separadas la conservan y el reporte funciona solo. |
| OQ-LOY-22 | ¿Las insignias otorgan puntos de estatus, convirtiéndolas en entrada de nivel? | FS-LOY-0012 | No por sí mismas; sí como efecto de regla opcional. Acoplar insignias a niveles hace que cada insignia nueva mueva la distribución de niveles sin que nadie lo pretenda. |
| OQ-LOY-23 | TTL de reserva de presupuesto en apply_discount: ¿15, 30 o 60 minutos? | FS-LOY-0013 | 30 minutos. Cubre un checkout con fricción real (pago rechazado, cambio de tarjeta) sin inmovilizar presupuesto de campaña por carros abandonados. |
| OQ-LOY-24 | ¿Soportamos descuentos por línea en la primera versión de apply_discount, o solo a nivel de carro? | FS-LOY-0013 | Solo carro en la primera versión. Por línea exige un modelo de producto y de categorías que hoy no tenemos, y el 80% de las promociones son a nivel de carro. |
| OQ-LOY-25 | ¿El snapshot del carro queda sujeto al tier de retención estándar, o a uno más corto por no ser una orden? | FS-LOY-0013 | Más corto: 90 días fijos. Sirve para reconciliación y disputa; conservar carros por 25 meses acumula datos de comportamiento de compra que no necesitamos y que sí tendríamos que defender. |
| OQ-LOY-26 | Ventana de agrupación de push de wallet passes: ¿5, 15 o 60 minutos? | FS-LOY-0014 | 15 minutos. A 5 el member siente cada compra; a 60 el saldo del pass se ve desactualizado justo cuando lo abre en la caja. |
| OQ-LOY-27 | ¿El wallet pass se ofrece automáticamente a cada member, o solo a solicitud? | FS-LOY-0014 | A solicitud, con un enlace prominente. Empujarlo automáticamente exige un push que el member no pidió y en Apple es fricción de revisión; el enlace en el correo de bienvenida convierte igual de bien. |
| OQ-LOY-28 | Librerías de firma de wallet passes (Apple y Google) | FS-LOY-0014 | Necesita un ADR nuevo (DEC-H5). No es una pregunta, es trabajo de investigación. El FS no sale de draft hasta que exista. |
| OQ-LOY-29 | ¿La política de expiración por defecto cambia según la plantilla vertical? | PRD-LOY, FS-LOY-0002 | Depende de que existan las plantillas verticales (DEC-H7), que aún no están especificadas. Diferida hasta descomponer core, que es quien las posee. |