Guía rápida — actualizar datos del SSOT
📋 Datos canónicos: NEGOCIO_SSOT. Esta guía explica CÓMO editarlos sin romper la arquitectura.
La regla mental
Solo hay un comando que necesitas recordar:
python3 scripts/audit/vault_update.pyEl script te abre el SSOT en tu editor, valida cuando lo cierras, te muestra el diff y te ofrece commitear. Si la validación falla, te ofrece reabrir el editor para arreglarlo. No puedes hacerlo mal.
Casos comunes
Caso 1 — Añadir un nuevo lanzamiento de Ritual Core Legacy
Ejemplo: lanzamiento de Junio 2026 con 15 ventas y $4.500 brutos.
- Ejecuta
python3 scripts/audit/vault_update.py - En el SSOT, busca la sección
## Lanzamientos (Ritual Core Legacy) - Añade una fila ANTES de la fila TOTAL:
| 2026-06 | Core y Suelo Pélvico - Junio26 | 15 | $4.500 | $300 | - Actualiza la fila TOTAL:
- ventas:
114→129(sumar 15) - revenue:
$30.973→$35.473(sumar 4500) - ticket medio: nuevo total / nuevas ventas (calcula a mano o deja igual; es informativo)
- ventas:
- Si era el mejor lanzamiento, ya tocará pensar si actualizar el flag
mutable=Falsedemejor_lanzamiento_usdenscripts/audit/audit_ssot.py(consulta a una IA si dudas). - Guarda, cierra el editor. El script valida y te ofrece commitear.
Caso 2 — Actualizar contactos Zenler
Ejemplo: el último export muestra 11.200 contactos totales y 10.100 entregables.
python3 scripts/audit/vault_update.py- Busca
## Segmentos de contactos Zenler - Edita:
- “Total Zenler (todos)” → cambia
10.863por11.200 - “Entregables (último broadcast)” → cambia
~9.900por~10.100
- “Total Zenler (todos)” → cambia
- Guarda y cierra.
Caso 3 — Añadir un evento crítico
Ejemplo: el 2026-09-01 abres una nueva membresía.
python3 scripts/audit/vault_update.py- Busca
## Eventos críticos - Añade fila al final (orden cronológico):
| 2026-09-01 | Apertura nueva membresía | inicio nuevo ciclo | - Guarda y cierra.
Caso 4 — Añadir un nuevo segmento de contactos
Ejemplo: 60 alumnas activas tras campaña de reactivación.
python3 scripts/audit/vault_update.py- Busca
## Segmentos de contactos Zenler - Añade fila:
| Alumnas reactivadas 2026 | **60** | tag `reactivada_2026` en CSV | - Si quieres exponer ese número en BI/index/dashboard vía Dataview, abre
scripts/audit/audit_ssot.py:- Localiza el bloque
seg_patterns(~línea 116) - Añade una tupla:
("alumnas_reactivadas", r"Alumnas reactivadas 2026\s*\|\s*\*\*([\d.,]+)\*\*", ["reactivada", "reactivadas"]) - Añade
"alumnas_reactivadas": "alumnas_reactivadas"al dictFRONTMATTER_TO_SSOT(~línea 155)
- Localiza el bloque
- Guarda, cierra. El script regenerará el frontmatter de BI con el campo nuevo.
Caso 5 — Cambiar el estado de un producto
Ejemplo: reabres la membresía.
python3 scripts/audit/vault_update.py- Busca
## Productos - En la fila de
membresia-ritual-core, edita la celdamodelo: quita “cerrada”, cambia precio si toca, actualizaalumnas_pagosi hay nuevas. - Guarda y cierra.
Si algo va mal
El script bloquea el commit si:
- Drift entre SSOT y frontmatter de BI → causado por editar BI a mano (no lo hagas). Solución: deja que el script regenere el FM.
- Hardcode mutable en prosa → causado por escribir un número de negocio en prosa nueva en BI/index/PROGRAMAS/etc. Solución: usa
`= this.X`(en BI) o`$= dv.page("BUSINESS_INTELLIGENCE").X`(en otros docs). - Violación direccional en SSOT → causado por añadir wikilink
[[OTRA_NOTA]]o referencia a.mddentro del SSOT. Solución: muévelo a_INDEX_NEGOCIO.md.
Cuando dudes, ejecuta el auditor sin commitear:
python3 scripts/audit/audit_ssot.py --strictGenera un reporte en _docs/audits/ssot_drift_<fecha>.md con cada hallazgo, ruta y línea exacta.
Atajos
| Quiero… | Comando |
|---|---|
| Actualizar datos paso a paso | python3 scripts/audit/vault_update.py |
| Validar sin editar nada | python3 scripts/audit/vault_update.py --no-edit --dry-run |
| Auto-commit (CI o desde otra IA) | python3 scripts/audit/vault_update.py --no-edit --auto-commit -m "..." |
| Solo auditar | python3 scripts/audit/audit_ssot.py --strict |
| Solo sincronizar BI | python3 scripts/audit/sync_ssot_to_frontmatter.py |
Aliases recomendados (tu próximo .zshrc/.bashrc)
alias vault-update='python3 scripts/audit/vault_update.py'
alias vault-check='python3 scripts/audit/audit_ssot.py --strict'
alias vault-sync='python3 scripts/audit/sync_ssot_to_frontmatter.py'