La semántica del enum role_archetype, la FK succeeds_role_id, la compuerta de citas que impone ítems fundamentados en SMC en roles future-ready, y el registro de cambios.
RPF's roles table carries a role_archetype column (Postgres enum) with three values plus an explicit NULL state. The enum is what every consumer of the role catalogue keys against — the archetype badge, the browse filter, the role-diff target picker, the metro map (M18.4), and the agent chip context.
legacyRol de hoy — el punto de partida de una transformación. Se publica sin compuerta de citas. Documenta la práctica actual.
future_readyEl rol hacia el cual nos transformamos. La puerta de citas se aplica al momento de publicar: cada ítem debe cargar ≥1 cita SMC.
hybridUn paso transicional entre legado y future-ready. Se publica sin compuerta de citas; útil para marcar movimientos parciales que un mercado está haciendo hoy.
NULL significa "aún sin clasificar". Las filas publicadas antes de M18.3.1 son NULL hasta que un administrador las abra en el constructor y elija un arquetipo. La insignia se suprime para filas NULL.
Cada rol puede cargar succeeds_role_id, una clave foránea auto-referenciada que apunta al rol desde el cual éste se transforma. La restricción se aplica a nivel de base de datos (db/schema.ts §40-47), con un índice sobre (succeeds_role_id) para que la búsqueda del objetivo del diff sea O(1).
La FK es nullable. Los roles future-ready típicamente no tienen sucesor (son el destino); los roles legados e híbridos típicamente apuntan hacia adelante a un sucesor future-ready publicado. La FK no garantiza consistencia de forma de arquetipo — eso es una regla de validación en el momento de publicar, no una restricción de la base de datos.
Al publicar un rol cuyo arquetipo es future_ready, RPF valida que cada ítem vinculado al rol cargue al menos una fuente citada del registro SMC. La puerta está implementada en el camino de publicación de roles (la PR #217 lo entregó) — devuelve un error de validación estructurado por ítem sin cita, que el constructor de roles renderiza en línea junto a la fila infractora.
La puerta no valida al guardar como borrador ni en propuestas intermedias; solo el camino final de publicación lo aplica. Esto mantiene fluida la experiencia de autoría: puedes esbozar un rol future-ready con ítems sin citar en borrador, y luego recorrer la lista de citas antes de publicar.
Los arquetipos legado e híbrido están exentos de la puerta. Documentan práctica observada, anclada en la propia superficie en lugar de en una cita. Si quieres que los ítems híbridos se citen igual, la UI estándar de fuentes citadas sigue disponible — la puerta simplemente no lo obliga.
El enum role_archetype y la FK succeeds_role_id están en nivel de estabilidad beta. Agregar un cuarto arquetipo (por ejemplo "experimental") sería un cambio aditivo en el enum y no requeriría un bump mayor; eliminar o renombrar un valor existente sí. Los cambios de esquema se guían por el journal (db/migrations/meta/_journal.json); los cambios de forma se destacarán en el registro de cambios.