Metodología y cobertura

Nota de método de Desgobierno Digital (desgobiernodigital.com) para la base de datos cuya última captura cerrada es la del 7 de noviembre de 2026. Es el documento del método, generado de la base: no lleva hallazgos ni nombra organismos. La huella sha256 de este fichero y la del PDF, y el sello de tiempo si se ha pedido, están en https://desgobiernodigital.com/metodo/nota/. Esta versión para la web lleva solo el estado vigente: las reglas retiradas o en prueba se cuentan y no se nombran. El documento completo, con el historial de cada regla, acompaña a la base de datos.

  1. 1 · Qué es y qué no es
  2. 2 · Cómo se obtiene
  3. 3 · Qué se mide
  4. 4 · Con qué modelos
  5. 5 · Cómo se asigna la severidad
  6. 6 · La prueba de cada hallazgo
  7. 7 · Cómo se valida
  8. 8 · Límites
  9. 9 · Cobertura por comunidad
  10. 10 · Actualización

Generado de la base. Última captura cerrada: 7 de noviembre de 2026.

1 · Qué es y qué no es

Una base de datos de lo que las webs de la Administración pública española sirven a cualquiera que las abra: qué activos hay, con qué tecnología y qué se puede observar en ellos desde fuera, con la prueba de cada cosa y su evolución entre capturas.

No es una auditoría de seguridad ni una prueba de intrusión. No entra en ningún sistema, no se autentica, no envía formularios y no prueba nada: solo pide lo que el sitio sirve y enlaza y las direcciones estándar que se publican para esto (/robots.txt, /sitemap.xml, /sitemap_index.xml, /sitemap-index.xml y /.well-known/security.txt), además de la portada por http://, para ver si lleva a https://. Son peticiones de lectura. robots.txt se guarda y, desde el 2 de noviembre de 2026, no se obedece; las capturas anteriores lo leían con un lector que no entendía sus comodines. Si un sitio no sirve sus páginas sin la cookie de sesión que él mismo pone, se le devuelve durante esa visita, como haría un navegador, y no se guarda. No afirma que un fallo se pueda aprovechar, y no sustituye a las herramientas del CCN-CERT ni a una auditoría del propio organismo.

2 · Cómo se obtiene

La lista de sitios. No hay censo oficial. Se parte de dominios de organismos, de las webs oficiales de municipios y diputaciones en Wikidata unidas al código del INE, y de los registros públicos de certificados. En la ampliación nacional no se capturan los nombres de preproducción, pruebas, intranet, correo o VPN; la lista inicial incluye alguno cuando lo que sirve es público, y solo se lee lo que entrega sin autenticarse.

De quién es cada sitio. Que una lista diga que una web es de un organismo no lo prueba. Cada activo lleva en qué se apoya atribuírselo: un dominio .gob.es; el certificado de una autoridad de certificación pública; una sede electrónica declarada que contesta; el certificado académico de una institución pública según una fuente oficial; en su portada, su aviso legal o su pie, el NIF de una entidad local de su provincia (letra P) o de un órgano del Estado o de una comunidad (letra S), o ese mismo NIF P o S cuando es el de un ente del registro de entidades locales de Hacienda (BDGEL); o colgar del dominio de un organismo ya probado. La letra Q no basta: también la llevan corporaciones que no son Administración. Lo que no tiene ninguna de estas pruebas se queda, marcado «sin probar», si sale de una fuente oficial: las webs de municipios de Wikidata unidas al código del INE o los dominios de organismos. Si sale de una lista de candidatos, los entes hallados por un enlace desde otra web pública o por un nombre habitual que existe en el DNS, no se le atribuye nada: se guarda y se cuenta aparte, fuera del ámbito de cualquier cliente. En la lista de candidatos del 7 de noviembre de 2026 salieron así periódicos, empresas, asociaciones y servicios de terceros. Lo que, leído uno a uno, no es del organismo que dice la lista tampoco se le atribuye, con su motivo y su lectura.

La captura. Cada sitio se visita con su límite de páginas y de ficheros, y cada fichero se guarda con su huella sha256 y la hora de la petición. Una captura se cierra y no se vuelve a escribir.

captura cerradasitiossirvieron alguna página
11 de septiembre de 20262.1741.248
26 de septiembre de 20262.1721.223
22 de octubre de 20262.1721.170
26 de octubre de 2026406251
3 de noviembre de 20266340
4 de noviembre de 20261.9571.372
5 de noviembre de 20267.5465.544
7 de noviembre de 2026333234

Que un sitio no sirva nada es un resultado, y se cuenta.

Pintado sin red. Dos reglas de accesibilidad, accesibilidad.contraste y accesibilidad.foco, no leen el código: pintan la copia archivada de la portada y, si existe en el mismo sitio, de la página de accesibilidad o de la sede, en un navegador (Chromium sin cabeza, con axe-core) dentro de un contenedor sin conexión. Cada petición de la página se sirve con lo que guardó la captura, su HTML, su CSS y su JavaScript, o se rechaza: no se pide nada a ninguna web. Sin red no hay imágenes ni fuentes web, que la captura no guarda, ni lo que el sitio carga de terceros; por eso solo se juzgan las páginas a las que no les faltó ninguna hoja de estilo. Es otro perfil que el de la captura, y cada fila lo lleva: con qué navegador, con qué versión de axe-core y qué faltaba. Solo dan filas los sitios con titularidad probada, y cada fila nombra la dirección en la que acabó la página.

3 · Qué se mide

