Diccionario de Variables — Payload de Ejemplo Real (dictionary-example.json)
Este es un payload real de variables exportado de una verificación de la plataforma de Trébol. Es el grounding más autoritativo que tenemos sobre cómo se llaman exactamente las variables y qué forma tienen los datos que Trébol inyecta en una plantilla.
Qué es exactamente
- Un mapa plano JSON:
nombre_de_variable → valor de ejemplo. - 3.420 claves en total. ~469 son plumbing de FUENTE (
*_source*); el resto son variables de dato. Hay ~1.176 “stems” lógicos distintos (colapsando los índices numéricos). - Su base proviene de una verificación de ejemplo, una empresa mexicana (
CONSTRUCTORA DEMO, S.A. DE C.V., una sociedad unipersonal). Por eso casi todos los valores son datos de ejemplo de esa empresa. - Enriquecido con un segundo payload de ejemplo (
DISTRIBUIDORA EJEMPLO, S.A. DE C.V., otra verificación MX): al comparar ambos, el segundo resultó cubrir casi exactamente las mismas familias que el primero, salvo 4 sub-campos de domicilio desagregado que el primero no traía. Esos 4 se añadieron al JSON para completar el esquema de direcciones (ver “Direcciones” abajo). El resto del segundo payload ya estaba cubierto, así que no se duplicó.
Para qué sirve (y para qué NO)
Sí es autoritativo para:- El nombre exacto de cada variable presente (grafía, mayúsculas/minúsculas, separadores, numeración). Si una variable aparece aquí, así se escribe.
- La forma del dato: si es texto, número, booleano, lista (bucle) u objeto anidado. Esto le dice al ingeniero y al legal qué esperar en la plantilla.
- Confirmar la numeración por familia con datos reales (ver abajo).
key_person_* (apoderados) ni board_member_* (consejo), porque esa sociedad unipersonal no los tenía. Eso no significa que esas variables no existan; siguen documentadas en variable-catalog.md, example-template-reference.md y la doc web.
Regla: la presencia confirma; la ausencia no descarta. Si una variable está en el JSON, úsala con confianza. Si no está, cae a los otros documentos de grounding antes de concluir que no existe.
Estructura de los valores
Los valores vienen en cuatro formas, y cada una le dice al pipeline cómo tokenizar:- Escalar (string / int / bool / float) → variable simple
{variable}. Ej.:"legal_businessName": "CONSTRUCTORA DEMO","is_unipersonal": true,"capital_fixedValue": "50.000". - Lista → familia de bucle
{#lista}...{/}(en Word) o instancias indexadas (en PDF). Ej.:sources,actaSources,external_sources_renapo,executives,auditors,shareholders. Cada elemento de la lista es un objeto con las sub-claves que van relativas dentro del bucle. - Objeto anidado (dict) → grupo de sub-campos accesibles por sufijo.
Ej.:
"renapo_0"es un objeto concurp,names,first_surname, …; en las plantillas eso se ve aplanado comorenapo_0_curp,renapo_0_names, etc. (ambas formas conviven en el JSON). - Las claves
*_source*son el plumbing de FUENTE (escritura, fecha, notario, folio). Confirman cómo se nombra cada pieza de la cláusula de FUENTE.
Familias presentes en este payload
Las más voluminosas:sources (981), shareholder (624), actaSources (529), fiel/fiel_sello (211), executive (147), people (147), siger (130), legal (114), ubos (84), renapo (81), tax (75), ine (74), registration (73), auditor (45), más capital, forms, comercialAddress/fiscalAddress (+ sus *Disaggregated), aml_validation_*, verification_*, group_*, share_*.
Esto confirma con datos reales varias familias que en variable-catalog.md estaban solo documentadas: las consultas externas (RENAPO, INE, SIGER, FIEL/Sello), ubos_*, tax_*, external_sources_*, y el plumbing completo de FUENTE.
Lo que este payload confirma (verificado contra dato real)
- Numeración 0-based confirmada para
shareholder_0/shareholder_1,executive_0,renapo_0/1/2,auditor_0. Consistente con la regla del catálogo (accionistas/órganos 0-based). tax_additionalDatase escribe con la “i” (additionalData), confirmado por las claves realestax_additionalData,tax_additionalData_source_itemId. La grafíatax_additonalDataque aparece en la plantilla de referencia es una errata y no debe replicarse. (Esto se reflejó encorrections.md.)- Sin claves con guion medio en este payload (todo
_). No resuelve la duda de Colombia (este payload es de México), pero confirma que la familia mexicana usa_de forma consistente.
Direcciones (comercial vs fiscal) — esquema completo
Comparar los dos payloads confirmó algo importante para configurar plantillas: cada domicilio de la empresa viene en dos formas que conviven (línea única + desagregado), y las dos direcciones desagregadas NO usan el mismo esquema de sub-llaves:- Comercial desagregada → sub-llaves en ESPAÑOL (
comercialAddressDisaggregated_*):tipo_vialidad,nombre_vialidad,numero_exterior,tipo_asentamiento,nombre_asentamiento,codigo_postal,municipio_o_ente_territorial,entidad_federativa,pais. MáscomercialAddress(línea única),comercialAddress_razon_socialycomercialAddress_source_date(+_day/_month/_year). - Fiscal desagregada → sub-llaves en INGLÉS (
fiscalAddressDisaggregated_*):street_type,street_name,external_number,internal_number,neighborhood,district,post_code,state. MásfiscalAddress(línea única) yfiscalAddress_source_date(+_day/_month/_year).
fiscalAddressDisaggregated_codigo_postal ni comercialAddressDisaggregated_post_code. Esta asimetría es intencional (no es un typo a “corregir”).
Las 4 sub-llaves que el segundo payload aportó y se añadieron al JSON: comercialAddressDisaggregated_tipo_vialidad, comercialAddressDisaggregated_nombre_vialidad, comercialAddressDisaggregated_tipo_asentamiento, fiscalAddressDisaggregated_street_type.
Regla de mapeo: si la plantilla del cliente tiene una sola línea de dirección → usa {comercialAddress} / {fiscalAddress}. Si separa la dirección en campos → usa los sub-campos desagregados eligiendo el idioma por familia (español para comercial, inglés para fiscal). El detalle completo, incluidos los domicilios de personas (*_mx_address_*), está en variable-catalog.md → sección “Domicilios”.
Cómo usar este archivo en el pipeline (importante)
El archivo pesa ~892 KB. No lo cargues entero en contexto. Consúltalo programáticamente cuando un stage necesite verificar una variable:- Stage 2 (Map Variables) lo usa como fuente principal para confirmar la grafía exacta de cada variable candidata y decidir simple vs bucle según la forma del valor.
- Stage 3 (ingeniero) lo cita como prueba de existencia/escritura (“la clave real es
X, noY”). - Stage 5 (helpers) lo consulta para resolver si una familia es lista (bucle/instancias) o escalar.
Orden de precedencia del grounding
corrections.md— máxima prioridad (verdad confirmada contra verificaciones reales).dictionary-example.json(este archivo) — ground truth de nombres y formas para las familias presentes.example-template-reference.md— cómo se ve una plantilla bien tokenizada (pero tiene erratas conocidas).variable-catalog.md— explicación destilada y catálogo curado (incluye familias ausentes en el JSON).- Documentación viva en
https://docs.gotrebol.com/plantillas/— referencia general.
corrections diga otra cosa.