-- Migración 005: tabla de escaneos de red (network_scans). -- -- Persistencia de escaneos de reconocimiento de red (whois, rdap, dns, nmap, -- traceroute, ping) que otras herramientas del ecosistema OSINT registran vía -- HTTP en POST /api/scan. Vive en el schema main (no en derived) porque lleva -- note_path: cada escaneo referencia la nota .md del vault donde se documenta su -- salida (dominios//recon/<...>.md). La regla dura "derived sin note_path" -- no aplica aquí — esta es una maestra con referencia a notas, igual que persons -- o contacts. -- -- A diferencia de las maestras de espejo puro (notes, organizations, ...) y de -- las DAV (contacts, events), network_scans NO se reconstruye en ningún ingest: -- la pueblan los escaneos vía /api/scan y nunca se trunca. Por eso ni -- ingest_vault ni ingest_dav la tocan. -- -- Aditiva e idempotente: CREATE TABLE IF NOT EXISTS + CREATE INDEX IF NOT EXISTS. CREATE TABLE IF NOT EXISTS network_scans ( id VARCHAR PRIMARY KEY, -- "::" target VARCHAR NOT NULL, target_slug VARCHAR NOT NULL, scan_type VARCHAR NOT NULL, -- whois|rdap|dns|nmap|traceroute|ping tool VARCHAR, scan_ts TIMESTAMP NOT NULL, note_path VARCHAR NOT NULL, -- dominios//recon/<...>.md summary JSON, created_at TIMESTAMP DEFAULT now() ); CREATE INDEX IF NOT EXISTS idx_network_scans_slug ON network_scans(target_slug); CREATE INDEX IF NOT EXISTS idx_network_scans_type ON network_scans(scan_type);