familiaorigenqué miraseveridades
Software obsoletoregla sin IALibrerías de JavaScript con su versión leída en el propio fichero, cruzadas con las bases públicas OSV y KEV; servidores y gestores fuera de soporte según endoflife.date; analítica que sigue configurada en Universal Analytics o el Analytics clásico, que ya no procesan datos.medio, bajo
Transporte y cabecerasregla sin IACertificados; versión de TLS: la que no negocia nada que un cliente actual acepte, la renegociación insegura, y TLS 1.2 negociado con un cliente que ofrecía 1.3; la suite que eligió el servidor en TLS 1.2, cuando está fuera de la configuración «intermediate» de Mozilla 6.0 (sin secreto hacia adelante o en modo CBC), con el dato de si autentica con HMAC-SHA-1; https; contenido mixto; enlaces de una página https a su propio host por http://, cuando su respuesta no lleva HSTS ni upgrade-insecure-requests; cookies de sesión puestas sin Secure, sin HttpOnly o sin SameSite, en todas las páginas propias; cabeceras de seguridad de la portada.alto, medio, bajo
Cadena de suministroregla sin IACódigo que la página carga de otro dominio: sin comprobación de integridad; de servicios que se sabe comprometidos; de dominios que ya no existen.alto, bajo
Privacidad antes del consentimientoregla sin IAAnalítica, publicidad y otros recursos de terceros que el HTML carga sin esperar a que el visitante acepte.medio, bajo
Accesibilidadregla sin IALo que se comprueba leyendo el código (Real Decreto 1112/2018); contraste del texto y foco visible con el tabulador, pintando sin red la copia archivada (WCAG 1.4.3 y 2.4.7). No sustituye a una auditoría con personas y lectores de pantalla. En camino, todavía sin filas en esta base: lo que dice la declaración de accesibilidad: situación de conformidad, contenido no accesible, normas y fechas; y si no da una vía de contacto o de reclamación (lo lee un modelo, con la cita comprobada).medio, bajo
Requisitos legalesregla sin IAAviso legal; cookies; canal interno de información en la página de inicio (Ley 2/2023); contacto del delegado de protección de datos; inventario de tratamientos; el calendario de días inhábiles, si no se enlaza; conformidad con el ENS; declaración de accesibilidad con más de un año o que no está en todas las páginas; normativa derogada aplicada como vigente, con la frase literal. Dice «no consta en N páginas capturadas», nunca «incumple», y no juzga un sitio cortado por el tope ni tras un antibots. En camino, todavía sin filas en esta base: qué apartados del artículo 13 del RGPD constan en la página de protección de datos, y la fecha que dice tener; y si no constan la base jurídica, el plazo de conservación, la vía de reclamación ante la autoridad o el delegado de protección de datos (lo lee un modelo; del delegado, solo si consta, nunca su nombre ni su correo).medio, bajo
Sede electrónicaregla sin IALos 19 apartados del artículo 11 del Real Decreto 203/2021 con su índice «constan N de 19», donde constar es una mención o un enlace y no juzga la calidad; si lo que se pinta como hora oficial es la del ordenador de quien mira; si el certificado que presenta la sede se declara cualificado de autenticación de sitio web, leído en el propio certificado (sus QCStatements, ETSI EN 319 412-4 y 412-5), solo en sedes que lo dicen en su portada y en el host que contesta: la que redirige a otro, o una captura sin el certificado guardado, no se juzga. En una sede estatal es medio (el RD 203/2021 art. 18.2 no admite «medio equivalente»); en el resto, bajo. En camino, todavía sin filas en esta base: lo que la portada de la sede declara: el organismo titular, el registro todos los días, la verificación de documentos por CSV, las notificaciones, el pago en línea y un canal de quejas (lo lee un modelo, con la cita comprobada; un dato, no algo que corregir).medio, bajo
Formulariosregla sin IAContraseñas enviadas sin cifrar o en la dirección; el DNI, el NIF o el NIE enviados en la dirección; formularios que envían los datos a un dominio ajeno al organismo; formularios de una página https que envían por http; campos de DNI, IBAN, teléfono o código postal que no dejan escribir el dato entero.alto, medio, bajo
Correo suplantableregla sin IASPF y DMARC de cada dominio de organismo, en el DNS público; con la fotografía del DNS, además: DMARC sin informes, MTA-STS, TLS-RPT y SPF roto.alto, medio, bajo
DNSregla sin IADe cada dominio registrable, leído de una fotografía fechada del DNS público: DNSSEC y DNSSEC roto; CAA; IPv6; si la zona tiene un solo servidor de nombres o todos en la misma red /24 (RFC 1034 y 2182; la dirección de los servidores se preguntó después de la fotografía). Son prácticas que miden internet.nl y Basisbeveiliging, no norma española. Lo que no contestó sale como no medido. DANE no se mide: la fotografía no guarda TLSA.bajo
Portales de transparenciamodelo y reglaUn modelo lee entera la portada de transparencia de un organismo y contesta hechos: el último ejercicio escrito para cada apartado; la fecha que la página dice tener; si la página no lleva ninguna fecha. Cada cita se comprueba contra el fichero, y lo que no aparece idéntico cae. La severidad la pone una regla escrita, la misma para todos: de momento, bajo. Nunca dice «incumple»: dice «no consta en esta página», y lo fechado puede estar en las que enlaza. La misma lectura, sobre las fichas de trámite, da en la familia de trámites si la página pide un programa concreto. Lo que falta en una ficha no se dice, ni si un trámite tiene vía en línea: saberlo exige saber qué trámite es y si sigue vivo, y eso no sale de leer la página. En camino, todavía sin filas en esta base: la más reciente junto a un documento.bajo
La dirección ya no es su webregla sin IADirecciones que una fuente da como de un organismo y cuya portada, según su título y las marcas de los aparcadores de dominios, anuncia apuestas, porno u otro negocio; está en venta o cerrada; es la página por defecto del servidor; o, si es la web principal de un ayuntamiento, está en otra lengua y ninguna de sus páginas nombra al ayuntamiento: el dominio lo usa otro. También si redirige a otro sitio. No dice que la dirección fuera suya ni que el organismo lo sepa. Lo demás que se midió en esas direcciones no se le atribuye a nadie: sale de los hallazgos y de los denominadores, y lo quitado queda contado en la tabla descartes_portada. Igual con las que, leídas una a una, no son del organismo que dice la fuente (una web de vecinos, una empresa, un dominio que registró otro, una máquina ajena detrás de su nombre): van a mano, con su motivo y su lectura, y lo quitado queda en la tabla no_es_del_ente. De un dominio oficial cuyo nombre apunta a una máquina ajena se quedan su DNS y su correo, que siguen siendo del organismo.medio, bajo
Contenido ajenoregla sin IALo que alguien ha metido en la web de un organismo: páginas que anuncian fármacos o casinos; enlaces visibles a otro dominio con esas mismas fórmulas. Solo mira lo que describe la página y términos sin otra lectura. Es un mínimo: no ve lo que solo se enseña a los buscadores. Un caso alto lo sostienen dos lecturas de un modelo, la segunda a ciegas.medio
Tiemporegla sin IACuánto hace que existe lo que hay en producción: componentes sin soporte que la familia de software obsoleto no mira; versiones de 10 años o más. Dice cuánto lleva así, no que se pueda aprovechar.medio, bajo
Código legacyregla sin IAPáginas programadas para una tecnología que los navegadores de hoy ya no tienen: una página cuyo texto pide la máquina virtual de Java, un applet o un control ActiveX; código hecho para Internet Explorer (comentarios condicionales, emulación de versiones viejas, document.all sin comprobar); elementos que el estándar HTML declara obsoletos: framesets, <font>, <marquee>, <center> y los de su lista (WHATWG §16.2), contados por página. Solo cuenta lo que el navegador lee como marcado o código: no los comentarios, ni la alternativa dentro de un <video>, ni las librerías de terceros. Dice para qué está programada la página, no que se pueda aprovechar. Es un mínimo: no ve lo que un script monta por su cuenta.medio, bajo
Errores a la vistaregla sin IALo que una persona ve roto al abrir la web: páginas con una traza o un error de la aplicación; phpinfo() publicado; páginas por defecto del servidor y textos de relleno; acentos rotos; variables sin rellenar en el título; enlaces internos que dan 404, en porcentaje sobre los comprobados. Cada fila es un hecho del día de la captura. Los enlaces rotos son un mínimo: las capturas cerradas solo anotan el 404 de las páginas interiores.medio, bajo
Trámites y contrataciónregla sin IAQuién sostiene cada sede (inventario por dominio: Cl@ve, VALIDe, FACe, la Plataforma de Contratación, cita previa, pago, y el gestor por la firma de la página); páginas sin <meta viewport>; programas para instalar enlazados desde una sede o un trámite, salvo clientes oficiales; por ausencia, la factura electrónica; por ausencia, el perfil de contratante. Dice lo que dice la página: lo que hay tras el acceso no se ve.medio, bajo
Higiene y mantenimientoregla sin IAEnlaces visibles a dominios que no resuelven; enlaces a servicios retirados; Java Web Start; webs cerradas a buscadores; sitemap; fechas; codificación; componentes que pierden soporte en 12 meses. Lo que una captura vieja no guardó sale no medido.medio, bajo
Lenguasregla sin IAPáginas cuyo lang dice una lengua y cuyo texto está en otra.bajo
Datos abiertosregla sin IATextos legales que prohíben reproducir los contenidos; presupuestos y contratos menores solo en PDF; cuántos conjuntos publica cada organismo en datos.gob.es, de una foto fechada; la falta de portal de datos, solo en órganos de la Administración General del Estado, que son a quienes una norma se lo pide. Que un ayuntamiento no tenga portal de datos no es un hallazgo: ninguna norma se lo pide.bajo
Plano de dentro a la vistaregla sin IADirecciones de la red interna; rutas de disco; máquinas locales que una página lleva escritas; listados de directorio; versiones que anuncian las cabeceras de la portada. Es dato interno: la base guarda el fichero, su huella y la línea, nunca el valor. No se comprueba si esas direcciones contestan. Es un mínimo: no ve lo que un script monta al ejecutarse.medio, bajo
Lectura del códigomodelo y reglaUn modelo de lenguaje lee el código propio de cada sitio y contesta hechos: qué expone, quién lo ve, qué decide, de dónde sale el dato. La severidad la calcula después una regla escrita.bajo
Coherencia entre sitiosregla sin IALo que un sitio de un organismo hace distinto de otro sitio del mismo organismo, en la misma captura, dicho como dato: el mismo gestor de contenidos en dos versiones mayores distintas, leídas del propio sitio; un dominio sin DMARC en rechazo cuando otro dominio del mismo organismo lo publica, en la misma fotografía del DNS. Solo sitios con titularidad probada, sin las plataformas que un proveedor da a muchos, sin el gemelo www y sin los que enseñan el NIF de otro ente. Siempre bajo: no dice por qué existe la diferencia.bajo
Rastros de desarrolloregla sin IAEn camino, todavía sin filas en esta base: un if (…); terminado en punto y coma: lo que va detrás se ejecuta se cumpla o no la condición.—

