-- copied_code: matches de cuerpos de funcion del registry encontrados en apps. -- Poblado por `call_monitor copied-code` que invoca infra.AuditCopiedCode. -- Cada fila representa un (app_file, app_function, registry_id) sospechoso. -- UNIQUE incluye body_hash para que solo se inserte una vez por (path,fn,id,hash). CREATE TABLE IF NOT EXISTS copied_code ( id INTEGER PRIMARY KEY AUTOINCREMENT, app_file TEXT NOT NULL, app_function TEXT NOT NULL, registry_id TEXT NOT NULL, body_hash TEXT NOT NULL, similarity REAL NOT NULL DEFAULT 1.0, kind TEXT NOT NULL, detected_at INTEGER NOT NULL, UNIQUE(app_file, app_function, registry_id, body_hash) ); CREATE INDEX IF NOT EXISTS idx_copied_registry ON copied_code(registry_id); CREATE INDEX IF NOT EXISTS idx_copied_kind ON copied_code(kind); CREATE INDEX IF NOT EXISTS idx_copied_detected ON copied_code(detected_at);