{
  "audit_version": "2026-09-02-v51-final-hardening",
  "purpose": "Verificación pública y limitada de archivos cliente relacionados con privacidad y flujos observables.",
  "scope": "client-side privacy and externally observable data flows",
  "not_in_scope": [
    "backend topology",
    "private configuration",
    "credentials",
    "operational procedures",
    "internal parser rules"
  ],
  "privacy_assertions": [
    "El archivo original de factura se procesa en el navegador y no se envía automáticamente.",
    "La comparación transmite solo los datos técnicos necesarios para la consulta, no el archivo original ni el CUPS.",
    "La analítica de terceros solo se activa tras consentimiento.",
    "El nombre original del archivo subido no se incorpora intencionadamente a Analytics.",
    "Las métricas internas son contadores agregados sin identificadores persistentes y requieren un token first-party efímero antes de aceptar eventos."
  ],
  "client_files": [
    {
      "path": "/assets/index-CFSEO244EC0176DA6-RANKING-V7-LEADS.js",
      "sha256": "7fbcec012fb6bd871319f2b33f075e9cbff7dd490e2a2e4b292f9126a1b9b0f0",
      "purpose": "Aplicación cliente principal ES"
    },
    {
      "path": "/assets/index-CFSEO244EC0176DA6-RANKING-V7-LEADS-CA.js",
      "sha256": "3e459283bf11535ac6ed1710f3fc3ed27f910763d8eb5eab9536b641266db2bf",
      "purpose": "Aplicación cliente principal CA"
    },
    {
      "path": "/assets/index-CF-CARLOSCODINA-V2.js",
      "sha256": "9be6f57dfdf19fcff1e2b70ec1de4698983f673ec80fbefd0b8bff02f1965749",
      "purpose": "Aplicación cliente de la integración Carlos Codina"
    },
    {
      "path": "/CarlosCodina/carlos-codina-v1.js",
      "sha256": "e3a9892590a6aa5de77a03fe71d19de44be55e9d15c9f6fc30adb92860f312de",
      "purpose": "Adaptador cliente de la integración Carlos Codina"
    },
    {
      "path": "/cf-attribution.js",
      "sha256": "a0bd0bd558a035c439a4da03aeaa5ce63efeb0217c36a468aefd2d897ae03790",
      "purpose": "Atribución de procedencia condicionada por consentimiento"
    },
    {
      "path": "/cf-site-metrics.js",
      "sha256": "8a654533f3e928c60deebc83c8af45bc14435b0d3143073d2248882c3e9f40c2",
      "purpose": "Contadores agregados de embudo"
    },
    {
      "path": "/anonymizer.js",
      "sha256": "44f4ed86769d7a22bfca0a7659bfd8af48efff7a97dcb7983cc519cf44486347",
      "purpose": "Herramienta cliente de anonimización"
    },
    {
      "path": "/pdf-parser-compat.js",
      "sha256": "3256d5c216eda828581104b7b41ac3e107a8e8cf0077a272ac76afe09b6c992e",
      "purpose": "Compatibilidad del lector PDF"
    },
    {
      "path": "/qr-camera-compat.js",
      "sha256": "68c9a043f0d3b26e1d4d6027a22a17835e2fa94eca204aed8b7d5dd2ac7b49dc",
      "purpose": "Compatibilidad de lectura QR"
    },
    {
      "path": "/cookie-consent.js",
      "sha256": "e0b75d40044656307778c1aca05e2f6843a4f07cc6cc7911f1025f74ada5c2c5",
      "purpose": "Gestión de consentimiento ES"
    },
    {
      "path": "/cookie-consent-ca.js",
      "sha256": "c9bef64328a8722c76176fb21a8b6398c08fe14347ca8ca4cacd1d07e5514a91",
      "purpose": "Gestión de consentimiento CA"
    },
    {
      "path": "/app-bootstrap.js",
      "sha256": "9b5ff1aa6b4c11aeb6ae26f4a60d4d213885ac2ab8055fd71f12605606c8dacd",
      "purpose": "Inicialización cliente"
    }
  ],
  "audit_date": "2026-09-02"
}