Además, un inventario sin severidad: tecnologías, plataforma, alojamiento y terceros de cada sitio.

De quién depende cada organismo. También sin severidad y sin cruzarlo con ningún fallo, porque depender de un proveedor no lo es: correo (los MX, y una pasarela delante de otro se dice), DNS (los NS y el SOA), alojamiento (la red a la que resuelve cada host), emisor del certificado, gestor de consentimiento, CDN y plataforma de sede o de web. Dice quién presta el servicio, lo mismo que el DNS público a quien pregunte. No dice qué contrato hay ni quién administra el servidor: un MX en una empresa no lo prueba, y delante de un CDN el origen no se ve.

El proveedor sale de una tabla escrita a mano, con su patrón y su fuente: no se infiere ninguna empresa de un nombre parecido. Lo que no está en ella se queda con su nombre y se cuenta: de 46.634 mediciones actuales de host y servicio, 2.128 sin identificar, 404 en parte y 180 sin medir. «En EE. UU.» es la sede de la empresa, no dónde están los datos: una empresa con sede allí puede guardarlos en Europa. Y si no se puede saber de quién es un dominio, queda fuera y se cuenta. En lo que se publica, un proveedor público es un organismo y no lleva nombre, una comunidad con menos de 10 organismos no sale, y no hay clasificación de comunidades.

4 · Con qué modelos

Las reglas no usan IA: leen la captura y escriben cada fila con su fichero, su línea y su huella. Un modelo de lenguaje entra en las fases de esta tabla, salvo el pintado sin red, que usa un navegador y axe-core y no IA, y en ninguna pone la severidad ni decide si una cita es literal. Ninguna persona revisa lo que produce un modelo. La severidad la pone una regla escrita y la cita la comprueba un programa contra el fichero guardado; que una fila escrita por un modelo se publique lo decide una segunda lectura, a ciegas y también de un modelo, en un lote que pase el listón escrito antes de leer.

Las lentes de página (la portada de una sede, una declaración de accesibilidad, una política de protección de datos) dan filas que entran por regla, no fila a fila (desde el 10 de noviembre de 2026, LECTURA_POR_REGLA_D0 en producto/lectura_propia.py). Entran todas las filas de una regla cuando su última lectura a ciegas sobre una muestra da al menos el 90 % de lo decidido sobre 20 decididas o más, sin más de un tercio sin decidir, leída después del último cambio de la regla y con los mismos campos que se escriben en sus filas. A las de hallazgo se les pide además la severidad bien en el 80 % de las ciertas; a las de inventario y de práctica no, porque no llevan severidad. Esa lectura es su calibración con oro a ciegas o un lote ciego de 30 filas de lo que el modelo leyó de verdad. Lo que la comprobación en disco tira sigue fuera. Así entró sede.declara (25 de 25); accesibilidad.declaracion-dice (21 de 24) y legal.politica-datos.indice (22 de 27) no llegaron y esperan su lote, igual que las que tenían muestras de 1 a 7.

