Documenta la inversión implementada el 13/06/2026: ingest selectivo anti-pisado,
multi-valor en persons (634 fichas migradas), libretas (addressbooks), endpoints de
escritura estructurada, consumo desde osint_web tras el flag OSINT_DB_BACKEND (ON), las 5
funciones nuevas del registry, el runbook anti doble-verdad y el runtime systemd
(osint-db.service, Restart=always).
- sync_dav_to_osint.py (NUEVO): reverse sync Xandikos->vault. Trae contactos
nuevos del movil (contexto: movil, dedup por tel/email) y ediciones de agenda
(nombre/tel/email/aliases) PRESERVANDO la capa OSINT (relaciones/dni/contexto/
fuente/tags). Estado persistente .sync_state.json (UID->etag/vault_mtime).
Reconciliacion por etag; --dry-run (default) / --apply.
- sync_osint_to_dav.py: anade --check (audit read-only vault<->Xandikos: fichas
sin vCard, vCards huerfanos, agendas divergentes) y optimiza build_existing_index
con dav_get_collection (1 REPORT, ~9s->~0.5s) en vez del patron N+1.
Usa las funciones del registry: dav_get_collection, dav_delete_resource,
carddav_put_vcard, obsidian CRUD, pass_get_secret.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>