---
id: 0025
title: Sync bidireccional con vault Obsidian / markdown
status: pending
priority: low
created: 2026-05-01
depends_on: [0024]
---

## Objetivo

Espejar el grafo activo a un vault de markdown (estilo Obsidian) en
`projects/osint_graph/vaults/<name>/`. Cada entidad = una nota; cada
relacion = un wikilink. El usuario puede navegar el grafo desde Obsidian
y editar campos alli; los cambios vuelven al grafo.

Encaja con `vaults/` ya conceptualizados en el registry.

## Alcance

- Watcher de filesystem + serializer/parser de notas con frontmatter
  YAML para los campos del entity_type.
- Plantilla por entity_type configurable (apoyandose en el exporter
  Markdown de 0024).
- Resolucion de conflictos: timestamp + merge campo a campo; preferencia
  configurable (vault wins / db wins / prompt).
- Modo unidireccional inicial (graph -> vault) si la ida y vuelta es
  mucho trabajo. v2 anade sync de vuelta.

## Decisiones

- Sync continuo o on-demand (boton "Sync now")? Empezar on-demand. El
  watcher se anade en una segunda fase.
- Detectar cambios externos via `mtime` + checksum.
- Wikilinks usan ids del registry, no nombres (estables ante renames).

## Definicion de hecho

- Boton "Sync to vault" genera N notas con frontmatter correcto y
  wikilinks navegables en Obsidian.
- Editar un campo en la nota y "Sync from vault" actualiza la entidad
  en operations.db.
- No se pierden datos cuando hay edicion concurrente en ambos lados
  (resolucion de conflicto explicita).