fasequé hacemodelo
Deteccióndetectores.py, form_reglas.py, censo.py y las regla_*.py leen la captura y escriben filas con fichero, línea y bytesninguno
Juicio, primera pasadagrave.py --razonamiento bajo: ¿el patrón está en código vivo o en un comentario, y qué es en la escala del museo (rutina, llamativo, grave)?qwen3.8-flash
Segunda opinióngrave.py --segunda, con el razonamiento completo: lo que la primera pasada llamó grave o llamativo, y uno de cada diez de lo que llamó rutina, como control (candidatos_segunda)qwen3.8-flash
Hechos para el organismoriesgo.py: el modelo contesta hechos que se ven en el código (qué expone, quién lo ve, qué decide, de dónde sale el dato); la severidad la calcula riesgo.severidad(), una regla escritaqwen3.8-flash
Lectura del código por lentesverificar.py --auditar: el código propio de cada sitio leído por lentes; lo que sale con la cita comprobada entra en el pool del juicio, y de la segunda opinión a la base por regla_lectura.py (familia lectura)qwen3.8-flash
Lectura de páginaslentes_pagina.py desde verificar.py: portadas de transparencia y fichas de trámite; filas_paginas.py las pasa a filas con la cita comprobada otra vez y la severidad de una reglaqwen3.8-flash
Títulos de páginas (contenido ajeno)integridad_qwen.py: la lista de títulos de cada sitio. Aparcada mientras exista integridad_qwen.pausa (2-nov: 3 de 150 hosts marcados eran reales)qwen3.8-flash
Comprobación de la citaverificar_ia.py y comprueba_cita(): la cita existe, una sola vez, en esa línea y en ese dominio, idéntica, contra el fichero guardadoninguno
Severidaduna regla escrita de la casa, la misma para todos (riesgo.severidad(), filas_paginas.py, cada regla_*.py)ninguno
Lectura a ciegasmuestras de filas leídas contra el fichero guardado sin ver lo que dijo el modelo ni la regla (validacion/**/veredictos.jsonl, validacion/precision_*.jsonl); dan la precisión de cada regla (producto/precision.py) y aprueban lo que produce un modelo si el lote pasa el listón (producto/lectura_propia.py)Agentes de Claude que leen a ciegas
Redacción de las piezas del museolas fichas de la web (fichas/specs/p_*.py), sobre candidatos con la cita comprobada; FICHAS.md es su normaClaude Opus 5.5, Claude Fable 5.1
Revisión de métododocumentos de trabajo fechados que revisan el método y proponen planes, en solo lecturaClaude Fable (revisiones de método del 9-nov)
Código, reglas y documentoslas sesiones de Claude Code que escriben el código, las reglas, los documentos y los commits del proyectoClaude Opus 5.5, Claude Opus 4.8, Claude Fable 5.1
Pintado sin redregla_pintado.py: Chromium pinta la copia archivada sin conexión; axe-core da el contraste y una prueba propia, el foco con el tabuladorChromium sin cabeza, axe-core
modeloversiónqué decidequé no decide
qwen3.8-flashel nombre del modelo en la API; NaN no da fecha de versión y el repositorio no la apuntasi un patrón que encontró un detector está en código vivo o en un comentario, y si es propio o de una librería; el grado en la escala del museo (rutina, llamativo, grave), que sirve para elegir piezas y no es una severidad; los hechos que contesta en riesgo.py y en las lentes, siempre con una citala severidad de ninguna fila de la base: la pone una regla escrita; si su cita es literal: lo comprueba un programa contra el fichero, y si no aparece idéntica la fila cae; si lo que produce se publica: desde el 6-nov ninguna fila suya entra en la base sin una lectura a ciegas aprobada (producto/lectura_propia.py)
Claude Opus 5.5Claude Opus 5.5; del 23 al 30-sep, con la variante de contexto de un millón de tokens («Claude Opus 5.5 (1M context)»)el texto de cada pieza del museo, y la lee entera antes de publicarla (FICHAS.md: ninguna persona las escribe ni las revisa); el código de las reglas, sus umbrales y los documentos, en commits con su motivouna cita: la comprueba un programa contra pruebas/<sha256>; publicar la base o la web: pasa por el OK del propietario (producto/rehacer.sh PUBLICAR=1, ./publica.sh)
Claude Fable 5.1Claude Fable 5.1la reescritura de las 47 fichas publicadas del 21-sep (historia/NUEVAS.md)una cita: la comprueba un programa
Claude Fable (revisiones de método del 9-nov)no consta: los documentos dicen «Fable» y los commits los firma la sesión Claude Opus 5.5 que los encargónada por sí mismo: escribe en solo lectura documentos que proponen (producto/MAPA_AUDITORIA.md, producto/DOCUMENTACION_PLAN.md, validacion/qwen_plan_fable_9nov.md, la revisión de la web multicaptura); lo que se aplica lo hace otra sesión, en su commitningún dato, ninguna fila, ninguna publicación
Claude Opus 4.8Claude Opus 4.8dos commits del 12-oct: la segunda tanda de reglas en el plan y la regla de formularios—
Agentes de Claude que leen a ciegasno constael veredicto de cada fila leída: CIERTO, FALSO o NO_VERIFICABLE, y si la severidad está bien; con ello, la precisión publicada de cada regla y qué filas de un modelo entran en la baseel listón: está escrito en producto/lectura_propia.py y en producto/precision.py, y se fija antes de leer; qué filas lee: el lote lo hace un programa al azar (por ejemplo validacion/lectura_a2_9nov/hacer_lotes_a2.py)
Chromium sin cabeza151.0.7922.109 (imagen chromedp/headless-shell:stable, la que había en la máquina el 9-nov-2026)cómo se pinta la copia archivada: colores, tamaños y qué recibe el foco con el tabuladorla severidad; qué filas se publican: lo deciden los filtros de regla_pintado.py y la titularidad
axe-core4.14.0, de npm, con su sha512 comprobado (9WTZxEjsZ7b13TH8JPmbV2z8CHbl80/2hm3XPEG4JgNdQLK81IBRXmSxHfMAOkSqQeRxT/0dwNDz2GOm3zzpcQ==)qué texto no llega a la razón de contraste de WCAG 1.4.3, y cuál deja sin decidirel foco: lo mide una prueba propia del navegador; la severidad; lo que deja sin decidir: no se publica

Se probaron otros modelos disponibles en la plataforma y se eligió qwen3.8-flash por su resultado en nuestras pruebas, con esa plataforma y esa configuración (septiembre y noviembre de 2026).

Lo que no consta. qwen3.8-flash: la versión o fecha del modelo que sirve NaN detrás de ese nombre. Claude Fable 5.1: si el encargo del 14-sep (historia/PROMPT_FABLE.md, las tres primeras fichas) lo hizo esta versión: el documento dice «Fable» sin versión, y es anterior al primer commit. Claude Fable (revisiones de método del 9-nov): la versión del modelo. Agentes de Claude que leen a ciegas: qué modelo de Claude hizo cada lectura: los veredictos no lo apuntan, ni el commit. Habría que añadir un campo modelo_lector al escribirlos.

