Semántica de computeRoleDiff() — aristas de perfil, reclasificaciones, desplazamientos de IRI/ICI, reordenamientos de etapas de flujo — el nivel de estabilidad del esquema y el registro de cambios.
El diff de roles es una función pura sobre dos roles publicados, A y B. Devuelve un paquete RoleDiff estructurado con seis secciones de nivel superior — aristas de perfil agregadas, eliminadas, reclasificaciones, deltas de IRI/ICI por arista de perfil, cambios en etapas de flujo — más un agregado de resumen. Pura significa: las mismas entradas siempre producen la misma salida, sin consultas a la base de datos dentro de la función, segura para llamar desde componentes de servidor sin plomería adicional.
Cada rol carga un conjunto de vínculos de aristas de perfil: (profile_id, classification, iri, ici). El diff clasifica cada arista como agregada (presente en B, no en A), eliminada (presente en A, no en B) o común (presente en ambos).
Perfiles presentes tanto en A como en B donde la clasificación cambió (por ejemplo, soporte → primario). El diff carga (perfil, classificationA, classificationB) para que la UI pueda renderizar el par antes/después.
IRI ranges 0–3 per profile per role. For common profile edges, the per-edge delta is B.iri − A.iri. Per-edge deltas are summed into iriShiftTotal for the summary bar. A positive total means the future-ready role demands more information across its profiles.
ICI ranges 0–3 per profile per role. For common profile edges, the per-edge delta is B.ici − A.ici. Per-edge deltas are summed into iciShiftTotal. A positive total means the future-ready role demands more competency depth across its profiles.
Cada rol carga una lista ordenada de etapas de flujo. El diff clasifica cada etapa como agregada (en B no en A), eliminada (en A no en B) o reordenada (en ambos con una posición ordinal distinta).
Los reordenamientos son típicamente la categoría más informativa para el encuadre de transformación — muestran cómo se mueve el centro de gravedad del flujo. Un BIM Manager future-ready que coloca "validación de información" antes que "coordinación de modelo" es un tipo de rol distinto al que los pone en orden inverso.
Cada paquete RoleDiff carga un resumen con siete conteos: commonProfiles, addedProfiles, removedProfiles, classificationChanges, iriShiftTotal, iciShiftTotal, flowReorders. La barra de resumen en la parte superior de RoleDiffView las lee y renderiza los siete conteos como la forma de un vistazo de la transformación.
La matemática del diff es agnóstica de jurisdicción — dados A y B, la función devuelve el mismo paquete RoleDiff independientemente de quién esté leyendo. Lo que es consciente de jurisdicción es contra qué rol canónico future-ready compara un fork organizacional dado; esa decisión vive aguas arriba del diff, en la superficie de arquetipos de rol.
El esquema del paquete RoleDiff está en nivel de estabilidad beta. La forma puede evolucionar en versiones menores hasta 1.0; los cambios de forma incompatibles incrementarán el schemaVersion en el sobre del paquete y el cambio se destacará en el registro de cambios.