Appearance
Procedencia y citas
La procedencia es el foso competitivo de Futuros. Cualquiera puede mostrar cifras; lo raro es que cada cifra se remonte a un registro de fuente primaria específico en dos clics, y que el sistema falle en compilación si no puede. Este documento explica la maquinaria que sostiene ese contrato. Sirve tanto al Pilar 1 — Fideicomiso de Datos (la procedencia es lo que hace verificable el corpus) como al Pilar 2 — Modelo Soberano (los hechos viven en las citas, nunca horneados en pesos).
El contrato de dos clics
Toda cifra en pantalla lleva un marcador de cita. Un clic abre la referencia (título, editor, año); un segundo clic te lleva al registro exacto de la fuente — el país y el indicador precisos, no una landing genérica. Esa especificidad es una regla de build: la compuerta check-source-links hace fallar el build si un enlace apunta a una fuente genérica en vez del registro país + indicador. Si un dato no puede rastrearse así, no se publica como valor.
Convenciones de citation_id
El registro central de citas es public/data/citations.json. Cada cita tiene un citation_id con un prefijo que codifica su origen: wb- (Banco Mundial), oecd-, who-, gov- (fuente gubernamental), corr- (correlación), event-, etc. El prefijo no es cosmético: es lo que permite resolver una cita a su fuente aunque la cita no esté en el registro en memoria (ver reconstrucción sintética).
El registro de fuentes
src/lib/source-registry.ts mapea más de 150 SourceKey (acrónimos como WB, WHO, IMF) a su SourceMeta: acrónimo, nombre completo, agencia, jurisdicción, raíz de URL, plantilla de URL, cadencia, metodología (con variantes _en / _pt), tier y licencia. Las piezas clave:
inferSourceKey()resuelve uncitation_ida su fuente por el prefijo.deepLinkFor()construye el enlace al registro específico.- 34 funciones
url_templatereconstruyen el deep link por-indicador y por-país a partir del id solo — es decir, dado uncitation_idel sistema puede regenerar la URL exacta de la fuente sin depender de que alguien la haya guardado a mano.
Esto es lo que garantiza el segundo clic del contrato: el deep link no se almacena, se deriva, y por eso no puede quedar desactualizado respecto al id.
Marcadores CiteRef
src/components/citations/CiteRef.tsx es el marcador estilo Wikipedia presente en toda la plataforma: un superíndice como [WB] junto a la cifra. Al pasar el cursor muestra un popover (título, editor, año); al hacer clic lleva a la fuente externa. La resolución sigue este orden:
- Registro de citas en memoria (
citations.json). - Si no está, reconstrucción sintética desde el registro de fuentes.
Alrededor de CiteRef viven CitationChip, CitationDrawer, EvidenceBadge y SourceTrace (un cajón de respaldo con metodología y el log de falsificaciones). El recorrido de extremo a extremo es: valor horneado → citation_id → CiteRef → registro → deep link.
Reconstrucción sintética para embeds
Las superficies incrustables (/embed/stat, /embed/chart, /embed/board) no siempre cargan el registro completo de citas — pesaría demasiado. Para eso existe syntheticCitation(): reconstruye la cita a partir del citation_id y el registro de fuentes (prefijo → SourceKey → url_template). Resultado: una tarjeta incrustada en un sitio de terceros conserva su cita y su deep link, sin cargar los megabytes del registro. La procedencia viaja con el dato, no con la página.
Badging de citas web externas
No todo hecho viene del corpus horneado. Cuando el asistente usa búsqueda web como último recurso (ver El asistente), esas citas llevan el prefijo web- y se marcan visiblemente como externas. La razón es honestidad: un hecho traído de la web abierta nunca debe confundirse con un dato del corpus verificado. El badging separa las dos clases de evidencia en la propia interfaz, para que el lector sepa siempre qué tan firme es el piso bajo cada cifra.
Log de falsificaciones
public/data/falsifications.json es el registro de afirmaciones que fueron puestas a prueba — el reverso de "cada cita es una fuente": cada falsificación es un compromiso auditable de que la plataforma corrige lo que resulta no sostenerse. SourceTrace lo expone junto a la metodología de la fuente. Es parte del contrato de honestidad que se detalla en Metodología y honestidad.
En resumen, la procedencia en Futuros es derivable, no prometida: el deep link se reconstruye del id, la cita sintética viaja al embed, y el build se niega a compilar si algún enlace apunta a una fuente genérica. Sigue con El asistente para ver cómo el chat hereda esta misma disciplina — cada figura anclada a un [[cite:id]].