5 · Cómo se asigna la severidad

La severidad es una regla escrita, la misma para todos los organismos, y cada familia la documenta. Tres principios:

Reglas sin severidad (28). De la clase «práctica» (una recomendación sin norma española) o «inventario» (un dato, sin nada que corregir). Sus filas no llevan severidad; en la consulta, resumen, activos y comparar las cuentan aparte de bajo, medio y alto.

reglaclasepor qué
cabeceras.cspprácticaEl ENS (RD 311/2022, anexo II, mp.s.2) pide prevenir el resultado (inyección de código, cross site scripting) sin nombrar ningún mecanismo: que falte esta cabecera no prueba que no se prevenga. Ninguna norma española la pide
cabeceras.csp-debilprácticaEl ENS (RD 311/2022, anexo II, mp.s.2) pide prevenir el resultado (inyección de código, cross site scripting) sin nombrar ningún mecanismo: que falte esta cabecera no prueba que no se prevenga. Ninguna norma española la pide; y tener una CSP, aunque floja, ya es más que no tenerla
cabeceras.hstsprácticaEl ENS no la nombra. Lo que tiene efecto (la portada servida en claro sin redirigir) lo miden transporte.http-no-redirige y transporte.sin-https
cabeceras.hsts-cortoprácticaEl ENS no la nombra; un max-age corto es una recomendación (Mozilla, internet.nl)
cabeceras.x-content-typeprácticaSin norma española; su efecto (que el navegador adivine el tipo del fichero) no se ve en lo capturado
cabeceras.x-frameprácticaEl ENS (RD 311/2022, mp.s.2) pide prevenir ataques a la web sin nombrar el enmarcado (clickjacking, que no aparece en su texto) ni esta cabecera. Ninguna norma española la pide
coherencia.cms-desigualprácticaSin norma española que lo pida: dice que el organismo ya lo hace en uno de sus sitios y en otro no
coherencia.dmarc-desigualprácticaSin norma española que lo pida: dice que el organismo ya lo hace en uno de sus dominios y en otro no
correo.dmarc-sin-informesprácticaPedir informes de DMARC es una recomendación (RFC 7489; GOV.UK)
correo.mta-stsprácticaRecomendación (RFC 8461); obligatoria en el Gobierno británico, no en España
correo.tls-rptprácticaRecomendación (RFC 8460); obligatoria en el Gobierno británico, no en España
dns.caaprácticaCAA es una recomendación (RFC 8659; internet.nl, nivel «Recommended»)
dns.dnssecprácticaFirmar la zona es una recomendación: ninguna norma española la exige a un organismo
dns.ipv6prácticaQue el dominio publique IPv6 no lo pide ninguna norma española: es una recomendación (internet.nl)
dns.nsprácticaRequisito del propio estándar DNS (RFC 1034 §4.1, «we require every zone to be available on at least two servers»; RFC 2182, BCP 16), no una norma española, y sin efecto observable hasta que falla la red
exposicion.version-servidorprácticaEl ENS (op.exp.2, «mínima funcionalidad» para reducir el perímetro de exposición) es un principio que no nombra cabeceras ni versiones; sin efecto para quien usa la web
higiene.copyrightprácticaUn año viejo en el pie no incumple nada: es mantenimiento
higiene.sin-sitemapprácticaPublicar un mapa del sitio es una recomendación para buscadores
legacy.era-ieprácticaComentarios condicionales y X-UA-Compatible que los navegadores de hoy ignoran: sin norma y sin efecto
obsoleto.analitica-apagadaprácticaUna analítica que ya no procesa datos no expone nada: es mantenimiento. Cargarla antes del consentimiento ya es privacidad.analitica
obsoleto.calendarioprácticaSirve para planificar, no es un fallo: el dato es la fecha
seguridad.http-internoprácticaSin norma española que lo pida (su propia regla lo dice); lo que tiene efecto, que la portada se sirva en claro, lo mide transporte.http-no-redirige
seguridad.security-txtprácticasecurity.txt es una recomendación (RFC 9116); la transposición de NIS2 no está en el BOE
suministro.sin-integridadprácticaLa integridad de subrecursos (SRI) es una recomendación del W3C sin norma española, con un efecto condicional (que el CDN cambie el fichero); el riesgo real lo dicen suministro.cdn-comprometido y suministro.host-no-resuelve
tiempo.componente-viejoprácticaSin vulnerabilidades conocidas ni fin de soporte: una edad, no un fallo
transporte.cifrado-debilprácticaFuera de la configuración «intermediate» de Mozilla 6.0, que es más estricta que el CCN: el CCN desaconseja el intercambio RSA sin marcarlo obligatorio (PYTEC n.º 8, req. 4) y admite AES en modo GCM o CBC (req. 10). Solo desde el nivel MEDIO el ENS exige los algoritmos que autoriza el CCN, y la categoría del sistema no consta desde fuera
transporte.mixto-pasivoprácticaEl navegador pide la imagen por https: queda la recomendación de no enlazarla por http
tramites.pasarelainventarioSu propio código lo dice: «inventario: sin norma», un dato y no un reproche. Es la tabla de tecnologías con otro nombre: no describe nada que corregir

6 · La prueba de cada hallazgo

Lo que sale del código lleva la página, el fichero, su sha256 y la línea, y la lectura del modelo solo entra si su cita se comprueba por programa, idéntica, contra el fichero guardado. Cuando la cita repetiría una credencial, un nombre interno o un comentario, no se guarda: basta con el fichero, la huella y la línea para comprobarlo. Lo que sale del DNS lleva el registro consultado y su fecha.

Estado entre capturas. Un hallazgo se sigue por una clave que no depende del fichero, y cada sitio se compara con su propia captura anterior. «Corregido» exige que la misma página se haya vuelto a capturar y ya no lo tenga; si la página no se volvió a capturar se dice «desaparecido», y si se ve por primera vez, «primera vez», no «nuevo».

7 · Cómo se valida

Cuánto acierta cada regla. De 126 de las 135 reglas de esta base se ha leído una muestra al azar, fila a fila, contra el fichero guardado; de las otras 9 todavía no, y sus 1.290 filas no tienen acierto medido (abajo, «Sin lectura publicada todavía»). Las lecturas las hace un modelo de IA; ninguna persona las revisa. «Ciertas» es sobre las que se pudieron decidir, y describe el código de hoy: lo que quitó un arreglo no cuenta como acierto ni como fallo, y de una regla que ha cambiado después de leerla no cuenta nada hasta leer una muestra nueva. Con menos de 10 filas decididas, es una muestra pequeña y se dice.

