Derivación de importancia; layout en capas; semántica de versionado; limitaciones conocidas.
El tamaño de la estación lo guía una puntuación de importancia en [0..1] calculada a partir del conteo de perfiles vinculados (40%), el conteo de votos de panel (30%, lado de lectura de M19.5), el conteo de patrocinios (20%, lado de lectura de M19.7) y la recencia (10%). Hasta que lleguen M19.5 / M19.7, la fórmula se degrada con gracia — los LEFT JOINs devuelven cero y la puntuación refleja la densidad actual del corpus.
Hacemos el layout en capas a mano en lugar de agregar `d3-dag`. Las estaciones se asignan a capas por la profundidad del camino más largo de predecesores; dentro de cada capa se ordenan por baricentro (prioridad y media de los predecesores) con desempate estable por id de estación. `roles.metro_layout_hint` de la curaduría admin en producción sobrescribe ambas coordenadas si está presente.
La versión es un hash FNV-1a de 64 bits sobre una serialización determinista de (disciplina, jurisdicción, locale, identidad-y-arquetipo de rol, flags de compuerta de IU, vínculos de material). Mismo contenido entrada → mismo hash salida. Cuando incrustas un mapa con una versión fijada, el iframe permanece estable a través de futuras ediciones de contenido.
Las exportaciones estáticas usan `@resvg/resvg-js` (SVG → ráster PNG) y `pdf-lib` (PNG → PDF de una página). Sin Chromium headless — mantiene el contexto Docker liviano y los arranques en frío de Cloud Run rápidos. Tres tamaños (pequeño/mediano/grande); tres formatos (svg/png/pdf).
Cita un mapa por su enlace permanente: /[lang]/transformations/[discipline]/v/[version]?jurisdiction=ISO3. El enlace permanente fija a la versión por hash de contenido; aunque el corpus evolucione, la URL citada permanece estable.