reglaleídasciertasfalsasno se pudo sabera mediasacierto
accesibilidad.alt3030000100 %
accesibilidad.captcha-imagen1919000100 %
accesibilidad.contraste3029010100 %
accesibilidad.declaracion6661050100 %
accesibilidad.declaracion-caducada1010000100 %
accesibilidad.declaracion-en-todas66000100 % · muestra pequeña
accesibilidad.etiqueta5858000100 %
accesibilidad.foco302730090 %
accesibilidad.idioma4141000100 %
accesibilidad.idioma-falso1212000100 %
accesibilidad.iframe4444000100 %
accesibilidad.titulo3838000100 %
accesibilidad.zoom3030000100 %
cabeceras.cookie-httponly322930091 % · retirada el 5 de noviembre de 2026; vuelve, aún sin filas en la base
cabeceras.cookie-secure322840088 % · retirada el 5 de noviembre de 2026; vuelve, aún sin filas en la base
cabeceras.csp2220000100 %
cabeceras.csp-debil88000100 % · muestra pequeña
cabeceras.hsts2219000100 %
cabeceras.hsts-corto2221000100 %
cabeceras.x-content-type1010000100 %
cabeceras.x-frame1010000100 %
coherencia.cms-desigual99000100 % · muestra pequeña
coherencia.dmarc-desigual22000100 % · muestra pequeña
concentracion.alojamiento2020000100 %
concentracion.cdn2020000100 %
concentracion.consentimiento2020000100 %
concentracion.correo2020000100 %
concentracion.dns2020000100 %
concentracion.emisor2020000100 %
concentracion.plataforma_sede2020000100 %
concentracion.plataforma_web2020000100 %
contratacion.fuera-de-plataforma33000100 % · muestra pequeña
cookies.samesite161510094 %
correo.dmarc-sin-informes88000100 % · muestra pequeña
correo.mta-sts88000100 % · muestra pequeña
correo.spf-roto88000100 % · muestra pequeña
correo.suplantable1212000100 %
correo.tls-rpt88000100 % · muestra pequeña
datos.catalogo-nacional44000100 % · muestra pequeña
datos.formato88000100 % · muestra pequeña
datos.portal99000100 % · muestra pequeña
dns.caa88000100 % · muestra pequeña
dns.dnssec88000100 % · muestra pequeña
dns.ipv688000100 % · muestra pequeña
dns.ns1616000100 %
errores.dominio-enlazado-muerto88000100 % · muestra pequeña
errores.enlace-a-servicio-cerrado88000100 % · muestra pequeña
errores.enlaces-rotos88000100 % · muestra pequeña
errores.phpinfo11000100 % · muestra pequeña
errores.plantilla-por-defecto33000100 % · muestra pequeña
errores.texto-roto44000100 % · muestra pequeña
errores.traza-servidor22000100 % · muestra pequeña
errores.variable-sin-sustituir33000100 % · muestra pequeña
exposicion.ip-interna565510098 %
exposicion.listado-directorio22000100 % · muestra pequeña
exposicion.maquina-local66000100 % · muestra pequeña
exposicion.ruta-interna7610086 % · muestra pequeña
exposicion.version-servidor302910097 %
formulario.a-tercero5955040100 %
formulario.campo-corto11000100 % · muestra pequeña
formulario.clave-por-get11000100 % · muestra pequeña
formulario.clave-sin-cifrar2929000100 %
formulario.dni-por-get44000100 % · muestra pequeña
formulario.https-a-http4747000100 %
higiene.cerrada-a-buscadores87010100 % · muestra pequeña
higiene.copyright88000100 % · muestra pequeña
integridad.contenido-ajeno77000100 % · muestra pequeña
integridad.enlace-ajeno55000100 % · muestra pequeña
lectura.comentario11710388 % · muestra pequeña · sus filas esperan su lectura propia
lectura.ejecucion61005100 % · muestra pequeña · sus filas esperan su lectura propia
lectura.error55000100 % · muestra pequeña · sus filas esperan su lectura propia
lectura.interno8265140382 % · sus filas esperan su lectura propia
lectura.mixto11000100 % · muestra pequeña · sus filas esperan su lectura propia
lectura.tramite11000100 % · muestra pequeña
legacy.charset605532095 %
legacy.era-ie88000100 % · muestra pequeña
legacy.html-retirado1616000100 %
legacy.jnlp77000100 % · muestra pequeña
legacy.pide-complemento191810095 %
legal.aviso-legal1413010100 %
legal.canal-interno1111000100 %
legal.cookies86020100 % · muestra pequeña
legal.dpd11000100 % · muestra pequeña
legal.ens-conformidad66000100 % · muestra pequeña
legal.inventario-tratamientos33000100 % · muestra pequeña
legal.normativa-derogada626020097 %
lenguas.lang-falso88000100 % · muestra pequeña
obsoleto.analitica-apagada88000100 % · muestra pequeña
obsoleto.calendario616010098 %
obsoleto.libreria128000100 % · muestra pequeña
obsoleto.servidor1212000100 %
obsoleto.wordpress1210000100 %
portada.ajena11000100 % · muestra pequeña
portada.por-defecto88000100 % · muestra pequeña
privacidad.analitica1818000100 %
privacidad.captcha1616000100 %
privacidad.mapa1616000100 %
privacidad.publicidad22000100 % · muestra pequeña
privacidad.referrer88000100 % · muestra pequeña
privacidad.social1515000100 %
privacidad.tipografia2424000100 %
privacidad.video2626000100 %
sede.certificado-cualificado1616000100 %
sede.dias-inhabiles33000100 % · muestra pequeña
sede.hora-del-navegador33000100 % · muestra pequeña
seguridad.http-interno161510094 %
suministro.cdn-comprometido55000100 % · muestra pequeña
suministro.host-no-resuelve88000100 % · muestra pequeña
suministro.sin-integridad88000100 % · muestra pequeña
tiempo.componente-viejo88000100 % · muestra pequeña
tiempo.sin-soporte6060000100 %
tramites.ejecutable55000100 % · muestra pequeña
tramites.movil88000100 % · muestra pequeña
tramites.pasarela10910090 %
tramites.requisito-tecnico87010100 % · muestra pequeña
transparencia.fecha-declarada1010000100 %
transparencia.frescura.contratos77000100 % · muestra pequeña · sus filas esperan su lectura propia
transparencia.frescura.contratos_menores44000100 % · muestra pequeña · sus filas esperan su lectura propia
transparencia.frescura.convenios55000100 % · muestra pequeña · sus filas esperan su lectura propia
transparencia.frescura.cuentas_anuales66000100 % · muestra pequeña
transparencia.frescura.presupuestos88000100 % · muestra pequeña · sus filas esperan su lectura propia
transparencia.frescura.subvenciones44000100 % · muestra pequeña · sus filas esperan su lectura propia
transparencia.mas-reciente4530150067 % · sus filas esperan su lectura propia
transparencia.sin-fecha1212000100 %
transporte.caduca1010000100 %
transporte.certificado88000100 % · muestra pequeña
transporte.cifrado-debil1616000100 %
transporte.https-a-http55000100 % · muestra pequeña
transporte.mixto-activo1616000100 %
transporte.mixto-pasivo88000100 % · muestra pequeña
transporte.renegociacion66000100 % · muestra pequeña
transporte.sin-https44000100 % · muestra pequeña
transporte.sin-https-redirige88000100 % · muestra pequeña
transporte.tls-antiguo33000100 % · muestra pequeña
transporte.tls12323020094 % · retirada el 9 de noviembre de 2026; vuelve, aún sin filas en la base

28 filas de reglas retiradas o en prueba no se listan en esta versión: en la web solo va el estado vigente.

Sin lectura publicada todavía (5): higiene.sin-sitemap, portada.en-venta, portada.reutilizada, seguridad.security-txt, transporte.http-no-redirige.

Reglas en camino (3). Se retiraron y vuelven en el código con un arreglo; todavía no dan filas en esta base, así que no cuentan como medidas: cabeceras.cookie-httponly (retirada el 5 de noviembre de 2026; vuelve el 9 de noviembre de 2026: recuento común de páginas y criterio común de cookie de sesión (hallazgos.py); la primera muestra nueva (M01, 13 de 16) falló por el perímetro, y la segunda, decidida por el coordinador, sale solo de hosts con titularidad probada; lectura a ciegas: 16 de 16 ciertas (lote S01, a ciegas, segunda muestra)). cabeceras.cookie-secure (retirada el 5 de noviembre de 2026; vuelve el 9 de noviembre de 2026: recuento común de páginas y criterio común de cookie de sesión (hallazgos.py); la primera muestra nueva (M01, 13 de 16) falló por el perímetro, y la segunda, decidida por el coordinador, sale solo de hosts con titularidad probada; lectura a ciegas: 15 de 16 ciertas (lote S01, a ciegas, segunda muestra; la falsa, por la cifra, a filas_excluidas.json)). transporte.tls12 (retirada el 9 de noviembre de 2026; vuelve el 9 de noviembre de 2026: ninguno en la regla: su segunda muestra, decidida por el coordinador, sale solo de hosts con titularidad probada en la base (la de PERÍMETRO), porque las falsas de la primera eran webs privadas; lectura a ciegas: 16 de 16 ciertas, severidad bien en todas (lote S02, a ciegas, segunda muestra)).

Reglas retiradas (29). Leídas a ciegas por un lector nuevo, con el listón fijado y escrito antes de leer: 27 de 30, o el 90 % de lo decidido si hay menos de 30; más de un tercio sin decidir tampoco pasa. El código que las mide se queda: una regla solo vuelve con un arreglo y una muestra nueva, leída igual.

La tabla de las 29 reglas retiradas no se publica en esta versión: en la web solo va el estado vigente, y las reglas retiradas son una cifra.

Filas leídas falsas que no se publican. En reglas que pasan el listón, 8 hallazgo(s) que la lectura dio por falsos se quitan uno a uno, en 8 fila(s) de las capturas: cabeceras.cookie-secure 1, cookies.samesite 1, [regla retirada] 1, legacy.charset 1, legal.normativa-derogada 2, obsoleto.calendario 1, seguridad.http-interno 1. Cada uno lleva su motivo, su fecha y la lectura que lo decidió, y su lectura sigue contando arriba como falsa: quitar la fila no la hace cierta.

Lo que lee el modelo, solo con lectura propia. Una lectura a ciegas de las filas nuevas de la lectura con modelos dio menos del 90 %: el modelo exageraba lo que hace el código. Desde entonces, ninguna fila que produzca el modelo se publica sin que una lectura a ciegas la haya dado por cierta, en un lote que pase el listón. Esperan esa lectura 426 fila(s): lectura.comentario 11, lectura.ejecucion 62, lectura.error 43, lectura.interno 161, lectura.mixto 12, transparencia.fecha-declarada 16, transparencia.frescura.contratos 7, transparencia.frescura.contratos_menores 4, transparencia.frescura.convenios 5, transparencia.frescura.presupuestos 13, transparencia.frescura.subvenciones 4, transparencia.mas-reciente 52, transparencia.sin-fecha 36.

La coherencia entre los sitios de un mismo organismo (9 de noviembre de 2026). Cinco reglas que comparan, dentro de un organismo y en la misma captura, lo que ya se mide sitio a sitio. Antes de escribirlas se descartaron las que, medidas, daban sobre todo errores de atribución: un NIF distinto entre sitios era casi siempre un organismo dependiente con el dominio prestado, y la misma portada en dos nombres, un balanceador o el sitio por defecto de un servidor. Las cinco se leyeron a ciegas, todas sus filas, por dos lectores nuevos, con el listón escrito antes (con dos falsas, fuera). Entraron dos: el mismo gestor de contenidos en dos versiones mayores (9 de 9) y un dominio sin DMARC en rechazo junto a otro del organismo que sí lo tiene (2 de 2; muestra pequeña). Se quedaron fuera la que comparaba https (1 de 2: el sitio servía una aplicación ajena), la del sitio parado junto a otro que publica (2 de 10: la fila de partida decía parado a sitios que no lo estaban) y la de la web principal que no enlaza su sede (0 de 2: lo que se tomó por la web principal, por su dominio, era un portal de turismo y la web de un particular). Las lecturas las hizo un modelo de IA; ninguna persona las revisa (validacion/coherencia/ESTADO.md, fuera de git salvo el código y el estado).

Lo pintado sin red (9 de noviembre de 2026). accesibilidad.contraste y accesibilidad.foco entraron tras tres lecturas a ciegas, cada una con un lector nuevo, casos nuevos y el listón escrito antes de leer: 27 de 30 ciertos, y en contraste ningún falso. La primera y la segunda no lo pasaron, y cada fallo se arregló y se comprobó sobre los casos ya leídos: una caja de error que solo existe sin red, texto contra su sombra sobre una foto que no cargó, estilos medidos a mitad de una transición. La tercera dio 29 de 30 en contraste, sin falsos, y 27 de 30 en foco. Las guardas que vinieron después solo quitan hallazgos. Las lecturas las hizo un modelo de IA; ninguna persona las revisa (validacion/navegador/ESTADO.md, fuera de git salvo el código y los resúmenes).

La primera medida de la lectura con modelos (2 de noviembre de 2026). Antes de que la base llevara nada de qwen, una muestra al azar de 120 casos (validar_qwen.py, con su semilla) la leyeron a ciegas agentes de Claude, sin ver lo que dijo qwen; las discrepancias y lo que los lectores no pudieron ver se leyeron además directamente en el código. No es una auditoría humana, y la muestra es pequeña: da el orden de magnitud. Solo entraron ficheros que qwen leyó enteros, de hasta 30 KB. Las respuestas de los lectores están en validacion/respuestas_*.jsonl y lo que dijo qwen en validacion/clave.json (fuera de git: llevan código y dominios); el resumen se escribió ese día (commit ccb1821f8) y no se regenera.

qué se midiócasosresultado
qwen no encontró nada40sin falsos negativos de importancia media o alta; 1 de importancia baja. Con 0 de 40, el error real está por debajo de un 7 %, aproximadamente
qwen encontró algo (salida en bruto)25 ficheros, 78 hallazgoslas citas son reales, pero solo 3 ficheros tienen un defecto: el resto son curiosidades, porque las lentes se escribieron para el museo. Otro, un fallo real que qwen no vio
lo que la primera pasada llamó rutina25nada de importancia media o alta; 2 de baja
escala de riesgo: «nada»88 correctos: no descarta nada importante
escala de riesgo: «medio»87 correctos
escala de riesgo: «bajo»62 correctos; los otros 4 eran nada, un error sin consecuencias
escala de riesgo: «candidato a alto»82 correctos, 1 dudoso y 5 falsos (tokens de sesión, una cookie, un script empaquetado). Se corrigió la pregunta y se volvió a preguntar

Qwen casi no se deja cosas y dice muchas de más: por eso la base no toma su salida directamente, la severidad la pone una regla y, desde el 6 de noviembre, lo que escribe un modelo solo entra con una lectura a ciegas aprobada. El fallo de verdad fue una categoría que no se buscaba: qwen vio una página de venta de fármacos bajo el dominio de una facultad, y el juicio la tiró como rutina porque su escala no lo contemplaba. De ahí salió la familia de contenido ajeno.

La comprobación en disco de lo que lee el modelo (9 de noviembre de 2026). Las lecturas a ciegas de las filas de qwen encontraron que muchas de las falsas se ven sin modelo, mirando el resto de lo archivado del mismo sitio. Antes de mandar a leer una fila, cruce_qwen.py mira eso: si el valor cambia de una página a otra (lo pone el servidor en cada visita), si la cita es la configuración que escribe una plataforma, si nadie llama a la función, si la que se da por no definida está definida en otro fichero, si después se manda el formulario al servidor, si el host no es del organismo, si la ruta va dentro de la dirección pública de otro sitio, si la dirección es la del propio sitio o solo localhost, y en las fechas de transparencia, si la misma página escribe una fecha posterior. Solo quita: lo que cae no entra en la base ni se manda a leer, y lo que pasa sigue necesitando su lectura a ciegas por lotes. Se midió sobre las 269 filas de qwen que ya tenían lectura a ciegas (vale la última de cada fila; en 23 dos lecturas no coinciden, y se miran también contándolas como ciertas), con el listón escrito antes de medir: como mucho una cierta tirada por cada cuatro falsas cazadas. Entran diez comprobaciones. Juntas cazan 72 de las 135 falsas y tiran 1 de las 130 ciertas: una página cuya fecha más reciente era la del final de una legislatura («2023/2027»), que el criterio escrito toma como fecha y el lector no. Otras siete se miden y no entran: la huella del fichero (tira ciertas cuando la página cambió y la cita sigue en ella), la credencial sin valor y el JWT sin permisos (tiran ciertas si cuentan las lecturas que no coinciden), la ruta de un plugin (una carpeta /libraries/ con código propio) y tres que no cazaron nada. Pasado sobre las 462 filas de qwen que hay en los hallazgos, tira 76. Con el cruce, en lo ya leído, lectura.interno pasaría del 78 % al 91 % y transparencia.mas-reciente del 60 % al 100 %; [regla retirada] y [regla retirada] se quedan muy lejos (3 % y 16 %) y desde ese día no alimentan la base. Que una regla pase en lo ya leído no la hace entrar: hace falta una lectura nueva a ciegas de lo que sobrevive al cruce. Cada comprobación se prueba con un caso que tiene que caer, otro que no y un mutante que la rompe (cruce_qwen.py --romper); la medida, fila a fila y sin valores, está en producto/metodo/cruce_qwen.json.

8 · Límites

9 · Cobertura por comunidad

Cada sitio se mide en su captura más reciente. Los ayuntamientos se cuentan sobre los municipios del diccionario del INE (diccionario26.xlsx).

ámbitoorganismossitiossirvieron páginasayuntamientos con web que contestadiputaciones
Andalucía7761.143651432 de 7858 de 8
Aragón498677556421 de 7313 de 3
Canarias9619914281 de 882 de 2
Cantabria8615711153 de 102—
Castilla y León1.6011.8911.5661.345 de 2.2489 de 9
Castilla-La Mancha402501378304 de 9195 de 5
Cataluña9181.4651.152854 de 9474 de 4
Ceuta11271 de 1—
Comunidad Foral de Navarra1181507851 de 272—
Comunidad de Madrid188637425156 de 179—
Comunitat Valenciana5541.076842517 de 5423 de 3
Extremadura302423213157 de 3882 de 2
Galicia271490365233 de 3134 de 4
Illes Balears7421815063 de 67—
La Rioja123166131104 de 174—
Melilla11681 de 1—
País Vasco207532298113 de 2523 de 3
Principado de Asturias7716012866 de 78—
Región de Murcia4919313538 de 45—
Estado y órganos constitucionales117489269——
sin asignar807821602——

Una comunidad con pocos ayuntamientos en esta tabla está cubierta solo en esa parte: las cifras de esa comunidad hablan de lo que se ha mirado, no de todo su territorio.

10 · Actualización

Una captura completa al trimestre, en enero, abril, julio y octubre. El tiempo de corrección se mide por eso en trimestres. Lo que se corrige de la propia base o del método se apunta con su fecha, qué decía y qué dice ahora.

Desgobierno Digital · nota de método · base con última captura cerrada el 2026-11-07 · https://desgobiernodigital.com/metodo/nota/ · Sin DOI: no se da de alta en ningún servicio externo; la versión se identifica por su huella sha256 y por su sello de tiempo.