From 6a60b43be7e12a5c7da84d256aab8597ed10ebb1 Mon Sep 17 00:00:00 2001 From: hao Date: Sun, 29 Mar 2026 03:50:57 -0700 Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E6=8E=A7=E6=9B=B4=E6=96=B0:=202026-03?= =?UTF-8?q?-29=2003:49:34?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 07-framework-security/cms/directus/INDEX.md | 2 +- 07-framework-security/cms/discourse/INDEX.md | 2 +- 07-framework-security/cms/drupal/INDEX.md | 2 +- 07-framework-security/cms/ghost/INDEX.md | 2 +- 07-framework-security/cms/joomla/INDEX.md | 2 +- 07-framework-security/cms/mediawiki/INDEX.md | 2 +- 07-framework-security/cms/moodle/INDEX.md | 2 +- 07-framework-security/cms/strapi/INDEX.md | 2 +- 07-framework-security/cms/wordpress/INDEX.md | 2 +- .../ecommerce/adobe-commerce/INDEX.md | 2 +- .../ecommerce/magento-open-source/INDEX.md | 2 +- .../ecommerce/medusa/INDEX.md | 2 +- .../ecommerce/opencart/INDEX.md | 2 +- .../ecommerce/openmage/INDEX.md | 2 +- .../ecommerce/prestashop/INDEX.md | 2 +- .../ecommerce/saleor/INDEX.md | 2 +- .../ecommerce/shopware/INDEX.md | 2 +- .../ecommerce/woocommerce/INDEX.md | 2 +- .../frameworks/angular/INDEX.md | 2 +- .../frameworks/aspnet-core/INDEX.md | 2 +- .../frameworks/astro/INDEX.md | 2 +- .../frameworks/django/INDEX.md | 2 +- .../frameworks/echo/INDEX.md | 2 +- .../frameworks/esbuild/INDEX.md | 2 +- .../frameworks/express/INDEX.md | 2 +- .../frameworks/fastify/INDEX.md | 2 +- .../frameworks/flask/INDEX.md | 2 +- 07-framework-security/frameworks/gin/INDEX.md | 2 +- .../frameworks/hapi/INDEX.md | 2 +- 07-framework-security/frameworks/koa/INDEX.md | 4 +- .../frameworks/laravel/INDEX.md | 2 +- .../frameworks/nestjs/INDEX.md | 2 +- .../frameworks/nextjs/INDEX.md | 2 +- .../frameworks/nodejs/INDEX.md | 2 +- .../frameworks/nuxt/INDEX.md | 2 +- .../frameworks/rails/INDEX.md | 2 +- .../frameworks/react/INDEX.md | 2 +- .../frameworks/spring-boot/INDEX.md | 2 +- .../frameworks/spring-framework/INDEX.md | 2 +- .../frameworks/spring-security/INDEX.md | 2 +- .../frameworks/sveltekit/INDEX.md | 2 +- .../frameworks/symfony/INDEX.md | 2 +- .../frameworks/undici/INDEX.md | 2 +- .../frameworks/vite/INDEX.md | 2 +- 07-framework-security/frameworks/vue/INDEX.md | 2 +- .../frameworks/webpack/INDEX.md | 2 +- .../frameworks/werkzeug/INDEX.md | 2 +- .../platforms/adminer/INDEX.md | 2 +- .../platforms/gitea/INDEX.md | 2 +- .../platforms/gitlab-ce/INDEX.md | 2 +- .../platforms/grafana/INDEX.md | 2 +- .../platforms/jenkins/INDEX.md | 2 +- .../platforms/kibana/INDEX.md | 2 +- .../platforms/mattermost/INDEX.md | 2 +- .../platforms/phpmyadmin/INDEX.md | 2 +- .../platforms/redmine/INDEX.md | 2 +- .../servers/apache-httpd/INDEX.md | 2 +- .../servers/apache-tomcat/INDEX.md | 2 +- 07-framework-security/servers/caddy/INDEX.md | 2 +- .../servers/haproxy/INDEX.md | 2 +- 07-framework-security/servers/nginx/INDEX.md | 2 +- .../servers/traefik/INDEX.md | 2 +- .../generated/dashboard/architecture.json | 4 +- .../dashboard/data/completeness.json | 23 +- .../dashboard/data/entity-completeness.json | 2 +- .../dashboard/data/entity-queues.json | 2 +- .../dashboard/data/lab-enqueue-summary.json | 14 +- .../dashboard/data/monitor-summary.json | 17 +- .../dashboard/data/release-index.json | 2 +- .../dashboard/data/source-catalog-audit.json | 2 +- .../dashboard/data/source-health.json | 280 +- .../dashboard/data/version-backlog.json | 2 +- .../dashboard/data/version-completeness.json | 4 +- .../dashboard/docs/architecture-library.html | 4 +- .../dashboard/docs/entity-catalog-report.html | 2 +- .../docs/entity-discovery-backlog.html | 2 +- .../dashboard/docs/source-catalog-audit.html | 2 +- .../docs/testing-completeness-report.html | 4 +- .../dashboard/docs/version-sync-report.html | 4 +- .../generated/dashboard/entities.json | 220 +- .../generated/dashboard/summary.json | 136 +- .../generated/dashboard/systems.json | 124 +- .../generated/entity-catalog-report.md | 2 +- .../generated/entity-completeness.json | 2 +- .../generated/entity-discovery-backlog.md | 2 +- 08-threat-intel/generated/entity-queues.json | 2 +- .../generated/lab-enqueue-summary.json | 14 +- 08-threat-intel/generated/latest-ingest.md | 6 +- .../generated/monitor-summary.json | 17 +- 08-threat-intel/generated/release-index.json | 2 +- 08-threat-intel/generated/run-summary.json | 11 +- .../generated/source-catalog-audit.json | 2 +- .../generated/source-catalog-audit.md | 2 +- 08-threat-intel/generated/source-health.json | 280 +- .../generated/version-backlog.json | 2 +- .../generated/version-completeness.json | 4 +- .../generated/version-sync-report.md | 4 +- .../registry/entities/adminer.json | 2 +- .../registry/entities/adobe-commerce.json | 2 +- .../angular--package--angular-core.json | 2 +- .../registry/entities/angular.json | 2 +- .../registry/entities/apache-httpd.json | 2 +- .../registry/entities/apache-tomcat.json | 2 +- .../registry/entities/aspnet-core.json | 2 +- .../entities/astro--module--astro.json | 2 +- .../entities/astro--project--astro.json | 2 +- 08-threat-intel/registry/entities/astro.json | 2 +- ...sion--github-com-caddyserver-caddy-v2.json | 2 +- ...repo--github-com-caddyserver-caddy-v2.json | 2 +- 08-threat-intel/registry/entities/caddy.json | 2 +- .../directus--repo--directus-directus.json | 2 +- .../registry/entities/directus.json | 2 +- .../registry/entities/discourse.json | 2 +- .../entities/django--project--django.json | 2 +- 08-threat-intel/registry/entities/django.json | 2 +- 08-threat-intel/registry/entities/drupal.json | 2 +- ...ho--repo--github-com-labstack-echo-v4.json | 2 +- 08-threat-intel/registry/entities/echo.json | 2 +- .../entities/esbuild--project--esbuild.json | 2 +- .../registry/entities/esbuild.json | 2 +- .../registry/entities/express.json | 2 +- .../entities/fastify--project--fastify.json | 2 +- .../registry/entities/fastify.json | 2 +- .../entities/flask--project--flask.json | 2 +- 08-threat-intel/registry/entities/flask.json | 2 +- .../entities/ghost--repo--tryghost-ghost.json | 2 +- 08-threat-intel/registry/entities/ghost.json | 2 +- .../gin--repo--github-com-gin-gonic-gin.json | 2 +- 08-threat-intel/registry/entities/gin.json | 2 +- 08-threat-intel/registry/entities/gitea.json | 2 +- .../registry/entities/gitlab-ce.json | 2 +- .../registry/entities/grafana.json | 2 +- .../entities/hapi--package--hapi-hapi.json | 2 +- 08-threat-intel/registry/entities/hapi.json | 2 +- .../registry/entities/haproxy.json | 2 +- .../registry/entities/jenkins.json | 2 +- 08-threat-intel/registry/entities/joomla.json | 2 +- 08-threat-intel/registry/entities/kibana.json | 2 +- .../registry/entities/koa--project--koa.json | 2 +- 08-threat-intel/registry/entities/koa.json | 2 +- .../laravel--package--laravel-framework.json | 2 +- .../registry/entities/laravel.json | 2 +- ...o-open-source--repo--magento-magento2.json | 2 +- .../entities/magento-open-source.json | 2 +- ...attermost--plugin--mattermost-plugins.json | 2 +- .../mattermost--project--issue-platform.json | 2 +- ...attermost--project--mattermost-server.json | 2 +- ...thub-com-mattermost-mattermost-server.json | 2 +- .../registry/entities/mattermost.json | 2 +- .../registry/entities/mediawiki.json | 2 +- 08-threat-intel/registry/entities/medusa.json | 2 +- 08-threat-intel/registry/entities/moodle.json | 2 +- 08-threat-intel/registry/entities/nestjs.json | 2 +- .../entities/nextjs--project--next.json | 2 +- 08-threat-intel/registry/entities/nextjs.json | 2 +- 08-threat-intel/registry/entities/nginx.json | 2 +- 08-threat-intel/registry/entities/nodejs.json | 2 +- .../entities/nuxt--project--nuxt.json | 2 +- 08-threat-intel/registry/entities/nuxt.json | 2 +- .../opencart--repo--opencart-opencart.json | 2 +- .../registry/entities/opencart.json | 2 +- .../openmage--repo--openmage-magento-lts.json | 2 +- .../registry/entities/openmage.json | 2 +- .../registry/entities/phpmyadmin.json | 2 +- ...ashop--package--prestashop-prestashop.json | 2 +- ...estashop--repo--prestashop-prestashop.json | 2 +- .../registry/entities/prestashop.json | 2 +- .../entities/rails--project--rails.json | 2 +- 08-threat-intel/registry/entities/rails.json | 2 +- .../entities/react--project--react-dom.json | 2 +- .../entities/react--project--react.json | 2 +- 08-threat-intel/registry/entities/react.json | 2 +- .../registry/entities/redmine.json | 2 +- .../entities/saleor--repo--saleor-saleor.json | 2 +- 08-threat-intel/registry/entities/saleor.json | 2 +- .../shopware--repo--shopware-shopware.json | 2 +- .../registry/entities/shopware.json | 2 +- ...-org-springframework-boot-spring-boot.json | 2 +- .../registry/entities/spring-boot.json | 2 +- .../registry/entities/spring-framework.json | 2 +- ...ramework-security-spring-security-web.json | 2 +- .../registry/entities/spring-security.json | 2 +- .../entities/strapi--repo--strapi-strapi.json | 2 +- 08-threat-intel/registry/entities/strapi.json | 2 +- .../sveltekit--package--sveltejs-kit.json | 2 +- .../registry/entities/sveltekit.json | 2 +- .../symfony--package--symfony-symfony.json | 2 +- .../registry/entities/symfony.json | 2 +- ...ension--github-com-traefik-traefik-v3.json | 2 +- ...--repo--github-com-traefik-traefik-v3.json | 2 +- .../registry/entities/traefik.json | 2 +- .../entities/undici--extension--undici.json | 2 +- .../entities/undici--project--undici.json | 2 +- 08-threat-intel/registry/entities/undici.json | 2 +- .../entities/vite--extension--vite.json | 2 +- .../registry/entities/vite--module--vite.json | 2 +- .../registry/entities/vite--plugin--vite.json | 2 +- .../entities/vite--project--vite.json | 2 +- 08-threat-intel/registry/entities/vite.json | 2 +- .../registry/entities/vue--project--vue.json | 2 +- 08-threat-intel/registry/entities/vue.json | 2 +- .../registry/entities/webpack.json | 2 +- .../entities/werkzeug--project--werkzeug.json | 2 +- .../registry/entities/werkzeug.json | 2 +- ...mmerce--repo--woocommerce-woocommerce.json | 2 +- .../registry/entities/woocommerce.json | 2 +- .../registry/entities/wordpress.json | 2 +- .../monitoring/2026-03-29T10-50-39+00-00.json | 10257 ++++++++++++++++ docs/testing-completeness-report.md | 4 +- 209 files changed, 11017 insertions(+), 792 deletions(-) create mode 100644 08-threat-intel/registry/monitoring/2026-03-29T10-50-39+00-00.json diff --git a/07-framework-security/cms/directus/INDEX.md b/07-framework-security/cms/directus/INDEX.md index 2a7b8cfc..22bd7d9c 100644 --- a/07-framework-security/cms/directus/INDEX.md +++ b/07-framework-security/cms/directus/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `29` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/discourse/INDEX.md b/07-framework-security/cms/discourse/INDEX.md index 65b05d2f..ed2b65aa 100644 --- a/07-framework-security/cms/discourse/INDEX.md +++ b/07-framework-security/cms/discourse/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `30` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/drupal/INDEX.md b/07-framework-security/cms/drupal/INDEX.md index 46a1c752..cb2802ac 100644 --- a/07-framework-security/cms/drupal/INDEX.md +++ b/07-framework-security/cms/drupal/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `70` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/ghost/INDEX.md b/07-framework-security/cms/ghost/INDEX.md index 051791d9..32b6a9ac 100644 --- a/07-framework-security/cms/ghost/INDEX.md +++ b/07-framework-security/cms/ghost/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `23` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/joomla/INDEX.md b/07-framework-security/cms/joomla/INDEX.md index cfee2dc6..6d1c1576 100644 --- a/07-framework-security/cms/joomla/INDEX.md +++ b/07-framework-security/cms/joomla/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `100` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/mediawiki/INDEX.md b/07-framework-security/cms/mediawiki/INDEX.md index faf9bee9..7bd79999 100644 --- a/07-framework-security/cms/mediawiki/INDEX.md +++ b/07-framework-security/cms/mediawiki/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `70` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/moodle/INDEX.md b/07-framework-security/cms/moodle/INDEX.md index 2d377f14..4c9879d8 100644 --- a/07-framework-security/cms/moodle/INDEX.md +++ b/07-framework-security/cms/moodle/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `40` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/strapi/INDEX.md b/07-framework-security/cms/strapi/INDEX.md index 451034f4..7a67253a 100644 --- a/07-framework-security/cms/strapi/INDEX.md +++ b/07-framework-security/cms/strapi/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `26` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/cms/wordpress/INDEX.md b/07-framework-security/cms/wordpress/INDEX.md index d1f935ca..33b52242 100644 --- a/07-framework-security/cms/wordpress/INDEX.md +++ b/07-framework-security/cms/wordpress/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `140` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/adobe-commerce/INDEX.md b/07-framework-security/ecommerce/adobe-commerce/INDEX.md index 4d30d34a..93e66c97 100644 --- a/07-framework-security/ecommerce/adobe-commerce/INDEX.md +++ b/07-framework-security/ecommerce/adobe-commerce/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `81` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/magento-open-source/INDEX.md b/07-framework-security/ecommerce/magento-open-source/INDEX.md index 7f3b1da6..2d044f9c 100644 --- a/07-framework-security/ecommerce/magento-open-source/INDEX.md +++ b/07-framework-security/ecommerce/magento-open-source/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `89` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/medusa/INDEX.md b/07-framework-security/ecommerce/medusa/INDEX.md index a5f39346..c43f4cd3 100644 --- a/07-framework-security/ecommerce/medusa/INDEX.md +++ b/07-framework-security/ecommerce/medusa/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `15` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/opencart/INDEX.md b/07-framework-security/ecommerce/opencart/INDEX.md index 772ca504..bc80a946 100644 --- a/07-framework-security/ecommerce/opencart/INDEX.md +++ b/07-framework-security/ecommerce/opencart/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `100` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/openmage/INDEX.md b/07-framework-security/ecommerce/openmage/INDEX.md index 01b90d9f..d3e206fe 100644 --- a/07-framework-security/ecommerce/openmage/INDEX.md +++ b/07-framework-security/ecommerce/openmage/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `27` -- 最近渲染时间: `2026-03-28T09:18:22+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/prestashop/INDEX.md b/07-framework-security/ecommerce/prestashop/INDEX.md index 59be4ebc..8caf3e61 100644 --- a/07-framework-security/ecommerce/prestashop/INDEX.md +++ b/07-framework-security/ecommerce/prestashop/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `114` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/saleor/INDEX.md b/07-framework-security/ecommerce/saleor/INDEX.md index d212af3b..21cde469 100644 --- a/07-framework-security/ecommerce/saleor/INDEX.md +++ b/07-framework-security/ecommerce/saleor/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `24` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/shopware/INDEX.md b/07-framework-security/ecommerce/shopware/INDEX.md index 7fa34473..6e0cdd55 100644 --- a/07-framework-security/ecommerce/shopware/INDEX.md +++ b/07-framework-security/ecommerce/shopware/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `71` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/woocommerce/INDEX.md b/07-framework-security/ecommerce/woocommerce/INDEX.md index c9891019..7ffe9e4f 100644 --- a/07-framework-security/ecommerce/woocommerce/INDEX.md +++ b/07-framework-security/ecommerce/woocommerce/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `111` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/angular/INDEX.md b/07-framework-security/frameworks/angular/INDEX.md index 249908b4..fbe1b19c 100644 --- a/07-framework-security/frameworks/angular/INDEX.md +++ b/07-framework-security/frameworks/angular/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `2` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/aspnet-core/INDEX.md b/07-framework-security/frameworks/aspnet-core/INDEX.md index 120dc4c8..075ac9bb 100644 --- a/07-framework-security/frameworks/aspnet-core/INDEX.md +++ b/07-framework-security/frameworks/aspnet-core/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `3` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/astro/INDEX.md b/07-framework-security/frameworks/astro/INDEX.md index a7dbb78f..15591b33 100644 --- a/07-framework-security/frameworks/astro/INDEX.md +++ b/07-framework-security/frameworks/astro/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `15` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/django/INDEX.md b/07-framework-security/frameworks/django/INDEX.md index 6efd7863..4a066d44 100644 --- a/07-framework-security/frameworks/django/INDEX.md +++ b/07-framework-security/frameworks/django/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `82` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/echo/INDEX.md b/07-framework-security/frameworks/echo/INDEX.md index 6d1401d5..c071c80b 100644 --- a/07-framework-security/frameworks/echo/INDEX.md +++ b/07-framework-security/frameworks/echo/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `2` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/esbuild/INDEX.md b/07-framework-security/frameworks/esbuild/INDEX.md index e7047bee..531bbad9 100644 --- a/07-framework-security/frameworks/esbuild/INDEX.md +++ b/07-framework-security/frameworks/esbuild/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/express/INDEX.md b/07-framework-security/frameworks/express/INDEX.md index 7a7e1d62..ed9f76c6 100644 --- a/07-framework-security/frameworks/express/INDEX.md +++ b/07-framework-security/frameworks/express/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/fastify/INDEX.md b/07-framework-security/frameworks/fastify/INDEX.md index 6eeba3c6..7be1f5c5 100644 --- a/07-framework-security/frameworks/fastify/INDEX.md +++ b/07-framework-security/frameworks/fastify/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `2` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/flask/INDEX.md b/07-framework-security/frameworks/flask/INDEX.md index 2aff62af..3d4cf32b 100644 --- a/07-framework-security/frameworks/flask/INDEX.md +++ b/07-framework-security/frameworks/flask/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/gin/INDEX.md b/07-framework-security/frameworks/gin/INDEX.md index 5f6918f0..ccacdb9e 100644 --- a/07-framework-security/frameworks/gin/INDEX.md +++ b/07-framework-security/frameworks/gin/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/hapi/INDEX.md b/07-framework-security/frameworks/hapi/INDEX.md index 05ea170a..84aa3e45 100644 --- a/07-framework-security/frameworks/hapi/INDEX.md +++ b/07-framework-security/frameworks/hapi/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/koa/INDEX.md b/07-framework-security/frameworks/koa/INDEX.md index 0b511747..0eb772b8 100644 --- a/07-framework-security/frameworks/koa/INDEX.md +++ b/07-framework-security/frameworks/koa/INDEX.md @@ -6,13 +6,13 @@ - 分类: `frameworks` - 覆盖策略: `rolling-24m` - 总案例数: `1` -- 近 30 天新增/更新: `1` +- 近 30 天新增/更新: `0` - 重点 Markdown 案例数: `1` - 已实证(真实版本): `0` - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/laravel/INDEX.md b/07-framework-security/frameworks/laravel/INDEX.md index ec24286b..bbfb35a2 100644 --- a/07-framework-security/frameworks/laravel/INDEX.md +++ b/07-framework-security/frameworks/laravel/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `2` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nestjs/INDEX.md b/07-framework-security/frameworks/nestjs/INDEX.md index 123da465..51950adc 100644 --- a/07-framework-security/frameworks/nestjs/INDEX.md +++ b/07-framework-security/frameworks/nestjs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `2` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nextjs/INDEX.md b/07-framework-security/frameworks/nextjs/INDEX.md index f3dc2398..2560cc7d 100644 --- a/07-framework-security/frameworks/nextjs/INDEX.md +++ b/07-framework-security/frameworks/nextjs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `40` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nodejs/INDEX.md b/07-framework-security/frameworks/nodejs/INDEX.md index e7abb4d3..594d7e17 100644 --- a/07-framework-security/frameworks/nodejs/INDEX.md +++ b/07-framework-security/frameworks/nodejs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `8` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nuxt/INDEX.md b/07-framework-security/frameworks/nuxt/INDEX.md index ea9760d0..255932a7 100644 --- a/07-framework-security/frameworks/nuxt/INDEX.md +++ b/07-framework-security/frameworks/nuxt/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `28` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/rails/INDEX.md b/07-framework-security/frameworks/rails/INDEX.md index 5bb8766a..902dfac9 100644 --- a/07-framework-security/frameworks/rails/INDEX.md +++ b/07-framework-security/frameworks/rails/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `42` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/react/INDEX.md b/07-framework-security/frameworks/react/INDEX.md index 9d058fed..b1505ad3 100644 --- a/07-framework-security/frameworks/react/INDEX.md +++ b/07-framework-security/frameworks/react/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `21` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-boot/INDEX.md b/07-framework-security/frameworks/spring-boot/INDEX.md index d8a3ebaf..a24ccfc7 100644 --- a/07-framework-security/frameworks/spring-boot/INDEX.md +++ b/07-framework-security/frameworks/spring-boot/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `2` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-framework/INDEX.md b/07-framework-security/frameworks/spring-framework/INDEX.md index dbcc970e..0d34dd85 100644 --- a/07-framework-security/frameworks/spring-framework/INDEX.md +++ b/07-framework-security/frameworks/spring-framework/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `11` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-security/INDEX.md b/07-framework-security/frameworks/spring-security/INDEX.md index d09001e6..43cdceb1 100644 --- a/07-framework-security/frameworks/spring-security/INDEX.md +++ b/07-framework-security/frameworks/spring-security/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `4` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/sveltekit/INDEX.md b/07-framework-security/frameworks/sveltekit/INDEX.md index 95178067..81e1d5a9 100644 --- a/07-framework-security/frameworks/sveltekit/INDEX.md +++ b/07-framework-security/frameworks/sveltekit/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `3` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/symfony/INDEX.md b/07-framework-security/frameworks/symfony/INDEX.md index f7f235b6..290b9987 100644 --- a/07-framework-security/frameworks/symfony/INDEX.md +++ b/07-framework-security/frameworks/symfony/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `9` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/undici/INDEX.md b/07-framework-security/frameworks/undici/INDEX.md index 38e66b4e..2f95dc1e 100644 --- a/07-framework-security/frameworks/undici/INDEX.md +++ b/07-framework-security/frameworks/undici/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `9` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vite/INDEX.md b/07-framework-security/frameworks/vite/INDEX.md index 8ecc14b9..08a52425 100644 --- a/07-framework-security/frameworks/vite/INDEX.md +++ b/07-framework-security/frameworks/vite/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `30` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vue/INDEX.md b/07-framework-security/frameworks/vue/INDEX.md index 7b60ee8e..69cd0619 100644 --- a/07-framework-security/frameworks/vue/INDEX.md +++ b/07-framework-security/frameworks/vue/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `15` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/webpack/INDEX.md b/07-framework-security/frameworks/webpack/INDEX.md index aaada185..fdd62635 100644 --- a/07-framework-security/frameworks/webpack/INDEX.md +++ b/07-framework-security/frameworks/webpack/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/werkzeug/INDEX.md b/07-framework-security/frameworks/werkzeug/INDEX.md index b58be026..76efdb17 100644 --- a/07-framework-security/frameworks/werkzeug/INDEX.md +++ b/07-framework-security/frameworks/werkzeug/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/adminer/INDEX.md b/07-framework-security/platforms/adminer/INDEX.md index cac07457..5978addc 100644 --- a/07-framework-security/platforms/adminer/INDEX.md +++ b/07-framework-security/platforms/adminer/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `2` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitea/INDEX.md b/07-framework-security/platforms/gitea/INDEX.md index 7856dc6a..3e70c5e5 100644 --- a/07-framework-security/platforms/gitea/INDEX.md +++ b/07-framework-security/platforms/gitea/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `13` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitlab-ce/INDEX.md b/07-framework-security/platforms/gitlab-ce/INDEX.md index 7100e8f3..b0a21218 100644 --- a/07-framework-security/platforms/gitlab-ce/INDEX.md +++ b/07-framework-security/platforms/gitlab-ce/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `56` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/grafana/INDEX.md b/07-framework-security/platforms/grafana/INDEX.md index cbaea5ce..49089f92 100644 --- a/07-framework-security/platforms/grafana/INDEX.md +++ b/07-framework-security/platforms/grafana/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `60` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/jenkins/INDEX.md b/07-framework-security/platforms/jenkins/INDEX.md index 7b406eb1..1a65a51f 100644 --- a/07-framework-security/platforms/jenkins/INDEX.md +++ b/07-framework-security/platforms/jenkins/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `60` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/kibana/INDEX.md b/07-framework-security/platforms/kibana/INDEX.md index 4a7e8883..3dfd9ba7 100644 --- a/07-framework-security/platforms/kibana/INDEX.md +++ b/07-framework-security/platforms/kibana/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `47` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/mattermost/INDEX.md b/07-framework-security/platforms/mattermost/INDEX.md index 8ac9554d..016b2a8f 100644 --- a/07-framework-security/platforms/mattermost/INDEX.md +++ b/07-framework-security/platforms/mattermost/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `33` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/phpmyadmin/INDEX.md b/07-framework-security/platforms/phpmyadmin/INDEX.md index ab2502bb..6527a4ef 100644 --- a/07-framework-security/platforms/phpmyadmin/INDEX.md +++ b/07-framework-security/platforms/phpmyadmin/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `50` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/redmine/INDEX.md b/07-framework-security/platforms/redmine/INDEX.md index ee4acc8a..2513e700 100644 --- a/07-framework-security/platforms/redmine/INDEX.md +++ b/07-framework-security/platforms/redmine/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `50` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-httpd/INDEX.md b/07-framework-security/servers/apache-httpd/INDEX.md index 29bda9de..d3987211 100644 --- a/07-framework-security/servers/apache-httpd/INDEX.md +++ b/07-framework-security/servers/apache-httpd/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `135` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-tomcat/INDEX.md b/07-framework-security/servers/apache-tomcat/INDEX.md index b7bc9e75..5f98fdab 100644 --- a/07-framework-security/servers/apache-tomcat/INDEX.md +++ b/07-framework-security/servers/apache-tomcat/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `136` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/servers/caddy/INDEX.md b/07-framework-security/servers/caddy/INDEX.md index 1da81a5b..15e51e60 100644 --- a/07-framework-security/servers/caddy/INDEX.md +++ b/07-framework-security/servers/caddy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `29` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/servers/haproxy/INDEX.md b/07-framework-security/servers/haproxy/INDEX.md index d07793ce..358ca939 100644 --- a/07-framework-security/servers/haproxy/INDEX.md +++ b/07-framework-security/servers/haproxy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `7` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/servers/nginx/INDEX.md b/07-framework-security/servers/nginx/INDEX.md index e0812545..3aa23da6 100644 --- a/07-framework-security/servers/nginx/INDEX.md +++ b/07-framework-security/servers/nginx/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `110` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/07-framework-security/servers/traefik/INDEX.md b/07-framework-security/servers/traefik/INDEX.md index 796c3487..b73d5dec 100644 --- a/07-framework-security/servers/traefik/INDEX.md +++ b/07-framework-security/servers/traefik/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `47` -- 最近渲染时间: `2026-03-28T09:18:23+00:00` +- 最近渲染时间: `2026-03-29T10:50:54+00:00` ## 目标约束 diff --git a/08-threat-intel/generated/dashboard/architecture.json b/08-threat-intel/generated/dashboard/architecture.json index 54677fcb..3c7e35dc 100644 --- a/08-threat-intel/generated/dashboard/architecture.json +++ b/08-threat-intel/generated/dashboard/architecture.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-28T09:18:24+00:00", + "generated_at": "2026-03-29T10:50:56+00:00", "title": "\u5f53\u524d\u67b6\u6784\u5e93", "summary": "\u5de5\u4f5c\u53f0\u3001\u63a7\u5236\u9762\u3001\u6570\u636e\u5c42\u3001\u6388\u6743\u8fb9\u754c\u4e0e\u7cfb\u7edf\u8986\u76d6\u7684\u5f53\u524d\u771f\u503c\u89c6\u56fe\u3002", "sections": [ @@ -57,7 +57,7 @@ }, { "label": "\u751f\u6210\u65f6\u95f4", - "value": "2026-03-28T09:18:24+00:00" + "value": "2026-03-29T10:50:56+00:00" } ], "links": [ diff --git a/08-threat-intel/generated/dashboard/data/completeness.json b/08-threat-intel/generated/dashboard/data/completeness.json index 0678d622..4463dc91 100644 --- a/08-threat-intel/generated/dashboard/data/completeness.json +++ b/08-threat-intel/generated/dashboard/data/completeness.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-28T09:18:24+00:00", + "generated_at": "2026-03-29T10:50:56+00:00", "advisory_total": 89, "registry_advisory_total": 2424, "scope": "latest-run-backed-advisories", @@ -175,12 +175,12 @@ "active_source_count": 102, "green_source_count": 102, "failure_count": 0, - "last_fully_green_run": "2026-03-28T09:18:08+00:00", + "last_fully_green_run": "2026-03-29T10:50:39+00:00", "open_alert_count": 0, "resolved_alert_count": 101 }, "entity_coverage": { - "generated_at": "2026-03-28T09:18:23+00:00", + "generated_at": "2026-03-29T10:50:55+00:00", "cataloged_entity_total": 110, "candidate_entity_total": 7, "history_full_complete_count": 41, @@ -1954,26 +1954,23 @@ } }, "monitor_summary": { - "generated_at": "2026-03-28T09:18:08+00:00", + "generated_at": "2026-03-29T10:50:39+00:00", "active_source_count": 102, "green_source_count": 102, "source_failure_count": 0, "open_alert_count": 0, "resolved_alert_count": 101, - "last_fully_green_run": "2026-03-28T09:18:08+00:00", + "last_fully_green_run": "2026-03-29T10:50:39+00:00", "source_catalog": { "system_count": 62, "source_count": 179, "retired_source_count": 77 }, "ingest": { - "new_count": 2, - "updated_count": 2, + "new_count": 0, + "updated_count": 0, "failure_count": 0, - "systems_touched": [ - "prestashop", - "traefik" - ] + "systems_touched": [] }, "validation": { "passed": true, @@ -1995,10 +1992,10 @@ "security_version_total": 6314, "security_version_entity_count": 83, "auto_promoted_entity_count": 10, - "lab_enqueued_count": 2 + "lab_enqueued_count": 0 }, "lab_enqueue": { - "enqueued": 2, + "enqueued": 0, "queue_total": 2380, "pending_count": 0 } diff --git a/08-threat-intel/generated/dashboard/data/entity-completeness.json b/08-threat-intel/generated/dashboard/data/entity-completeness.json index 64437168..cfad60d9 100644 --- a/08-threat-intel/generated/dashboard/data/entity-completeness.json +++ b/08-threat-intel/generated/dashboard/data/entity-completeness.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-28T09:18:23+00:00", + "generated_at": "2026-03-29T10:50:55+00:00", "cataloged_entity_total": 110, "candidate_entity_total": 7, "history_full_complete_count": 41, diff --git a/08-threat-intel/generated/dashboard/data/entity-queues.json b/08-threat-intel/generated/dashboard/data/entity-queues.json index 4ddd3f5c..5615d552 100644 --- a/08-threat-intel/generated/dashboard/data/entity-queues.json +++ b/08-threat-intel/generated/dashboard/data/entity-queues.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-28T09:18:23+00:00", + "generated_at": "2026-03-29T10:50:55+00:00", "discovery_queue": { "count": 7, "items": [ diff --git a/08-threat-intel/generated/dashboard/data/lab-enqueue-summary.json b/08-threat-intel/generated/dashboard/data/lab-enqueue-summary.json index 41bddfd6..0a052f15 100644 --- a/08-threat-intel/generated/dashboard/data/lab-enqueue-summary.json +++ b/08-threat-intel/generated/dashboard/data/lab-enqueue-summary.json @@ -1,6 +1,6 @@ { - "generated_at": "2026-03-28T09:18:16+00:00", - "enqueued": 2, + "generated_at": "2026-03-29T10:50:47+00:00", + "enqueued": 0, "queue_total": 2380, "items": [ { @@ -2758,16 +2758,6 @@ "system_id": "strapi", "priority": "version-sync" }, - { - "advisory_id": "traefik--CVE-2026-32695", - "system_id": "traefik", - "priority": "version-sync" - }, - { - "advisory_id": "traefik--CVE-2026-33433", - "system_id": "traefik", - "priority": "version-sync" - }, { "advisory_id": "woocommerce--05da41121f", "system_id": "woocommerce", diff --git a/08-threat-intel/generated/dashboard/data/monitor-summary.json b/08-threat-intel/generated/dashboard/data/monitor-summary.json index da302333..2410c8fa 100644 --- a/08-threat-intel/generated/dashboard/data/monitor-summary.json +++ b/08-threat-intel/generated/dashboard/data/monitor-summary.json @@ -1,24 +1,21 @@ { - "generated_at": "2026-03-28T09:18:08+00:00", + "generated_at": "2026-03-29T10:50:39+00:00", "active_source_count": 102, "green_source_count": 102, "source_failure_count": 0, "open_alert_count": 0, "resolved_alert_count": 101, - "last_fully_green_run": "2026-03-28T09:18:08+00:00", + "last_fully_green_run": "2026-03-29T10:50:39+00:00", "source_catalog": { "system_count": 62, "source_count": 179, "retired_source_count": 77 }, "ingest": { - "new_count": 2, - "updated_count": 2, + "new_count": 0, + "updated_count": 0, "failure_count": 0, - "systems_touched": [ - "prestashop", - "traefik" - ] + "systems_touched": [] }, "validation": { "passed": true, @@ -40,10 +37,10 @@ "security_version_total": 6314, "security_version_entity_count": 83, "auto_promoted_entity_count": 10, - "lab_enqueued_count": 2 + "lab_enqueued_count": 0 }, "lab_enqueue": { - "enqueued": 2, + "enqueued": 0, "queue_total": 2380, "pending_count": 0 } diff --git a/08-threat-intel/generated/dashboard/data/release-index.json b/08-threat-intel/generated/dashboard/data/release-index.json index 07618304..27eb8bd7 100644 --- a/08-threat-intel/generated/dashboard/data/release-index.json +++ b/08-threat-intel/generated/dashboard/data/release-index.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-28T09:18:23+00:00", + "generated_at": "2026-03-29T10:50:55+00:00", "version_count": 6314, "versions": [ { diff --git a/08-threat-intel/generated/dashboard/data/source-catalog-audit.json b/08-threat-intel/generated/dashboard/data/source-catalog-audit.json index 81e76568..94462be1 100644 --- a/08-threat-intel/generated/dashboard/data/source-catalog-audit.json +++ b/08-threat-intel/generated/dashboard/data/source-catalog-audit.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-28T09:17:03+00:00", + "generated_at": "2026-03-29T10:49:35+00:00", "system_count": 62, "source_count": 179, "active_source_count": 102, diff --git a/08-threat-intel/generated/dashboard/data/source-health.json b/08-threat-intel/generated/dashboard/data/source-health.json index f34bbcb5..28908183 100644 --- a/08-threat-intel/generated/dashboard/data/source-health.json +++ b/08-threat-intel/generated/dashboard/data/source-health.json @@ -1,17 +1,17 @@ { - "generated_at": "2026-03-28T09:18:08+00:00", + "generated_at": "2026-03-29T10:50:39+00:00", "active_source_count": 102, "green_source_count": 102, "failure_count": 0, "all_green": true, - "last_fully_green_run": "2026-03-28T09:18:08+00:00", + "last_fully_green_run": "2026-03-29T10:50:39+00:00", "retries_performed": 0, "probes": [ { "system_id": "adminer", "source_name": "OSV Adminer", "source_kind": "osv-batch", - "elapsed_seconds": 4.871, + "elapsed_seconds": 4.767, "kind": "osv-batch", "items_seen": 1 }, @@ -19,7 +19,7 @@ "system_id": "adobe-commerce", "source_name": "Adobe Magento Security Index", "source_kind": "vendor-index", - "elapsed_seconds": 0.024, + "elapsed_seconds": 0.017, "kind": "vendor-index", "items_seen": 46 }, @@ -27,7 +27,7 @@ "system_id": "angular", "source_name": "OSV Angular", "source_kind": "osv-batch", - "elapsed_seconds": 2.685, + "elapsed_seconds": 2.665, "kind": "osv-batch", "items_seen": 1 }, @@ -35,7 +35,7 @@ "system_id": "apache-httpd", "source_name": "Apache HTTPD Security", "source_kind": "html-links", - "elapsed_seconds": 2.902, + "elapsed_seconds": 2.872, "kind": "html-links", "items_seen": 182 }, @@ -43,7 +43,7 @@ "system_id": "apache-httpd", "source_name": "CISA KEV Apache HTTPD", "source_kind": "kev-json", - "elapsed_seconds": 3.239, + "elapsed_seconds": 4.032, "kind": "kev-json", "items_seen": 1554 }, @@ -51,7 +51,7 @@ "system_id": "apache-tomcat", "source_name": "Apache Tomcat Security", "source_kind": "html-links", - "elapsed_seconds": 2.91, + "elapsed_seconds": 2.892, "kind": "html-links", "items_seen": 270 }, @@ -59,7 +59,7 @@ "system_id": "apache-tomcat", "source_name": "CISA KEV Tomcat", "source_kind": "kev-json", - "elapsed_seconds": 3.239, + "elapsed_seconds": 4.032, "kind": "kev-json", "items_seen": 1554 }, @@ -67,7 +67,7 @@ "system_id": "aspnet-core", "source_name": "OSV ASP.NET Core", "source_kind": "osv-batch", - "elapsed_seconds": 3.896, + "elapsed_seconds": 3.695, "kind": "osv-batch", "items_seen": 1 }, @@ -75,7 +75,7 @@ "system_id": "astro", "source_name": "OSV Astro", "source_kind": "osv-batch", - "elapsed_seconds": 2.729, + "elapsed_seconds": 2.634, "kind": "osv-batch", "items_seen": 1 }, @@ -83,7 +83,7 @@ "system_id": "caddy", "source_name": "OSV Caddy", "source_kind": "osv-batch", - "elapsed_seconds": 4.159, + "elapsed_seconds": 4.441, "kind": "osv-batch", "items_seen": 1 }, @@ -91,7 +91,7 @@ "system_id": "directus", "source_name": "Directus GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.027, + "elapsed_seconds": 0.021, "kind": "html-links", "items_seen": 127 }, @@ -99,7 +99,7 @@ "system_id": "directus", "source_name": "OSV Directus", "source_kind": "osv-batch", - "elapsed_seconds": 1.618, + "elapsed_seconds": 1.736, "kind": "osv-batch", "items_seen": 1 }, @@ -107,7 +107,7 @@ "system_id": "discourse", "source_name": "Discourse Release Notes RSS", "source_kind": "rss-feed", - "elapsed_seconds": 0.025, + "elapsed_seconds": 0.017, "kind": "rss-feed", "items_seen": 30 }, @@ -115,7 +115,7 @@ "system_id": "discourse", "source_name": "Discourse Security RSS", "source_kind": "rss-feed", - "elapsed_seconds": 0.024, + "elapsed_seconds": 0.017, "kind": "rss-feed", "items_seen": 3 }, @@ -123,7 +123,7 @@ "system_id": "discourse", "source_name": "OSV Discourse", "source_kind": "osv-batch", - "elapsed_seconds": 1.564, + "elapsed_seconds": 1.509, "kind": "osv-batch", "items_seen": 1 }, @@ -131,7 +131,7 @@ "system_id": "django", "source_name": "Django Security Releases Archive", "source_kind": "vendor-index", - "elapsed_seconds": 2.682, + "elapsed_seconds": 2.61, "kind": "vendor-index", "items_seen": 1276 }, @@ -139,7 +139,7 @@ "system_id": "django", "source_name": "Django Security Weblog", "source_kind": "vendor-index", - "elapsed_seconds": 2.682, + "elapsed_seconds": 2.599, "kind": "vendor-index", "items_seen": 332 }, @@ -147,7 +147,7 @@ "system_id": "django", "source_name": "OSV Django", "source_kind": "osv-batch", - "elapsed_seconds": 4.85, + "elapsed_seconds": 4.634, "kind": "osv-batch", "items_seen": 1 }, @@ -155,7 +155,7 @@ "system_id": "drupal", "source_name": "Drupal Security Advisories RSS", "source_kind": "rss-feed", - "elapsed_seconds": 0.029, + "elapsed_seconds": 1.184, "kind": "rss-feed", "items_seen": 20 }, @@ -163,7 +163,7 @@ "system_id": "drupal", "source_name": "OSV Drupal", "source_kind": "osv-batch", - "elapsed_seconds": 2.52, + "elapsed_seconds": 2.424, "kind": "osv-batch", "items_seen": 1 }, @@ -171,7 +171,7 @@ "system_id": "echo", "source_name": "OSV Echo", "source_kind": "osv-batch", - "elapsed_seconds": 4.121, + "elapsed_seconds": 3.917, "kind": "osv-batch", "items_seen": 1 }, @@ -179,7 +179,7 @@ "system_id": "esbuild", "source_name": "OSV esbuild", "source_kind": "osv-batch", - "elapsed_seconds": 3.165, + "elapsed_seconds": 3.596, "kind": "osv-batch", "items_seen": 1 }, @@ -187,7 +187,7 @@ "system_id": "express", "source_name": "OSV Express", "source_kind": "osv-batch", - "elapsed_seconds": 2.818, + "elapsed_seconds": 2.685, "kind": "osv-batch", "items_seen": 1 }, @@ -195,7 +195,7 @@ "system_id": "fastify", "source_name": "OSV Fastify", "source_kind": "osv-batch", - "elapsed_seconds": 2.857, + "elapsed_seconds": 2.872, "kind": "osv-batch", "items_seen": 1 }, @@ -203,7 +203,7 @@ "system_id": "flask", "source_name": "OSV Flask", "source_kind": "osv-batch", - "elapsed_seconds": 3.84, + "elapsed_seconds": 3.695, "kind": "osv-batch", "items_seen": 1 }, @@ -211,7 +211,7 @@ "system_id": "ghost", "source_name": "Ghost GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.029, + "elapsed_seconds": 1.148, "kind": "html-links", "items_seen": 119 }, @@ -219,7 +219,7 @@ "system_id": "ghost", "source_name": "OSV Ghost", "source_kind": "osv-batch", - "elapsed_seconds": 2.035, + "elapsed_seconds": 1.516, "kind": "osv-batch", "items_seen": 1 }, @@ -227,7 +227,7 @@ "system_id": "gin", "source_name": "OSV Gin", "source_kind": "osv-batch", - "elapsed_seconds": 4.065, + "elapsed_seconds": 3.695, "kind": "osv-batch", "items_seen": 1 }, @@ -235,7 +235,7 @@ "system_id": "gitea", "source_name": "OSV Gitea", "source_kind": "osv-batch", - "elapsed_seconds": 4.624, + "elapsed_seconds": 4.833, "kind": "osv-batch", "items_seen": 1 }, @@ -243,7 +243,7 @@ "system_id": "gitlab-ce", "source_name": "GitLab Advisory Database", "source_kind": "html-links", - "elapsed_seconds": 3.267, + "elapsed_seconds": 3.69, "kind": "html-links", "items_seen": 5 }, @@ -251,7 +251,7 @@ "system_id": "gitlab-ce", "source_name": "GitLab Security Releases Atom", "source_kind": "atom-feed", - "elapsed_seconds": 3.267, + "elapsed_seconds": 3.69, "kind": "atom-feed", "items_seen": 187 }, @@ -259,7 +259,7 @@ "system_id": "grafana", "source_name": "CISA KEV Grafana", "source_kind": "kev-json", - "elapsed_seconds": 3.267, + "elapsed_seconds": 4.032, "kind": "kev-json", "items_seen": 1554 }, @@ -267,7 +267,7 @@ "system_id": "grafana", "source_name": "Grafana Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 3.267, + "elapsed_seconds": 3.69, "kind": "html-links", "items_seen": 159 }, @@ -275,7 +275,7 @@ "system_id": "hapi", "source_name": "OSV Hapi", "source_kind": "osv-batch", - "elapsed_seconds": 2.902, + "elapsed_seconds": 2.872, "kind": "osv-batch", "items_seen": 1 }, @@ -283,7 +283,7 @@ "system_id": "haproxy", "source_name": "HAProxy Blog Feed", "source_kind": "rss-feed", - "elapsed_seconds": 3.239, + "elapsed_seconds": 3.596, "kind": "rss-feed", "items_seen": 10 }, @@ -291,7 +291,7 @@ "system_id": "jenkins", "source_name": "Jenkins Security Advisories RSS", "source_kind": "rss-feed", - "elapsed_seconds": 3.267, + "elapsed_seconds": 3.69, "kind": "rss-feed", "items_seen": 96 }, @@ -299,7 +299,7 @@ "system_id": "joomla", "source_name": "Joomla Security Centre", "source_kind": "html-links", - "elapsed_seconds": 0.029, + "elapsed_seconds": 2.227, "kind": "html-links", "items_seen": 139 }, @@ -307,7 +307,7 @@ "system_id": "joomla", "source_name": "OSV Joomla", "source_kind": "osv-batch", - "elapsed_seconds": 1.814, + "elapsed_seconds": 1.514, "kind": "osv-batch", "items_seen": 1 }, @@ -315,7 +315,7 @@ "system_id": "kibana", "source_name": "Elastic Product Security", "source_kind": "html-links", - "elapsed_seconds": 3.267, + "elapsed_seconds": 3.695, "kind": "html-links", "items_seen": 66 }, @@ -323,7 +323,7 @@ "system_id": "kibana", "source_name": "NVD Kibana", "source_kind": "nvd-search", - "elapsed_seconds": 4.836, + "elapsed_seconds": 5.353, "kind": "nvd-search", "items_seen": 1 }, @@ -331,7 +331,7 @@ "system_id": "koa", "source_name": "OSV Koa", "source_kind": "osv-batch", - "elapsed_seconds": 2.91, + "elapsed_seconds": 2.892, "kind": "osv-batch", "items_seen": 1 }, @@ -339,7 +339,7 @@ "system_id": "laravel", "source_name": "OSV Laravel", "source_kind": "osv-batch", - "elapsed_seconds": 3.539, + "elapsed_seconds": 3.918, "kind": "osv-batch", "items_seen": 1 }, @@ -347,7 +347,7 @@ "system_id": "magento-open-source", "source_name": "Magento GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.024, + "elapsed_seconds": 0.01, "kind": "html-links", "items_seen": 99 }, @@ -355,7 +355,7 @@ "system_id": "magento-open-source", "source_name": "OSV Magento Open Source", "source_kind": "osv-batch", - "elapsed_seconds": 2.175, + "elapsed_seconds": 1.567, "kind": "osv-batch", "items_seen": 1 }, @@ -363,7 +363,7 @@ "system_id": "magento-open-source", "source_name": "Sansec Research", "source_kind": "html-links", - "elapsed_seconds": 0.016, + "elapsed_seconds": 0.01, "kind": "html-links", "items_seen": 135 }, @@ -371,7 +371,7 @@ "system_id": "mattermost", "source_name": "Mattermost Security Updates JSON", "source_kind": "json-feed", - "elapsed_seconds": 3.269, + "elapsed_seconds": 3.695, "kind": "json-feed", "items_seen": 594 }, @@ -379,7 +379,7 @@ "system_id": "mattermost", "source_name": "OSV Mattermost", "source_kind": "osv-batch", - "elapsed_seconds": 5.152, + "elapsed_seconds": 5.563, "kind": "osv-batch", "items_seen": 1 }, @@ -387,7 +387,7 @@ "system_id": "mediawiki", "source_name": "MediaWiki Announce RSS", "source_kind": "rss-feed", - "elapsed_seconds": 0.026, + "elapsed_seconds": 0.02, "kind": "rss-feed", "items_seen": 30 }, @@ -395,7 +395,7 @@ "system_id": "mediawiki", "source_name": "OSV MediaWiki", "source_kind": "osv-batch", - "elapsed_seconds": 1.704, + "elapsed_seconds": 1.658, "kind": "osv-batch", "items_seen": 1 }, @@ -403,7 +403,7 @@ "system_id": "medusa", "source_name": "OSV Medusa", "source_kind": "osv-batch", - "elapsed_seconds": 1.536, + "elapsed_seconds": 2.546, "kind": "osv-batch", "items_seen": 1 }, @@ -411,7 +411,7 @@ "system_id": "moodle", "source_name": "OSV Moodle", "source_kind": "osv-batch", - "elapsed_seconds": 5.195, + "elapsed_seconds": 5.03, "kind": "osv-batch", "items_seen": 1 }, @@ -419,7 +419,7 @@ "system_id": "nestjs", "source_name": "OSV NestJS", "source_kind": "osv-batch", - "elapsed_seconds": 2.88, + "elapsed_seconds": 2.672, "kind": "osv-batch", "items_seen": 1 }, @@ -427,7 +427,7 @@ "system_id": "nextjs", "source_name": "OSV Next.js", "source_kind": "osv-batch", - "elapsed_seconds": 1.586, + "elapsed_seconds": 2.599, "kind": "osv-batch", "items_seen": 1 }, @@ -435,7 +435,7 @@ "system_id": "nginx", "source_name": "CISA KEV NGINX", "source_kind": "kev-json", - "elapsed_seconds": 3.24, + "elapsed_seconds": 4.037, "kind": "kev-json", "items_seen": 1554 }, @@ -443,7 +443,7 @@ "system_id": "nginx", "source_name": "NGINX Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 2.88, + "elapsed_seconds": 2.872, "kind": "html-links", "items_seen": 150 }, @@ -451,7 +451,7 @@ "system_id": "nodejs", "source_name": "CISA KEV Node.js", "source_kind": "kev-json", - "elapsed_seconds": 3.267, + "elapsed_seconds": 4.032, "kind": "kev-json", "items_seen": 1554 }, @@ -459,7 +459,7 @@ "system_id": "nodejs", "source_name": "Node.js Security Releases", "source_kind": "html-links", - "elapsed_seconds": 1.785, + "elapsed_seconds": 1.835, "kind": "html-links", "items_seen": 74 }, @@ -467,7 +467,7 @@ "system_id": "nuxt", "source_name": "OSV Nuxt", "source_kind": "osv-batch", - "elapsed_seconds": 2.685, + "elapsed_seconds": 2.546, "kind": "osv-batch", "items_seen": 1 }, @@ -475,7 +475,7 @@ "system_id": "opencart", "source_name": "OSV OpenCart", "source_kind": "osv-batch", - "elapsed_seconds": 1.582, + "elapsed_seconds": 2.422, "kind": "osv-batch", "items_seen": 1 }, @@ -483,7 +483,7 @@ "system_id": "opencart", "source_name": "OpenCart Releases", "source_kind": "html-links", - "elapsed_seconds": 0.003, + "elapsed_seconds": 1.126, "kind": "html-links", "items_seen": 1500 }, @@ -491,7 +491,7 @@ "system_id": "openmage", "source_name": "OSV OpenMage", "source_kind": "osv-batch", - "elapsed_seconds": 1.807, + "elapsed_seconds": 1.691, "kind": "osv-batch", "items_seen": 1 }, @@ -499,7 +499,7 @@ "system_id": "openmage", "source_name": "OpenMage GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.016, + "elapsed_seconds": 0.008, "kind": "html-links", "items_seen": 125 }, @@ -507,7 +507,7 @@ "system_id": "phpmyadmin", "source_name": "OSV phpMyAdmin", "source_kind": "osv-batch", - "elapsed_seconds": 4.63, + "elapsed_seconds": 5.189, "kind": "osv-batch", "items_seen": 1 }, @@ -515,7 +515,7 @@ "system_id": "phpmyadmin", "source_name": "phpMyAdmin Security Page", "source_kind": "html-links", - "elapsed_seconds": 3.239, + "elapsed_seconds": 3.596, "kind": "html-links", "items_seen": 263 }, @@ -523,7 +523,7 @@ "system_id": "prestashop", "source_name": "Friends Of Presta Security", "source_kind": "html-links", - "elapsed_seconds": 0.009, + "elapsed_seconds": 0.004, "kind": "html-links", "items_seen": 38 }, @@ -531,7 +531,7 @@ "system_id": "prestashop", "source_name": "GitHub PrestaShop Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.009, + "elapsed_seconds": 0.003, "kind": "html-links", "items_seen": 127 }, @@ -539,7 +539,7 @@ "system_id": "prestashop", "source_name": "OSV PrestaShop", "source_kind": "osv-batch", - "elapsed_seconds": 2.196, + "elapsed_seconds": 1.544, "kind": "osv-batch", "items_seen": 1 }, @@ -547,7 +547,7 @@ "system_id": "prestashop", "source_name": "PrestaShop Security Page", "source_kind": "html-links", - "elapsed_seconds": 0.009, + "elapsed_seconds": 0.003, "kind": "html-links", "items_seen": 60 }, @@ -555,7 +555,7 @@ "system_id": "rails", "source_name": "OSV Rails", "source_kind": "osv-batch", - "elapsed_seconds": 4.066, + "elapsed_seconds": 3.738, "kind": "osv-batch", "items_seen": 1 }, @@ -563,7 +563,7 @@ "system_id": "react", "source_name": "OSV React", "source_kind": "osv-batch", - "elapsed_seconds": 1.557, + "elapsed_seconds": 2.546, "kind": "osv-batch", "items_seen": 1 }, @@ -571,7 +571,7 @@ "system_id": "redmine", "source_name": "OSV Redmine", "source_kind": "osv-batch", - "elapsed_seconds": 4.474, + "elapsed_seconds": 4.651, "kind": "osv-batch", "items_seen": 1 }, @@ -579,7 +579,7 @@ "system_id": "redmine", "source_name": "Redmine Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 3.27, + "elapsed_seconds": 3.695, "kind": "html-links", "items_seen": 371 }, @@ -587,7 +587,7 @@ "system_id": "saleor", "source_name": "GitHub Saleor Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.003, + "elapsed_seconds": 1.161, "kind": "html-links", "items_seen": 120 }, @@ -595,7 +595,7 @@ "system_id": "saleor", "source_name": "OSV Saleor", "source_kind": "osv-batch", - "elapsed_seconds": 1.596, + "elapsed_seconds": 2.344, "kind": "osv-batch", "items_seen": 1 }, @@ -603,7 +603,7 @@ "system_id": "shopware", "source_name": "OSV Shopware", "source_kind": "osv-batch", - "elapsed_seconds": 2.032, + "elapsed_seconds": 1.716, "kind": "osv-batch", "items_seen": 1 }, @@ -611,7 +611,7 @@ "system_id": "shopware", "source_name": "Shopware Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.008, + "elapsed_seconds": 0.004, "kind": "html-links", "items_seen": 129 }, @@ -619,7 +619,7 @@ "system_id": "spring-boot", "source_name": "OSV Spring Boot", "source_kind": "osv-batch", - "elapsed_seconds": 3.566, + "elapsed_seconds": 3.632, "kind": "osv-batch", "items_seen": 1 }, @@ -627,7 +627,7 @@ "system_id": "spring-boot", "source_name": "Spring Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 2.16, + "elapsed_seconds": 2.546, "kind": "html-links", "items_seen": 118 }, @@ -635,7 +635,7 @@ "system_id": "spring-framework", "source_name": "OSV Spring Framework", "source_kind": "osv-batch", - "elapsed_seconds": 3.271, + "elapsed_seconds": 3.691, "kind": "osv-batch", "items_seen": 1 }, @@ -643,7 +643,7 @@ "system_id": "spring-framework", "source_name": "Spring Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 2.007, + "elapsed_seconds": 2.422, "kind": "html-links", "items_seen": 118 }, @@ -651,7 +651,7 @@ "system_id": "spring-security", "source_name": "OSV Spring Security", "source_kind": "osv-batch", - "elapsed_seconds": 3.201, + "elapsed_seconds": 3.596, "kind": "osv-batch", "items_seen": 1 }, @@ -659,7 +659,7 @@ "system_id": "spring-security", "source_name": "Spring Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 2.024, + "elapsed_seconds": 2.546, "kind": "html-links", "items_seen": 118 }, @@ -667,7 +667,7 @@ "system_id": "strapi", "source_name": "OSV Strapi", "source_kind": "osv-batch", - "elapsed_seconds": 1.89, + "elapsed_seconds": 1.635, "kind": "osv-batch", "items_seen": 1 }, @@ -675,7 +675,7 @@ "system_id": "strapi", "source_name": "Strapi GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.028, + "elapsed_seconds": 1.186, "kind": "html-links", "items_seen": 124 }, @@ -683,7 +683,7 @@ "system_id": "sveltekit", "source_name": "OSV SvelteKit", "source_kind": "osv-batch", - "elapsed_seconds": 2.699, + "elapsed_seconds": 2.629, "kind": "osv-batch", "items_seen": 1 }, @@ -691,7 +691,7 @@ "system_id": "symfony", "source_name": "OSV Symfony", "source_kind": "osv-batch", - "elapsed_seconds": 4.249, + "elapsed_seconds": 4.117, "kind": "osv-batch", "items_seen": 1 }, @@ -699,7 +699,7 @@ "system_id": "traefik", "source_name": "OSV Traefik", "source_kind": "osv-batch", - "elapsed_seconds": 4.408, + "elapsed_seconds": 4.791, "kind": "osv-batch", "items_seen": 1 }, @@ -707,7 +707,7 @@ "system_id": "undici", "source_name": "OSV Undici", "source_kind": "osv-batch", - "elapsed_seconds": 3.269, + "elapsed_seconds": 3.596, "kind": "osv-batch", "items_seen": 1 }, @@ -715,7 +715,7 @@ "system_id": "vite", "source_name": "OSV Vite", "source_kind": "osv-batch", - "elapsed_seconds": 2.682, + "elapsed_seconds": 2.546, "kind": "osv-batch", "items_seen": 1 }, @@ -723,7 +723,7 @@ "system_id": "vue", "source_name": "OSV Vue", "source_kind": "osv-batch", - "elapsed_seconds": 1.558, + "elapsed_seconds": 2.672, "kind": "osv-batch", "items_seen": 1 }, @@ -731,7 +731,7 @@ "system_id": "webpack", "source_name": "OSV webpack", "source_kind": "osv-batch", - "elapsed_seconds": 3.376, + "elapsed_seconds": 3.398, "kind": "osv-batch", "items_seen": 1 }, @@ -739,7 +739,7 @@ "system_id": "werkzeug", "source_name": "OSV Werkzeug", "source_kind": "osv-batch", - "elapsed_seconds": 3.85, + "elapsed_seconds": 3.71, "kind": "osv-batch", "items_seen": 1 }, @@ -747,7 +747,7 @@ "system_id": "woocommerce", "source_name": "GitHub WooCommerce Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.013, + "elapsed_seconds": 0.005, "kind": "html-links", "items_seen": 107 }, @@ -755,7 +755,7 @@ "system_id": "woocommerce", "source_name": "OSV WooCommerce", "source_kind": "osv-batch", - "elapsed_seconds": 1.734, + "elapsed_seconds": 1.361, "kind": "osv-batch", "items_seen": 1 }, @@ -763,7 +763,7 @@ "system_id": "woocommerce", "source_name": "Patchstack Database", "source_kind": "html-links", - "elapsed_seconds": 0.011, + "elapsed_seconds": 0.005, "kind": "html-links", "items_seen": 193 }, @@ -771,7 +771,7 @@ "system_id": "woocommerce", "source_name": "Woo Developer Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.013, + "elapsed_seconds": 0.008, "kind": "html-links", "items_seen": 121 }, @@ -779,7 +779,7 @@ "system_id": "woocommerce", "source_name": "Wordfence Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 0.011, + "elapsed_seconds": 0.0, "kind": "html-links", "items_seen": 0 }, @@ -787,7 +787,7 @@ "system_id": "wordpress", "source_name": "Patchstack Database", "source_kind": "html-links", - "elapsed_seconds": 0.031, + "elapsed_seconds": 0.024, "kind": "html-links", "items_seen": 193 }, @@ -795,7 +795,7 @@ "system_id": "wordpress", "source_name": "PortSwigger Research", "source_kind": "html-links", - "elapsed_seconds": 1.996, + "elapsed_seconds": 1.857, "kind": "html-links", "items_seen": 99 }, @@ -803,7 +803,7 @@ "system_id": "wordpress", "source_name": "WPScan Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 0.031, + "elapsed_seconds": 1.405, "kind": "html-links", "items_seen": 74 }, @@ -811,7 +811,7 @@ "system_id": "wordpress", "source_name": "WordPress Security News RSS", "source_kind": "rss-feed", - "elapsed_seconds": 0.032, + "elapsed_seconds": 1.687, "kind": "rss-feed", "items_seen": 10 }, @@ -819,81 +819,81 @@ "system_id": "wordpress", "source_name": "Wordfence Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 0.032, + "elapsed_seconds": 0.024, "kind": "html-links", "items_seen": 0 } ], "failures": [], "slow_sources": [ - { - "system_id": "moodle", - "source_name": "OSV Moodle", - "source_kind": "osv-batch", - "elapsed_seconds": 5.195, - "status": "ok" - }, { "system_id": "mattermost", "source_name": "OSV Mattermost", "source_kind": "osv-batch", - "elapsed_seconds": 5.152, - "status": "ok" - }, - { - "system_id": "adminer", - "source_name": "OSV Adminer", - "source_kind": "osv-batch", - "elapsed_seconds": 4.871, - "status": "ok" - }, - { - "system_id": "django", - "source_name": "OSV Django", - "source_kind": "osv-batch", - "elapsed_seconds": 4.85, + "elapsed_seconds": 5.563, "status": "ok" }, { "system_id": "kibana", "source_name": "NVD Kibana", "source_kind": "nvd-search", - "elapsed_seconds": 4.836, + "elapsed_seconds": 5.353, "status": "ok" }, { "system_id": "phpmyadmin", "source_name": "OSV phpMyAdmin", "source_kind": "osv-batch", - "elapsed_seconds": 4.63, + "elapsed_seconds": 5.189, + "status": "ok" + }, + { + "system_id": "moodle", + "source_name": "OSV Moodle", + "source_kind": "osv-batch", + "elapsed_seconds": 5.03, "status": "ok" }, { "system_id": "gitea", "source_name": "OSV Gitea", "source_kind": "osv-batch", - "elapsed_seconds": 4.624, - "status": "ok" - }, - { - "system_id": "redmine", - "source_name": "OSV Redmine", - "source_kind": "osv-batch", - "elapsed_seconds": 4.474, + "elapsed_seconds": 4.833, "status": "ok" }, { "system_id": "traefik", "source_name": "OSV Traefik", "source_kind": "osv-batch", - "elapsed_seconds": 4.408, + "elapsed_seconds": 4.791, "status": "ok" }, { - "system_id": "symfony", - "source_name": "OSV Symfony", + "system_id": "adminer", + "source_name": "OSV Adminer", "source_kind": "osv-batch", - "elapsed_seconds": 4.249, + "elapsed_seconds": 4.767, + "status": "ok" + }, + { + "system_id": "redmine", + "source_name": "OSV Redmine", + "source_kind": "osv-batch", + "elapsed_seconds": 4.651, + "status": "ok" + }, + { + "system_id": "django", + "source_name": "OSV Django", + "source_kind": "osv-batch", + "elapsed_seconds": 4.634, + "status": "ok" + }, + { + "system_id": "caddy", + "source_name": "OSV Caddy", + "source_kind": "osv-batch", + "elapsed_seconds": 4.441, "status": "ok" } ], diff --git a/08-threat-intel/generated/dashboard/data/version-backlog.json b/08-threat-intel/generated/dashboard/data/version-backlog.json index b4a0f260..d339e2eb 100644 --- a/08-threat-intel/generated/dashboard/data/version-backlog.json +++ b/08-threat-intel/generated/dashboard/data/version-backlog.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-28T09:18:23+00:00", + "generated_at": "2026-03-29T10:50:55+00:00", "source_gap_entities": [ { "entity_id": "adminer", diff --git a/08-threat-intel/generated/dashboard/data/version-completeness.json b/08-threat-intel/generated/dashboard/data/version-completeness.json index 1c8c5546..00f39f4d 100644 --- a/08-threat-intel/generated/dashboard/data/version-completeness.json +++ b/08-threat-intel/generated/dashboard/data/version-completeness.json @@ -1,12 +1,12 @@ { - "generated_at": "2026-03-28T09:18:23+00:00", + "generated_at": "2026-03-29T10:50:55+00:00", "cataloged_entity_total": 110, "latest_version_synced_count": 95, "source_gap_count": 15, "security_version_total": 6314, "security_version_entity_count": 83, "auto_promoted_entity_count": 10, - "lab_enqueued_count": 2, + "lab_enqueued_count": 0, "systems": [ { "system_id": "adminer", diff --git a/08-threat-intel/generated/dashboard/docs/architecture-library.html b/08-threat-intel/generated/dashboard/docs/architecture-library.html index 14980cce..f3f9b4dd 100644 --- a/08-threat-intel/generated/dashboard/docs/architecture-library.html +++ b/08-threat-intel/generated/dashboard/docs/architecture-library.html @@ -87,7 +87,7 @@

当前架构库镜像

工作台内置镜像页:当前架构库结构化数据镜像。
{
-  "generated_at": "2026-03-28T09:18:24+00:00",
+  "generated_at": "2026-03-29T10:50:56+00:00",
   "title": "当前架构库",
   "summary": "工作台、控制面、数据层、授权边界与系统覆盖的当前真值视图。",
   "sections": [
@@ -145,7 +145,7 @@
         },
         {
           "label": "生成时间",
-          "value": "2026-03-28T09:18:24+00:00"
+          "value": "2026-03-29T10:50:56+00:00"
         }
       ],
       "links": [
diff --git a/08-threat-intel/generated/dashboard/docs/entity-catalog-report.html b/08-threat-intel/generated/dashboard/docs/entity-catalog-report.html
index 79cc4e80..c871e7ad 100644
--- a/08-threat-intel/generated/dashboard/docs/entity-catalog-report.html
+++ b/08-threat-intel/generated/dashboard/docs/entity-catalog-report.html
@@ -88,7 +88,7 @@
       
工作台内置镜像页:分层实体覆盖、history-full 完整度和 workflow 统计。
# 分层实体覆盖与完整度报告
 
-- 生成时间: `2026-03-28T09:18:23+00:00`
+- 生成时间: `2026-03-29T10:50:55+00:00`
 - 已编目实体: `110`
 - 待编目 backlog: `7`
 - history-full 已完成: `41`
diff --git a/08-threat-intel/generated/dashboard/docs/entity-discovery-backlog.html b/08-threat-intel/generated/dashboard/docs/entity-discovery-backlog.html
index 06f53439..c40e5312 100644
--- a/08-threat-intel/generated/dashboard/docs/entity-discovery-backlog.html
+++ b/08-threat-intel/generated/dashboard/docs/entity-discovery-backlog.html
@@ -88,7 +88,7 @@
       
工作台内置镜像页:待编目 repo / 插件 / 包 backlog 与等待原因。
# 分层实体发现 Backlog
 
-- 生成时间: `2026-03-28T09:18:23+00:00`
+- 生成时间: `2026-03-29T10:50:55+00:00`
 - 待编目数量: `7`
 
 | candidate_id | root_system | entity_type | risk | reason | waiting_for | source |
diff --git a/08-threat-intel/generated/dashboard/docs/source-catalog-audit.html b/08-threat-intel/generated/dashboard/docs/source-catalog-audit.html
index 3c0c354d..a1ddb5a6 100644
--- a/08-threat-intel/generated/dashboard/docs/source-catalog-audit.html
+++ b/08-threat-intel/generated/dashboard/docs/source-catalog-audit.html
@@ -88,7 +88,7 @@
       
工作台内置镜像页:active/retired source、replacement map 与覆盖摘要。
# Source Catalog Audit
 
-- generated_at: `2026-03-28T09:17:03+00:00`
+- generated_at: `2026-03-29T10:49:35+00:00`
 - systems: `62`
 - sources: `179`
 - active_sources: `102`
diff --git a/08-threat-intel/generated/dashboard/docs/testing-completeness-report.html b/08-threat-intel/generated/dashboard/docs/testing-completeness-report.html
index f1c45347..4b71747b 100644
--- a/08-threat-intel/generated/dashboard/docs/testing-completeness-report.html
+++ b/08-threat-intel/generated/dashboard/docs/testing-completeness-report.html
@@ -88,7 +88,7 @@
       
工作台内置镜像页:89 条 advisory 最新完整度、family 矩阵与 ingest 健康度。
# 全库 Advisory 完整度报告
 
-- 生成时间: `2026-03-28T09:18:24+00:00`
+- 生成时间: `2026-03-29T10:50:56+00:00`
 - 最新 advisory 完整度: `89/89` `verified-real`
 - 合成验证数量: `0`
 - 阻塞数量: `0`
@@ -96,7 +96,7 @@
 - 完整度百分比: `100.0%`
 - active source 全绿: `102/102`
 - source open alerts: `0`
-- 最近一次 source 全绿: `2026-03-28T09:18:08+00:00`
+- 最近一次 source 全绿: `2026-03-29T10:50:39+00:00`
 - 已编目实体: `110`
 - 待编目 backlog: `7`
 
diff --git a/08-threat-intel/generated/dashboard/docs/version-sync-report.html b/08-threat-intel/generated/dashboard/docs/version-sync-report.html
index 1cdd6848..20e78c4e 100644
--- a/08-threat-intel/generated/dashboard/docs/version-sync-report.html
+++ b/08-threat-intel/generated/dashboard/docs/version-sync-report.html
@@ -88,14 +88,14 @@
       
工作台内置镜像页:安全相关版本历史、source-gap 与版本驱动 lab enqueue 摘要。
# 安全相关版本同步报告
 
-- 生成时间: `2026-03-28T09:18:23+00:00`
+- 生成时间: `2026-03-29T10:50:55+00:00`
 - 已编目实体: `110`
 - 最新版本已同步: `95`
 - 版本 source-gap: `15`
 - 安全相关版本记录: `6314`
 - 存在安全版本历史的实体: `83`
 - 自动升级实体: `10`
-- 因版本变化触发 lab 入队: `2`
+- 因版本变化触发 lab 入队: `0`
 
 ## 系统版本摘要
 
diff --git a/08-threat-intel/generated/dashboard/entities.json b/08-threat-intel/generated/dashboard/entities.json
index b01b6da2..10b8ca2f 100644
--- a/08-threat-intel/generated/dashboard/entities.json
+++ b/08-threat-intel/generated/dashboard/entities.json
@@ -20,7 +20,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -79,7 +79,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -245,7 +245,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 18,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/angular/angular/security/advisories/GHSA-prjf-86w9-mfqv",
@@ -292,7 +292,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 18,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -354,7 +354,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 1,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Apache HTTPD Security"
     ],
@@ -560,7 +560,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Apache Tomcat Security"
     ],
@@ -763,7 +763,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -827,7 +827,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/withastro/astro/security/advisories/GHSA-wrwg-2hg8-v723",
@@ -887,7 +887,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 28,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/withastro/astro/security/advisories/GHSA-c4pw-33h3-35xw",
@@ -954,7 +954,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 32,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -1030,7 +1030,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/caddyserver/caddy/security/advisories/GHSA-5r3v-vc8m-m96g",
@@ -1080,7 +1080,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 5,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/caddyserver/caddy/security/advisories/GHSA-4xrr-hq4w-6vf4",
@@ -1133,7 +1133,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 7,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -1223,7 +1223,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 1,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Directus GitHub Advisories"
@@ -1276,7 +1276,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 1,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Directus GitHub Advisories"
     ],
@@ -1379,7 +1379,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 80,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Discourse Release Notes RSS",
       "Discourse Security RSS"
@@ -1496,7 +1496,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 160,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2019-11358"
@@ -1563,7 +1563,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 160,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Django Security Weblog",
       "Django Security Releases Archive"
@@ -1729,7 +1729,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 74,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Drupal Security Advisories RSS"
     ],
@@ -1870,7 +1870,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/labstack/echo/pull/1718",
@@ -1917,7 +1917,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -1971,7 +1971,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99"
@@ -2015,7 +2015,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2081,7 +2081,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2151,7 +2151,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/fastify/fastify/security/advisories/GHSA-573f-x89g-hqp9",
@@ -2197,7 +2197,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2259,7 +2259,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726"
@@ -2303,7 +2303,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2366,7 +2366,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Ghost GitHub Advisories"
@@ -2419,7 +2419,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Ghost GitHub Advisories"
     ],
@@ -2512,7 +2512,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://nvd.nist.gov/vuln/detail/CVE-2020-28483",
@@ -2557,7 +2557,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2607,7 +2607,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2679,7 +2679,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 627,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitLab Security Releases Atom"
     ],
@@ -2810,7 +2810,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2930,7 +2930,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://www.npmjs.com/advisories/1482"
@@ -2974,7 +2974,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3035,7 +3035,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "HAProxy Blog Feed"
     ],
@@ -3109,7 +3109,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3240,7 +3240,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 5,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Joomla Security Centre"
     ],
@@ -3407,7 +3407,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3530,7 +3530,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/koajs/koa/security/advisories/GHSA-7gcc-r8m5-44qm"
@@ -3574,7 +3574,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3635,7 +3635,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 103,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Packagist p2",
       "https://github.com/laravel/framework/security/advisories/GHSA-66hf-2p6w-jqfw"
@@ -3680,7 +3680,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 103,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3745,7 +3745,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Sansec Research"
@@ -3801,7 +3801,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Sansec Research"
     ],
@@ -3967,7 +3967,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 759,
-    "last_version_synced_at": "2026-03-28T09:18:13+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:44+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON",
       "https://securityupdates.mattermost.com/security_updates.json",
@@ -4018,7 +4018,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 756,
-    "last_version_synced_at": "2026-03-28T09:18:14+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON",
       "https://securityupdates.mattermost.com/security_updates.json",
@@ -4065,7 +4065,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 764,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON",
       "advisory-fixed-version",
@@ -4139,7 +4139,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 818,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://nvd.nist.gov/vuln/detail/CVE-2026-22545",
@@ -4212,7 +4212,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3097,
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON"
     ],
@@ -4329,7 +4329,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 254,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "MediaWiki Announce RSS"
     ],
@@ -4474,7 +4474,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4546,7 +4546,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4651,7 +4651,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4734,7 +4734,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 168,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vercel/next.js",
@@ -4831,7 +4831,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 168,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4962,7 +4962,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5137,7 +5137,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5209,7 +5209,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 11,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/nuxt/nuxt/security/advisories/GHSA-vf6r-87q4-2vjf",
@@ -5261,7 +5261,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 11,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5358,7 +5358,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "OpenCart Releases"
@@ -5412,7 +5412,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "OpenCart Releases"
     ],
@@ -5581,7 +5581,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub Releases API"
     ],
@@ -5631,7 +5631,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5725,7 +5725,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "phpMyAdmin Security Page"
     ],
@@ -5846,7 +5846,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 41,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "Packagist p2",
       "https://github.com/PrestaShop/PrestaShop/security/advisories/GHSA-35pf-37c6-jxjv",
@@ -5901,7 +5901,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 9,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Friends Of Presta Security",
@@ -5961,7 +5961,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 50,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub PrestaShop Advisories",
       "Friends Of Presta Security",
@@ -6167,7 +6167,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 102,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2007-5379",
@@ -6224,7 +6224,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 102,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -6334,7 +6334,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 12,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2018-6341"
@@ -6382,7 +6382,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 6,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/facebook/react",
@@ -6428,7 +6428,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 18,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -6516,7 +6516,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "Redmine Security Advisories"
     ],
@@ -6637,7 +6637,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "GitHub Saleor Advisories"
@@ -6690,7 +6690,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub Saleor Advisories"
     ],
@@ -6784,7 +6784,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Shopware Security Advisories"
@@ -6837,7 +6837,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [
       "Shopware Security Advisories"
     ],
@@ -6977,7 +6977,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:46+00:00",
     "latest_version_evidence": [
       "advisory-fixed-version",
       "https://github.com/JLLeitschuh/security-research/security/advisories/GHSA-cm59-pr5q-cw85"
@@ -7021,7 +7021,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7088,7 +7088,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:46+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7166,7 +7166,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 92,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "advisory-fixed-version",
       "https://nvd.nist.gov/vuln/detail/CVE-2026-22732"
@@ -7210,7 +7210,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 92,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:46+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7282,7 +7282,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Strapi GitHub Advisories"
@@ -7335,7 +7335,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "Strapi GitHub Advisories"
     ],
@@ -7424,7 +7424,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/sveltejs/kit/security/advisories/GHSA-88qp-p4qg-rqm6",
@@ -7471,7 +7471,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7534,7 +7534,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 220,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "Packagist p2",
       "https://github.com/symfony/symfony/security/advisories/GHSA-5pv8-ppvj-4h68"
@@ -7586,7 +7586,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 220,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7657,7 +7657,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 8,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/traefik/traefik/security/advisories/GHSA-wvvq-wgcr-9q48",
@@ -7722,7 +7722,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 62,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/traefik/traefik/security/advisories/GHSA-gxrv-wf35-62w9",
@@ -7800,7 +7800,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 70,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7907,7 +7907,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/nodejs/undici/security/advisories/GHSA-vrm6-8vpv-qv8q"
@@ -7965,7 +7965,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 21,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/nodejs/undici/security/advisories/GHSA-3cvr-822r-rqcc",
@@ -8031,7 +8031,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 25,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8115,7 +8115,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 8,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vitejs/vite/security/advisories/GHSA-jqfw-vq24-v9c3"
@@ -8162,7 +8162,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 12,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vitejs/vite/security/advisories/GHSA-64vr-g452-qvp3"
@@ -8211,7 +8211,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 23,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6",
@@ -8272,7 +8272,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 107,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2022-35204",
@@ -8336,7 +8336,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 150,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8446,7 +8446,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2024-9506"
@@ -8490,7 +8490,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8570,7 +8570,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8639,7 +8639,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x"
@@ -8683,7 +8683,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8752,7 +8752,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 5,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Patchstack Database",
@@ -8814,7 +8814,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 5,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "Woo Developer Advisories",
       "Patchstack Database"
@@ -9068,7 +9068,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 55,
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "latest_version_evidence": [
       "WPScan Vulnerability Database",
       "Patchstack Database",
diff --git a/08-threat-intel/generated/dashboard/summary.json b/08-threat-intel/generated/dashboard/summary.json
index bbe085a4..f51b8f04 100644
--- a/08-threat-intel/generated/dashboard/summary.json
+++ b/08-threat-intel/generated/dashboard/summary.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-28T09:18:24+00:00",
+  "generated_at": "2026-03-29T10:50:56+00:00",
   "advisory_count": 2424,
   "run_count": 140,
   "statuses": {
@@ -158,10 +158,10 @@
     "green_source_count": 102,
     "source_failure_count": 0,
     "open_alert_count": 0,
-    "last_fully_green_run": "2026-03-28T09:18:08+00:00"
+    "last_fully_green_run": "2026-03-29T10:50:39+00:00"
   },
   "entity_coverage": {
-    "generated_at": "2026-03-28T09:18:23+00:00",
+    "generated_at": "2026-03-29T10:50:55+00:00",
     "cataloged_entity_total": 110,
     "candidate_entity_total": 7,
     "history_full_complete_count": 41,
@@ -1935,14 +1935,14 @@
     }
   },
   "version_coverage": {
-    "generated_at": "2026-03-28T09:18:23+00:00",
+    "generated_at": "2026-03-29T10:50:55+00:00",
     "cataloged_entity_total": 110,
     "latest_version_synced_count": 95,
     "source_gap_count": 15,
     "security_version_total": 6314,
     "security_version_entity_count": 83,
     "auto_promoted_entity_count": 10,
-    "lab_enqueued_count": 2,
+    "lab_enqueued_count": 0,
     "systems": [
       {
         "system_id": "adminer",
@@ -3443,7 +3443,7 @@
         "system": 1
       },
       "latest_version": "28.1.5",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 54
     },
@@ -3552,7 +3552,7 @@
         "system": 1
       },
       "latest_version": "11.0-doc",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -3649,7 +3649,7 @@
         "system": 1
       },
       "latest_version": "2.4.x",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 1
     },
@@ -3794,7 +3794,7 @@
         "repo": 1
       },
       "latest_version": "8.2.5",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 59
     },
@@ -3895,7 +3895,7 @@
         "repo": 1
       },
       "latest_version": "10.6.1",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 10
     },
@@ -3971,7 +3971,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -4044,7 +4044,7 @@
         "system": 1
       },
       "latest_version": "1017-20260102-core-xss-vector-in-the-pagebreak-plugin.html",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 5
     },
@@ -4175,7 +4175,7 @@
         "repo": 1
       },
       "latest_version": "3.0.5.0",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -4300,7 +4300,7 @@
         "repo": 1
       },
       "latest_version": "2.4.9-beta1",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 6
     },
@@ -4401,7 +4401,7 @@
         "project": 1
       },
       "latest_version": "1.0.0",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 182
     },
@@ -4465,7 +4465,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -4596,7 +4596,7 @@
         "repo": 1
       },
       "latest_version": "6.7.8.2",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -4669,7 +4669,7 @@
         "system": 1
       },
       "latest_version": "11.2.8",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 74
     },
@@ -4742,7 +4742,7 @@
         "system": 1
       },
       "latest_version": "28-10-2025",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 252
     },
@@ -4887,7 +4887,7 @@
         "project": 1
       },
       "latest_version": "16.2.1",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 168
     },
@@ -4951,7 +4951,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5015,7 +5015,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5094,7 +5094,7 @@
         "system": 1
       },
       "latest_version": "2026-4363---incorrect-authorization-issue-in-authorization-caching-impacts-gitlab-ee",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 625
     },
@@ -5196,7 +5196,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5269,7 +5269,7 @@
         "system": 1
       },
       "latest_version": "5.2.3-all-languages.zip",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -5342,7 +5342,7 @@
         "system": 1
       },
       "latest_version": "6.1.2",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -5406,7 +5406,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5545,7 +5545,7 @@
         "extension": 1
       },
       "latest_version": "3.7.0-ea.3",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 70
     },
@@ -5646,7 +5646,7 @@
         "project": 1
       },
       "latest_version": "4.1.0-beta",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 102
     },
@@ -5845,7 +5845,7 @@
         "extension": 1
       },
       "latest_version": "8.0.3",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 150
     },
@@ -5909,7 +5909,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -6086,7 +6086,7 @@
         "plugin": 1
       },
       "latest_version": "26.2.1",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 3848
     },
@@ -6159,7 +6159,7 @@
         "system": 1
       },
       "latest_version": "2502-05-2023-143713-1.zip",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 80
     },
@@ -6298,7 +6298,7 @@
         "extension": 1
       },
       "latest_version": "2.11.2",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 7
     },
@@ -6417,7 +6417,7 @@
         "repo": 1
       },
       "latest_version": "11.17.0",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -6538,7 +6538,7 @@
         "project": 1
       },
       "latest_version": "4.4.2",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 11
     },
@@ -6645,7 +6645,7 @@
         "repo": 1
       },
       "latest_version": "20.16.0",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -6752,7 +6752,7 @@
         "repo": 1
       },
       "latest_version": "5.40.0",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -6865,7 +6865,7 @@
         "repo": 1
       },
       "latest_version": "3.22.44",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -6966,7 +6966,7 @@
         "repo": 1
       },
       "latest_version": "6.24.0",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -7099,7 +7099,7 @@
         "extension": 1
       },
       "latest_version": "7.24.6",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 25
     },
@@ -7238,7 +7238,7 @@
         "project": 2
       },
       "latest_version": "19.2.4",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 18
     },
@@ -7395,7 +7395,7 @@
         "project": 1
       },
       "latest_version": "6.1.1",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 32
     },
@@ -7473,7 +7473,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -7588,7 +7588,7 @@
         "project": 1
       },
       "latest_version": "3.5.31",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -7664,7 +7664,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:46+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -7765,7 +7765,7 @@
         "package": 1
       },
       "latest_version": "8.0.7",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 220
     },
@@ -7829,7 +7829,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -7902,7 +7902,7 @@
         "system": 1
       },
       "latest_version": "2.0",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -8009,7 +8009,7 @@
         "project": 1
       },
       "latest_version": "7.0.4",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:46+00:00",
       "version_sync_status": "green",
       "security_version_count": 92
     },
@@ -8073,7 +8073,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -8174,7 +8174,7 @@
         "package": 1
       },
       "latest_version": "2.55.0",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -8238,7 +8238,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -8339,7 +8339,7 @@
         "package": 1
       },
       "latest_version": "21.2.6",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 18
     },
@@ -8446,7 +8446,7 @@
         "repo": 1
       },
       "latest_version": "5.0.4",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -8547,7 +8547,7 @@
         "project": 1
       },
       "latest_version": "5.8.4",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -8648,7 +8648,7 @@
         "package": 1
       },
       "latest_version": "13.2.0",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 103
     },
@@ -8712,7 +8712,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -8819,7 +8819,7 @@
         "project": 1
       },
       "latest_version": "2.2.11.RELEASE",
-      "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:45+00:00",
       "version_sync_status": "green",
       "security_version_count": 22
     },
@@ -8920,7 +8920,7 @@
         "project": 1
       },
       "latest_version": "0.27.4",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -8984,7 +8984,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -9085,7 +9085,7 @@
         "project": 1
       },
       "latest_version": "0.2.10",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 22
     },
@@ -9186,7 +9186,7 @@
         "repo": 1
       },
       "latest_version": "1.12.0",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -9287,7 +9287,7 @@
         "package": 1
       },
       "latest_version": "21.4.7",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -9388,7 +9388,7 @@
         "project": 1
       },
       "latest_version": "3.2.0",
-      "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:43+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -9452,7 +9452,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -9553,7 +9553,7 @@
         "project": 1
       },
       "latest_version": "0.0.15",
-      "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+      "last_version_synced_at": "2026-03-29T10:50:47+00:00",
       "version_sync_status": "green",
       "security_version_count": 22
     }
@@ -9576,6 +9576,6 @@
     "latest_version_synced_count": 95,
     "version_source_gap_count": 15,
     "security_version_total": 6314,
-    "lab_enqueued_count": 2
+    "lab_enqueued_count": 0
   }
 }
diff --git a/08-threat-intel/generated/dashboard/systems.json b/08-threat-intel/generated/dashboard/systems.json
index 9facdc02..9e6e2f9a 100644
--- a/08-threat-intel/generated/dashboard/systems.json
+++ b/08-threat-intel/generated/dashboard/systems.json
@@ -68,7 +68,7 @@
       "system": 1
     },
     "latest_version": "28.1.5",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 54
   },
@@ -177,7 +177,7 @@
       "system": 1
     },
     "latest_version": "11.0-doc",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -274,7 +274,7 @@
       "system": 1
     },
     "latest_version": "2.4.x",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 1
   },
@@ -419,7 +419,7 @@
       "repo": 1
     },
     "latest_version": "8.2.5",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 59
   },
@@ -520,7 +520,7 @@
       "repo": 1
     },
     "latest_version": "10.6.1",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 10
   },
@@ -596,7 +596,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -669,7 +669,7 @@
       "system": 1
     },
     "latest_version": "1017-20260102-core-xss-vector-in-the-pagebreak-plugin.html",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 5
   },
@@ -800,7 +800,7 @@
       "repo": 1
     },
     "latest_version": "3.0.5.0",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -925,7 +925,7 @@
       "repo": 1
     },
     "latest_version": "2.4.9-beta1",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 6
   },
@@ -1026,7 +1026,7 @@
       "project": 1
     },
     "latest_version": "1.0.0",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 182
   },
@@ -1090,7 +1090,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1221,7 +1221,7 @@
       "repo": 1
     },
     "latest_version": "6.7.8.2",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -1294,7 +1294,7 @@
       "system": 1
     },
     "latest_version": "11.2.8",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 74
   },
@@ -1367,7 +1367,7 @@
       "system": 1
     },
     "latest_version": "28-10-2025",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 252
   },
@@ -1512,7 +1512,7 @@
       "project": 1
     },
     "latest_version": "16.2.1",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 168
   },
@@ -1576,7 +1576,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1640,7 +1640,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1719,7 +1719,7 @@
       "system": 1
     },
     "latest_version": "2026-4363---incorrect-authorization-issue-in-authorization-caching-impacts-gitlab-ee",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 625
   },
@@ -1821,7 +1821,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1894,7 +1894,7 @@
       "system": 1
     },
     "latest_version": "5.2.3-all-languages.zip",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -1967,7 +1967,7 @@
       "system": 1
     },
     "latest_version": "6.1.2",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -2031,7 +2031,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -2170,7 +2170,7 @@
       "extension": 1
     },
     "latest_version": "3.7.0-ea.3",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 70
   },
@@ -2271,7 +2271,7 @@
       "project": 1
     },
     "latest_version": "4.1.0-beta",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 102
   },
@@ -2470,7 +2470,7 @@
       "extension": 1
     },
     "latest_version": "8.0.3",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 150
   },
@@ -2534,7 +2534,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -2711,7 +2711,7 @@
       "plugin": 1
     },
     "latest_version": "26.2.1",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 3848
   },
@@ -2784,7 +2784,7 @@
       "system": 1
     },
     "latest_version": "2502-05-2023-143713-1.zip",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 80
   },
@@ -2923,7 +2923,7 @@
       "extension": 1
     },
     "latest_version": "2.11.2",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 7
   },
@@ -3042,7 +3042,7 @@
       "repo": 1
     },
     "latest_version": "11.17.0",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -3163,7 +3163,7 @@
       "project": 1
     },
     "latest_version": "4.4.2",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 11
   },
@@ -3270,7 +3270,7 @@
       "repo": 1
     },
     "latest_version": "20.16.0",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3377,7 +3377,7 @@
       "repo": 1
     },
     "latest_version": "5.40.0",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3490,7 +3490,7 @@
       "repo": 1
     },
     "latest_version": "3.22.44",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3591,7 +3591,7 @@
       "repo": 1
     },
     "latest_version": "6.24.0",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3724,7 +3724,7 @@
       "extension": 1
     },
     "latest_version": "7.24.6",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 25
   },
@@ -3863,7 +3863,7 @@
       "project": 2
     },
     "latest_version": "19.2.4",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 18
   },
@@ -4020,7 +4020,7 @@
       "project": 1
     },
     "latest_version": "6.1.1",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 32
   },
@@ -4098,7 +4098,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4213,7 +4213,7 @@
       "project": 1
     },
     "latest_version": "3.5.31",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -4289,7 +4289,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:46+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4390,7 +4390,7 @@
       "package": 1
     },
     "latest_version": "8.0.7",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 220
   },
@@ -4454,7 +4454,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4527,7 +4527,7 @@
       "system": 1
     },
     "latest_version": "2.0",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -4634,7 +4634,7 @@
       "project": 1
     },
     "latest_version": "7.0.4",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:46+00:00",
     "version_sync_status": "green",
     "security_version_count": 92
   },
@@ -4698,7 +4698,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4799,7 +4799,7 @@
       "package": 1
     },
     "latest_version": "2.55.0",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -4863,7 +4863,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4964,7 +4964,7 @@
       "package": 1
     },
     "latest_version": "21.2.6",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 18
   },
@@ -5071,7 +5071,7 @@
       "repo": 1
     },
     "latest_version": "5.0.4",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -5172,7 +5172,7 @@
       "project": 1
     },
     "latest_version": "5.8.4",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -5273,7 +5273,7 @@
       "package": 1
     },
     "latest_version": "13.2.0",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 103
   },
@@ -5337,7 +5337,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -5444,7 +5444,7 @@
       "project": 1
     },
     "latest_version": "2.2.11.RELEASE",
-    "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:45+00:00",
     "version_sync_status": "green",
     "security_version_count": 22
   },
@@ -5545,7 +5545,7 @@
       "project": 1
     },
     "latest_version": "0.27.4",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -5609,7 +5609,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -5710,7 +5710,7 @@
       "project": 1
     },
     "latest_version": "0.2.10",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 22
   },
@@ -5811,7 +5811,7 @@
       "repo": 1
     },
     "latest_version": "1.12.0",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -5912,7 +5912,7 @@
       "package": 1
     },
     "latest_version": "21.4.7",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -6013,7 +6013,7 @@
       "project": 1
     },
     "latest_version": "3.2.0",
-    "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:43+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -6077,7 +6077,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -6178,7 +6178,7 @@
       "project": 1
     },
     "latest_version": "0.0.15",
-    "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+    "last_version_synced_at": "2026-03-29T10:50:47+00:00",
     "version_sync_status": "green",
     "security_version_count": 22
   }
diff --git a/08-threat-intel/generated/entity-catalog-report.md b/08-threat-intel/generated/entity-catalog-report.md
index 71f5aac5..bdcd4c95 100644
--- a/08-threat-intel/generated/entity-catalog-report.md
+++ b/08-threat-intel/generated/entity-catalog-report.md
@@ -1,6 +1,6 @@
 # 分层实体覆盖与完整度报告
 
-- 生成时间: `2026-03-28T09:18:23+00:00`
+- 生成时间: `2026-03-29T10:50:55+00:00`
 - 已编目实体: `110`
 - 待编目 backlog: `7`
 - history-full 已完成: `41`
diff --git a/08-threat-intel/generated/entity-completeness.json b/08-threat-intel/generated/entity-completeness.json
index 64437168..cfad60d9 100644
--- a/08-threat-intel/generated/entity-completeness.json
+++ b/08-threat-intel/generated/entity-completeness.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-28T09:18:23+00:00",
+  "generated_at": "2026-03-29T10:50:55+00:00",
   "cataloged_entity_total": 110,
   "candidate_entity_total": 7,
   "history_full_complete_count": 41,
diff --git a/08-threat-intel/generated/entity-discovery-backlog.md b/08-threat-intel/generated/entity-discovery-backlog.md
index dee5304c..be557336 100644
--- a/08-threat-intel/generated/entity-discovery-backlog.md
+++ b/08-threat-intel/generated/entity-discovery-backlog.md
@@ -1,6 +1,6 @@
 # 分层实体发现 Backlog
 
-- 生成时间: `2026-03-28T09:18:23+00:00`
+- 生成时间: `2026-03-29T10:50:55+00:00`
 - 待编目数量: `7`
 
 | candidate_id | root_system | entity_type | risk | reason | waiting_for | source |
diff --git a/08-threat-intel/generated/entity-queues.json b/08-threat-intel/generated/entity-queues.json
index 4ddd3f5c..5615d552 100644
--- a/08-threat-intel/generated/entity-queues.json
+++ b/08-threat-intel/generated/entity-queues.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-28T09:18:23+00:00",
+  "generated_at": "2026-03-29T10:50:55+00:00",
   "discovery_queue": {
     "count": 7,
     "items": [
diff --git a/08-threat-intel/generated/lab-enqueue-summary.json b/08-threat-intel/generated/lab-enqueue-summary.json
index 41bddfd6..0a052f15 100644
--- a/08-threat-intel/generated/lab-enqueue-summary.json
+++ b/08-threat-intel/generated/lab-enqueue-summary.json
@@ -1,6 +1,6 @@
 {
-  "generated_at": "2026-03-28T09:18:16+00:00",
-  "enqueued": 2,
+  "generated_at": "2026-03-29T10:50:47+00:00",
+  "enqueued": 0,
   "queue_total": 2380,
   "items": [
     {
@@ -2758,16 +2758,6 @@
       "system_id": "strapi",
       "priority": "version-sync"
     },
-    {
-      "advisory_id": "traefik--CVE-2026-32695",
-      "system_id": "traefik",
-      "priority": "version-sync"
-    },
-    {
-      "advisory_id": "traefik--CVE-2026-33433",
-      "system_id": "traefik",
-      "priority": "version-sync"
-    },
     {
       "advisory_id": "woocommerce--05da41121f",
       "system_id": "woocommerce",
diff --git a/08-threat-intel/generated/latest-ingest.md b/08-threat-intel/generated/latest-ingest.md
index 8ecc6219..78628039 100644
--- a/08-threat-intel/generated/latest-ingest.md
+++ b/08-threat-intel/generated/latest-ingest.md
@@ -1,13 +1,13 @@
 # 最新同步摘要
 
-- 渲染时间: `2026-03-28T09:18:23+00:00`
+- 渲染时间: `2026-03-29T10:50:55+00:00`
 - 系统数量: `62`
 - Advisory 数量: `2380`
 - 已编目实体数量: `110`
 - 待编目 backlog 数量: `7`
 - 重点 Markdown 数量: `174`
 - Run Bundle 数量: `89`
-- 新增记录: `2`
-- 更新记录: `2`
+- 新增记录: `0`
+- 更新记录: `0`
 - Triage 数量: `1177`
 - 失败的 source adapter: `0`
diff --git a/08-threat-intel/generated/monitor-summary.json b/08-threat-intel/generated/monitor-summary.json
index da302333..2410c8fa 100644
--- a/08-threat-intel/generated/monitor-summary.json
+++ b/08-threat-intel/generated/monitor-summary.json
@@ -1,24 +1,21 @@
 {
-  "generated_at": "2026-03-28T09:18:08+00:00",
+  "generated_at": "2026-03-29T10:50:39+00:00",
   "active_source_count": 102,
   "green_source_count": 102,
   "source_failure_count": 0,
   "open_alert_count": 0,
   "resolved_alert_count": 101,
-  "last_fully_green_run": "2026-03-28T09:18:08+00:00",
+  "last_fully_green_run": "2026-03-29T10:50:39+00:00",
   "source_catalog": {
     "system_count": 62,
     "source_count": 179,
     "retired_source_count": 77
   },
   "ingest": {
-    "new_count": 2,
-    "updated_count": 2,
+    "new_count": 0,
+    "updated_count": 0,
     "failure_count": 0,
-    "systems_touched": [
-      "prestashop",
-      "traefik"
-    ]
+    "systems_touched": []
   },
   "validation": {
     "passed": true,
@@ -40,10 +37,10 @@
     "security_version_total": 6314,
     "security_version_entity_count": 83,
     "auto_promoted_entity_count": 10,
-    "lab_enqueued_count": 2
+    "lab_enqueued_count": 0
   },
   "lab_enqueue": {
-    "enqueued": 2,
+    "enqueued": 0,
     "queue_total": 2380,
     "pending_count": 0
   }
diff --git a/08-threat-intel/generated/release-index.json b/08-threat-intel/generated/release-index.json
index 07618304..27eb8bd7 100644
--- a/08-threat-intel/generated/release-index.json
+++ b/08-threat-intel/generated/release-index.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-28T09:18:23+00:00",
+  "generated_at": "2026-03-29T10:50:55+00:00",
   "version_count": 6314,
   "versions": [
     {
diff --git a/08-threat-intel/generated/run-summary.json b/08-threat-intel/generated/run-summary.json
index c8df380b..6ef83190 100644
--- a/08-threat-intel/generated/run-summary.json
+++ b/08-threat-intel/generated/run-summary.json
@@ -1,16 +1,13 @@
 {
-  "generated_at": "2026-03-28T09:18:23+00:00",
+  "generated_at": "2026-03-29T10:50:55+00:00",
   "system_count": 62,
   "advisory_count": 2380,
   "cataloged_entity_total": 110,
   "candidate_entity_total": 7,
   "markdown_count": 174,
-  "new_count": 2,
-  "updated_count": 2,
-  "systems_touched": [
-    "prestashop",
-    "traefik"
-  ],
+  "new_count": 0,
+  "updated_count": 0,
+  "systems_touched": [],
   "triage_count": 1177,
   "run_bundle_count": 89,
   "failures": []
diff --git a/08-threat-intel/generated/source-catalog-audit.json b/08-threat-intel/generated/source-catalog-audit.json
index 81e76568..94462be1 100644
--- a/08-threat-intel/generated/source-catalog-audit.json
+++ b/08-threat-intel/generated/source-catalog-audit.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-28T09:17:03+00:00",
+  "generated_at": "2026-03-29T10:49:35+00:00",
   "system_count": 62,
   "source_count": 179,
   "active_source_count": 102,
diff --git a/08-threat-intel/generated/source-catalog-audit.md b/08-threat-intel/generated/source-catalog-audit.md
index 85f5663b..79ee7df9 100644
--- a/08-threat-intel/generated/source-catalog-audit.md
+++ b/08-threat-intel/generated/source-catalog-audit.md
@@ -1,6 +1,6 @@
 # Source Catalog Audit
 
-- generated_at: `2026-03-28T09:17:03+00:00`
+- generated_at: `2026-03-29T10:49:35+00:00`
 - systems: `62`
 - sources: `179`
 - active_sources: `102`
diff --git a/08-threat-intel/generated/source-health.json b/08-threat-intel/generated/source-health.json
index f34bbcb5..28908183 100644
--- a/08-threat-intel/generated/source-health.json
+++ b/08-threat-intel/generated/source-health.json
@@ -1,17 +1,17 @@
 {
-  "generated_at": "2026-03-28T09:18:08+00:00",
+  "generated_at": "2026-03-29T10:50:39+00:00",
   "active_source_count": 102,
   "green_source_count": 102,
   "failure_count": 0,
   "all_green": true,
-  "last_fully_green_run": "2026-03-28T09:18:08+00:00",
+  "last_fully_green_run": "2026-03-29T10:50:39+00:00",
   "retries_performed": 0,
   "probes": [
     {
       "system_id": "adminer",
       "source_name": "OSV Adminer",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.871,
+      "elapsed_seconds": 4.767,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -19,7 +19,7 @@
       "system_id": "adobe-commerce",
       "source_name": "Adobe Magento Security Index",
       "source_kind": "vendor-index",
-      "elapsed_seconds": 0.024,
+      "elapsed_seconds": 0.017,
       "kind": "vendor-index",
       "items_seen": 46
     },
@@ -27,7 +27,7 @@
       "system_id": "angular",
       "source_name": "OSV Angular",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.685,
+      "elapsed_seconds": 2.665,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -35,7 +35,7 @@
       "system_id": "apache-httpd",
       "source_name": "Apache HTTPD Security",
       "source_kind": "html-links",
-      "elapsed_seconds": 2.902,
+      "elapsed_seconds": 2.872,
       "kind": "html-links",
       "items_seen": 182
     },
@@ -43,7 +43,7 @@
       "system_id": "apache-httpd",
       "source_name": "CISA KEV Apache HTTPD",
       "source_kind": "kev-json",
-      "elapsed_seconds": 3.239,
+      "elapsed_seconds": 4.032,
       "kind": "kev-json",
       "items_seen": 1554
     },
@@ -51,7 +51,7 @@
       "system_id": "apache-tomcat",
       "source_name": "Apache Tomcat Security",
       "source_kind": "html-links",
-      "elapsed_seconds": 2.91,
+      "elapsed_seconds": 2.892,
       "kind": "html-links",
       "items_seen": 270
     },
@@ -59,7 +59,7 @@
       "system_id": "apache-tomcat",
       "source_name": "CISA KEV Tomcat",
       "source_kind": "kev-json",
-      "elapsed_seconds": 3.239,
+      "elapsed_seconds": 4.032,
       "kind": "kev-json",
       "items_seen": 1554
     },
@@ -67,7 +67,7 @@
       "system_id": "aspnet-core",
       "source_name": "OSV ASP.NET Core",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.896,
+      "elapsed_seconds": 3.695,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -75,7 +75,7 @@
       "system_id": "astro",
       "source_name": "OSV Astro",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.729,
+      "elapsed_seconds": 2.634,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -83,7 +83,7 @@
       "system_id": "caddy",
       "source_name": "OSV Caddy",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.159,
+      "elapsed_seconds": 4.441,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -91,7 +91,7 @@
       "system_id": "directus",
       "source_name": "Directus GitHub Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.027,
+      "elapsed_seconds": 0.021,
       "kind": "html-links",
       "items_seen": 127
     },
@@ -99,7 +99,7 @@
       "system_id": "directus",
       "source_name": "OSV Directus",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.618,
+      "elapsed_seconds": 1.736,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -107,7 +107,7 @@
       "system_id": "discourse",
       "source_name": "Discourse Release Notes RSS",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 0.025,
+      "elapsed_seconds": 0.017,
       "kind": "rss-feed",
       "items_seen": 30
     },
@@ -115,7 +115,7 @@
       "system_id": "discourse",
       "source_name": "Discourse Security RSS",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 0.024,
+      "elapsed_seconds": 0.017,
       "kind": "rss-feed",
       "items_seen": 3
     },
@@ -123,7 +123,7 @@
       "system_id": "discourse",
       "source_name": "OSV Discourse",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.564,
+      "elapsed_seconds": 1.509,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -131,7 +131,7 @@
       "system_id": "django",
       "source_name": "Django Security Releases Archive",
       "source_kind": "vendor-index",
-      "elapsed_seconds": 2.682,
+      "elapsed_seconds": 2.61,
       "kind": "vendor-index",
       "items_seen": 1276
     },
@@ -139,7 +139,7 @@
       "system_id": "django",
       "source_name": "Django Security Weblog",
       "source_kind": "vendor-index",
-      "elapsed_seconds": 2.682,
+      "elapsed_seconds": 2.599,
       "kind": "vendor-index",
       "items_seen": 332
     },
@@ -147,7 +147,7 @@
       "system_id": "django",
       "source_name": "OSV Django",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.85,
+      "elapsed_seconds": 4.634,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -155,7 +155,7 @@
       "system_id": "drupal",
       "source_name": "Drupal Security Advisories RSS",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 1.184,
       "kind": "rss-feed",
       "items_seen": 20
     },
@@ -163,7 +163,7 @@
       "system_id": "drupal",
       "source_name": "OSV Drupal",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.52,
+      "elapsed_seconds": 2.424,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -171,7 +171,7 @@
       "system_id": "echo",
       "source_name": "OSV Echo",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.121,
+      "elapsed_seconds": 3.917,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -179,7 +179,7 @@
       "system_id": "esbuild",
       "source_name": "OSV esbuild",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.165,
+      "elapsed_seconds": 3.596,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -187,7 +187,7 @@
       "system_id": "express",
       "source_name": "OSV Express",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.818,
+      "elapsed_seconds": 2.685,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -195,7 +195,7 @@
       "system_id": "fastify",
       "source_name": "OSV Fastify",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.857,
+      "elapsed_seconds": 2.872,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -203,7 +203,7 @@
       "system_id": "flask",
       "source_name": "OSV Flask",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.84,
+      "elapsed_seconds": 3.695,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -211,7 +211,7 @@
       "system_id": "ghost",
       "source_name": "Ghost GitHub Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 1.148,
       "kind": "html-links",
       "items_seen": 119
     },
@@ -219,7 +219,7 @@
       "system_id": "ghost",
       "source_name": "OSV Ghost",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.035,
+      "elapsed_seconds": 1.516,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -227,7 +227,7 @@
       "system_id": "gin",
       "source_name": "OSV Gin",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.065,
+      "elapsed_seconds": 3.695,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -235,7 +235,7 @@
       "system_id": "gitea",
       "source_name": "OSV Gitea",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.624,
+      "elapsed_seconds": 4.833,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -243,7 +243,7 @@
       "system_id": "gitlab-ce",
       "source_name": "GitLab Advisory Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 3.267,
+      "elapsed_seconds": 3.69,
       "kind": "html-links",
       "items_seen": 5
     },
@@ -251,7 +251,7 @@
       "system_id": "gitlab-ce",
       "source_name": "GitLab Security Releases Atom",
       "source_kind": "atom-feed",
-      "elapsed_seconds": 3.267,
+      "elapsed_seconds": 3.69,
       "kind": "atom-feed",
       "items_seen": 187
     },
@@ -259,7 +259,7 @@
       "system_id": "grafana",
       "source_name": "CISA KEV Grafana",
       "source_kind": "kev-json",
-      "elapsed_seconds": 3.267,
+      "elapsed_seconds": 4.032,
       "kind": "kev-json",
       "items_seen": 1554
     },
@@ -267,7 +267,7 @@
       "system_id": "grafana",
       "source_name": "Grafana Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 3.267,
+      "elapsed_seconds": 3.69,
       "kind": "html-links",
       "items_seen": 159
     },
@@ -275,7 +275,7 @@
       "system_id": "hapi",
       "source_name": "OSV Hapi",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.902,
+      "elapsed_seconds": 2.872,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -283,7 +283,7 @@
       "system_id": "haproxy",
       "source_name": "HAProxy Blog Feed",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 3.239,
+      "elapsed_seconds": 3.596,
       "kind": "rss-feed",
       "items_seen": 10
     },
@@ -291,7 +291,7 @@
       "system_id": "jenkins",
       "source_name": "Jenkins Security Advisories RSS",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 3.267,
+      "elapsed_seconds": 3.69,
       "kind": "rss-feed",
       "items_seen": 96
     },
@@ -299,7 +299,7 @@
       "system_id": "joomla",
       "source_name": "Joomla Security Centre",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 2.227,
       "kind": "html-links",
       "items_seen": 139
     },
@@ -307,7 +307,7 @@
       "system_id": "joomla",
       "source_name": "OSV Joomla",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.814,
+      "elapsed_seconds": 1.514,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -315,7 +315,7 @@
       "system_id": "kibana",
       "source_name": "Elastic Product Security",
       "source_kind": "html-links",
-      "elapsed_seconds": 3.267,
+      "elapsed_seconds": 3.695,
       "kind": "html-links",
       "items_seen": 66
     },
@@ -323,7 +323,7 @@
       "system_id": "kibana",
       "source_name": "NVD Kibana",
       "source_kind": "nvd-search",
-      "elapsed_seconds": 4.836,
+      "elapsed_seconds": 5.353,
       "kind": "nvd-search",
       "items_seen": 1
     },
@@ -331,7 +331,7 @@
       "system_id": "koa",
       "source_name": "OSV Koa",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.91,
+      "elapsed_seconds": 2.892,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -339,7 +339,7 @@
       "system_id": "laravel",
       "source_name": "OSV Laravel",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.539,
+      "elapsed_seconds": 3.918,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -347,7 +347,7 @@
       "system_id": "magento-open-source",
       "source_name": "Magento GitHub Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.024,
+      "elapsed_seconds": 0.01,
       "kind": "html-links",
       "items_seen": 99
     },
@@ -355,7 +355,7 @@
       "system_id": "magento-open-source",
       "source_name": "OSV Magento Open Source",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.175,
+      "elapsed_seconds": 1.567,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -363,7 +363,7 @@
       "system_id": "magento-open-source",
       "source_name": "Sansec Research",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.016,
+      "elapsed_seconds": 0.01,
       "kind": "html-links",
       "items_seen": 135
     },
@@ -371,7 +371,7 @@
       "system_id": "mattermost",
       "source_name": "Mattermost Security Updates JSON",
       "source_kind": "json-feed",
-      "elapsed_seconds": 3.269,
+      "elapsed_seconds": 3.695,
       "kind": "json-feed",
       "items_seen": 594
     },
@@ -379,7 +379,7 @@
       "system_id": "mattermost",
       "source_name": "OSV Mattermost",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 5.152,
+      "elapsed_seconds": 5.563,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -387,7 +387,7 @@
       "system_id": "mediawiki",
       "source_name": "MediaWiki Announce RSS",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 0.026,
+      "elapsed_seconds": 0.02,
       "kind": "rss-feed",
       "items_seen": 30
     },
@@ -395,7 +395,7 @@
       "system_id": "mediawiki",
       "source_name": "OSV MediaWiki",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.704,
+      "elapsed_seconds": 1.658,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -403,7 +403,7 @@
       "system_id": "medusa",
       "source_name": "OSV Medusa",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.536,
+      "elapsed_seconds": 2.546,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -411,7 +411,7 @@
       "system_id": "moodle",
       "source_name": "OSV Moodle",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 5.195,
+      "elapsed_seconds": 5.03,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -419,7 +419,7 @@
       "system_id": "nestjs",
       "source_name": "OSV NestJS",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.88,
+      "elapsed_seconds": 2.672,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -427,7 +427,7 @@
       "system_id": "nextjs",
       "source_name": "OSV Next.js",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.586,
+      "elapsed_seconds": 2.599,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -435,7 +435,7 @@
       "system_id": "nginx",
       "source_name": "CISA KEV NGINX",
       "source_kind": "kev-json",
-      "elapsed_seconds": 3.24,
+      "elapsed_seconds": 4.037,
       "kind": "kev-json",
       "items_seen": 1554
     },
@@ -443,7 +443,7 @@
       "system_id": "nginx",
       "source_name": "NGINX Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 2.88,
+      "elapsed_seconds": 2.872,
       "kind": "html-links",
       "items_seen": 150
     },
@@ -451,7 +451,7 @@
       "system_id": "nodejs",
       "source_name": "CISA KEV Node.js",
       "source_kind": "kev-json",
-      "elapsed_seconds": 3.267,
+      "elapsed_seconds": 4.032,
       "kind": "kev-json",
       "items_seen": 1554
     },
@@ -459,7 +459,7 @@
       "system_id": "nodejs",
       "source_name": "Node.js Security Releases",
       "source_kind": "html-links",
-      "elapsed_seconds": 1.785,
+      "elapsed_seconds": 1.835,
       "kind": "html-links",
       "items_seen": 74
     },
@@ -467,7 +467,7 @@
       "system_id": "nuxt",
       "source_name": "OSV Nuxt",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.685,
+      "elapsed_seconds": 2.546,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -475,7 +475,7 @@
       "system_id": "opencart",
       "source_name": "OSV OpenCart",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.582,
+      "elapsed_seconds": 2.422,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -483,7 +483,7 @@
       "system_id": "opencart",
       "source_name": "OpenCart Releases",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.003,
+      "elapsed_seconds": 1.126,
       "kind": "html-links",
       "items_seen": 1500
     },
@@ -491,7 +491,7 @@
       "system_id": "openmage",
       "source_name": "OSV OpenMage",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.807,
+      "elapsed_seconds": 1.691,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -499,7 +499,7 @@
       "system_id": "openmage",
       "source_name": "OpenMage GitHub Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.016,
+      "elapsed_seconds": 0.008,
       "kind": "html-links",
       "items_seen": 125
     },
@@ -507,7 +507,7 @@
       "system_id": "phpmyadmin",
       "source_name": "OSV phpMyAdmin",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.63,
+      "elapsed_seconds": 5.189,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -515,7 +515,7 @@
       "system_id": "phpmyadmin",
       "source_name": "phpMyAdmin Security Page",
       "source_kind": "html-links",
-      "elapsed_seconds": 3.239,
+      "elapsed_seconds": 3.596,
       "kind": "html-links",
       "items_seen": 263
     },
@@ -523,7 +523,7 @@
       "system_id": "prestashop",
       "source_name": "Friends Of Presta Security",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.009,
+      "elapsed_seconds": 0.004,
       "kind": "html-links",
       "items_seen": 38
     },
@@ -531,7 +531,7 @@
       "system_id": "prestashop",
       "source_name": "GitHub PrestaShop Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.009,
+      "elapsed_seconds": 0.003,
       "kind": "html-links",
       "items_seen": 127
     },
@@ -539,7 +539,7 @@
       "system_id": "prestashop",
       "source_name": "OSV PrestaShop",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.196,
+      "elapsed_seconds": 1.544,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -547,7 +547,7 @@
       "system_id": "prestashop",
       "source_name": "PrestaShop Security Page",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.009,
+      "elapsed_seconds": 0.003,
       "kind": "html-links",
       "items_seen": 60
     },
@@ -555,7 +555,7 @@
       "system_id": "rails",
       "source_name": "OSV Rails",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.066,
+      "elapsed_seconds": 3.738,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -563,7 +563,7 @@
       "system_id": "react",
       "source_name": "OSV React",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.557,
+      "elapsed_seconds": 2.546,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -571,7 +571,7 @@
       "system_id": "redmine",
       "source_name": "OSV Redmine",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.474,
+      "elapsed_seconds": 4.651,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -579,7 +579,7 @@
       "system_id": "redmine",
       "source_name": "Redmine Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 3.27,
+      "elapsed_seconds": 3.695,
       "kind": "html-links",
       "items_seen": 371
     },
@@ -587,7 +587,7 @@
       "system_id": "saleor",
       "source_name": "GitHub Saleor Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.003,
+      "elapsed_seconds": 1.161,
       "kind": "html-links",
       "items_seen": 120
     },
@@ -595,7 +595,7 @@
       "system_id": "saleor",
       "source_name": "OSV Saleor",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.596,
+      "elapsed_seconds": 2.344,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -603,7 +603,7 @@
       "system_id": "shopware",
       "source_name": "OSV Shopware",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.032,
+      "elapsed_seconds": 1.716,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -611,7 +611,7 @@
       "system_id": "shopware",
       "source_name": "Shopware Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.008,
+      "elapsed_seconds": 0.004,
       "kind": "html-links",
       "items_seen": 129
     },
@@ -619,7 +619,7 @@
       "system_id": "spring-boot",
       "source_name": "OSV Spring Boot",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.566,
+      "elapsed_seconds": 3.632,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -627,7 +627,7 @@
       "system_id": "spring-boot",
       "source_name": "Spring Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 2.16,
+      "elapsed_seconds": 2.546,
       "kind": "html-links",
       "items_seen": 118
     },
@@ -635,7 +635,7 @@
       "system_id": "spring-framework",
       "source_name": "OSV Spring Framework",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.271,
+      "elapsed_seconds": 3.691,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -643,7 +643,7 @@
       "system_id": "spring-framework",
       "source_name": "Spring Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 2.007,
+      "elapsed_seconds": 2.422,
       "kind": "html-links",
       "items_seen": 118
     },
@@ -651,7 +651,7 @@
       "system_id": "spring-security",
       "source_name": "OSV Spring Security",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.201,
+      "elapsed_seconds": 3.596,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -659,7 +659,7 @@
       "system_id": "spring-security",
       "source_name": "Spring Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 2.024,
+      "elapsed_seconds": 2.546,
       "kind": "html-links",
       "items_seen": 118
     },
@@ -667,7 +667,7 @@
       "system_id": "strapi",
       "source_name": "OSV Strapi",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.89,
+      "elapsed_seconds": 1.635,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -675,7 +675,7 @@
       "system_id": "strapi",
       "source_name": "Strapi GitHub Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.028,
+      "elapsed_seconds": 1.186,
       "kind": "html-links",
       "items_seen": 124
     },
@@ -683,7 +683,7 @@
       "system_id": "sveltekit",
       "source_name": "OSV SvelteKit",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.699,
+      "elapsed_seconds": 2.629,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -691,7 +691,7 @@
       "system_id": "symfony",
       "source_name": "OSV Symfony",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.249,
+      "elapsed_seconds": 4.117,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -699,7 +699,7 @@
       "system_id": "traefik",
       "source_name": "OSV Traefik",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.408,
+      "elapsed_seconds": 4.791,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -707,7 +707,7 @@
       "system_id": "undici",
       "source_name": "OSV Undici",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.269,
+      "elapsed_seconds": 3.596,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -715,7 +715,7 @@
       "system_id": "vite",
       "source_name": "OSV Vite",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 2.682,
+      "elapsed_seconds": 2.546,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -723,7 +723,7 @@
       "system_id": "vue",
       "source_name": "OSV Vue",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.558,
+      "elapsed_seconds": 2.672,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -731,7 +731,7 @@
       "system_id": "webpack",
       "source_name": "OSV webpack",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.376,
+      "elapsed_seconds": 3.398,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -739,7 +739,7 @@
       "system_id": "werkzeug",
       "source_name": "OSV Werkzeug",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 3.85,
+      "elapsed_seconds": 3.71,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -747,7 +747,7 @@
       "system_id": "woocommerce",
       "source_name": "GitHub WooCommerce Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.013,
+      "elapsed_seconds": 0.005,
       "kind": "html-links",
       "items_seen": 107
     },
@@ -755,7 +755,7 @@
       "system_id": "woocommerce",
       "source_name": "OSV WooCommerce",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 1.734,
+      "elapsed_seconds": 1.361,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -763,7 +763,7 @@
       "system_id": "woocommerce",
       "source_name": "Patchstack Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.011,
+      "elapsed_seconds": 0.005,
       "kind": "html-links",
       "items_seen": 193
     },
@@ -771,7 +771,7 @@
       "system_id": "woocommerce",
       "source_name": "Woo Developer Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.013,
+      "elapsed_seconds": 0.008,
       "kind": "html-links",
       "items_seen": 121
     },
@@ -779,7 +779,7 @@
       "system_id": "woocommerce",
       "source_name": "Wordfence Vulnerability Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.011,
+      "elapsed_seconds": 0.0,
       "kind": "html-links",
       "items_seen": 0
     },
@@ -787,7 +787,7 @@
       "system_id": "wordpress",
       "source_name": "Patchstack Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.031,
+      "elapsed_seconds": 0.024,
       "kind": "html-links",
       "items_seen": 193
     },
@@ -795,7 +795,7 @@
       "system_id": "wordpress",
       "source_name": "PortSwigger Research",
       "source_kind": "html-links",
-      "elapsed_seconds": 1.996,
+      "elapsed_seconds": 1.857,
       "kind": "html-links",
       "items_seen": 99
     },
@@ -803,7 +803,7 @@
       "system_id": "wordpress",
       "source_name": "WPScan Vulnerability Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.031,
+      "elapsed_seconds": 1.405,
       "kind": "html-links",
       "items_seen": 74
     },
@@ -811,7 +811,7 @@
       "system_id": "wordpress",
       "source_name": "WordPress Security News RSS",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 0.032,
+      "elapsed_seconds": 1.687,
       "kind": "rss-feed",
       "items_seen": 10
     },
@@ -819,81 +819,81 @@
       "system_id": "wordpress",
       "source_name": "Wordfence Vulnerability Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.032,
+      "elapsed_seconds": 0.024,
       "kind": "html-links",
       "items_seen": 0
     }
   ],
   "failures": [],
   "slow_sources": [
-    {
-      "system_id": "moodle",
-      "source_name": "OSV Moodle",
-      "source_kind": "osv-batch",
-      "elapsed_seconds": 5.195,
-      "status": "ok"
-    },
     {
       "system_id": "mattermost",
       "source_name": "OSV Mattermost",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 5.152,
-      "status": "ok"
-    },
-    {
-      "system_id": "adminer",
-      "source_name": "OSV Adminer",
-      "source_kind": "osv-batch",
-      "elapsed_seconds": 4.871,
-      "status": "ok"
-    },
-    {
-      "system_id": "django",
-      "source_name": "OSV Django",
-      "source_kind": "osv-batch",
-      "elapsed_seconds": 4.85,
+      "elapsed_seconds": 5.563,
       "status": "ok"
     },
     {
       "system_id": "kibana",
       "source_name": "NVD Kibana",
       "source_kind": "nvd-search",
-      "elapsed_seconds": 4.836,
+      "elapsed_seconds": 5.353,
       "status": "ok"
     },
     {
       "system_id": "phpmyadmin",
       "source_name": "OSV phpMyAdmin",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.63,
+      "elapsed_seconds": 5.189,
+      "status": "ok"
+    },
+    {
+      "system_id": "moodle",
+      "source_name": "OSV Moodle",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 5.03,
       "status": "ok"
     },
     {
       "system_id": "gitea",
       "source_name": "OSV Gitea",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.624,
-      "status": "ok"
-    },
-    {
-      "system_id": "redmine",
-      "source_name": "OSV Redmine",
-      "source_kind": "osv-batch",
-      "elapsed_seconds": 4.474,
+      "elapsed_seconds": 4.833,
       "status": "ok"
     },
     {
       "system_id": "traefik",
       "source_name": "OSV Traefik",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.408,
+      "elapsed_seconds": 4.791,
       "status": "ok"
     },
     {
-      "system_id": "symfony",
-      "source_name": "OSV Symfony",
+      "system_id": "adminer",
+      "source_name": "OSV Adminer",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 4.249,
+      "elapsed_seconds": 4.767,
+      "status": "ok"
+    },
+    {
+      "system_id": "redmine",
+      "source_name": "OSV Redmine",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 4.651,
+      "status": "ok"
+    },
+    {
+      "system_id": "django",
+      "source_name": "OSV Django",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 4.634,
+      "status": "ok"
+    },
+    {
+      "system_id": "caddy",
+      "source_name": "OSV Caddy",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 4.441,
       "status": "ok"
     }
   ],
diff --git a/08-threat-intel/generated/version-backlog.json b/08-threat-intel/generated/version-backlog.json
index b4a0f260..d339e2eb 100644
--- a/08-threat-intel/generated/version-backlog.json
+++ b/08-threat-intel/generated/version-backlog.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-28T09:18:23+00:00",
+  "generated_at": "2026-03-29T10:50:55+00:00",
   "source_gap_entities": [
     {
       "entity_id": "adminer",
diff --git a/08-threat-intel/generated/version-completeness.json b/08-threat-intel/generated/version-completeness.json
index 1c8c5546..00f39f4d 100644
--- a/08-threat-intel/generated/version-completeness.json
+++ b/08-threat-intel/generated/version-completeness.json
@@ -1,12 +1,12 @@
 {
-  "generated_at": "2026-03-28T09:18:23+00:00",
+  "generated_at": "2026-03-29T10:50:55+00:00",
   "cataloged_entity_total": 110,
   "latest_version_synced_count": 95,
   "source_gap_count": 15,
   "security_version_total": 6314,
   "security_version_entity_count": 83,
   "auto_promoted_entity_count": 10,
-  "lab_enqueued_count": 2,
+  "lab_enqueued_count": 0,
   "systems": [
     {
       "system_id": "adminer",
diff --git a/08-threat-intel/generated/version-sync-report.md b/08-threat-intel/generated/version-sync-report.md
index 6252bb2b..c8f8d441 100644
--- a/08-threat-intel/generated/version-sync-report.md
+++ b/08-threat-intel/generated/version-sync-report.md
@@ -1,13 +1,13 @@
 # 安全相关版本同步报告
 
-- 生成时间: `2026-03-28T09:18:23+00:00`
+- 生成时间: `2026-03-29T10:50:55+00:00`
 - 已编目实体: `110`
 - 最新版本已同步: `95`
 - 版本 source-gap: `15`
 - 安全相关版本记录: `6314`
 - 存在安全版本历史的实体: `83`
 - 自动升级实体: `10`
-- 因版本变化触发 lab 入队: `2`
+- 因版本变化触发 lab 入队: `0`
 
 ## 系统版本摘要
 
diff --git a/08-threat-intel/registry/entities/adminer.json b/08-threat-intel/registry/entities/adminer.json
index 8ca54fe1..7368b82e 100644
--- a/08-threat-intel/registry/entities/adminer.json
+++ b/08-threat-intel/registry/entities/adminer.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/adobe-commerce.json b/08-threat-intel/registry/entities/adobe-commerce.json
index cec6a534..7bbc62a3 100644
--- a/08-threat-intel/registry/entities/adobe-commerce.json
+++ b/08-threat-intel/registry/entities/adobe-commerce.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/angular--package--angular-core.json b/08-threat-intel/registry/entities/angular--package--angular-core.json
index 4fd6888b..c4a86562 100644
--- a/08-threat-intel/registry/entities/angular--package--angular-core.json
+++ b/08-threat-intel/registry/entities/angular--package--angular-core.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 18,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/angular/angular/security/advisories/GHSA-prjf-86w9-mfqv",
diff --git a/08-threat-intel/registry/entities/angular.json b/08-threat-intel/registry/entities/angular.json
index ecd4b7f5..b63236e1 100644
--- a/08-threat-intel/registry/entities/angular.json
+++ b/08-threat-intel/registry/entities/angular.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 18,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/apache-httpd.json b/08-threat-intel/registry/entities/apache-httpd.json
index 3b417935..86774c5f 100644
--- a/08-threat-intel/registry/entities/apache-httpd.json
+++ b/08-threat-intel/registry/entities/apache-httpd.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 1,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Apache HTTPD Security"
   ],
diff --git a/08-threat-intel/registry/entities/apache-tomcat.json b/08-threat-intel/registry/entities/apache-tomcat.json
index fda53b98..f79b299b 100644
--- a/08-threat-intel/registry/entities/apache-tomcat.json
+++ b/08-threat-intel/registry/entities/apache-tomcat.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Apache Tomcat Security"
   ],
diff --git a/08-threat-intel/registry/entities/aspnet-core.json b/08-threat-intel/registry/entities/aspnet-core.json
index 3ae9349a..e3365937 100644
--- a/08-threat-intel/registry/entities/aspnet-core.json
+++ b/08-threat-intel/registry/entities/aspnet-core.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/astro--module--astro.json b/08-threat-intel/registry/entities/astro--module--astro.json
index 87ffb973..5b01bb76 100644
--- a/08-threat-intel/registry/entities/astro--module--astro.json
+++ b/08-threat-intel/registry/entities/astro--module--astro.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/withastro/astro/security/advisories/GHSA-wrwg-2hg8-v723",
diff --git a/08-threat-intel/registry/entities/astro--project--astro.json b/08-threat-intel/registry/entities/astro--project--astro.json
index 216d6806..069b9ef3 100644
--- a/08-threat-intel/registry/entities/astro--project--astro.json
+++ b/08-threat-intel/registry/entities/astro--project--astro.json
@@ -32,7 +32,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 28,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/withastro/astro/security/advisories/GHSA-c4pw-33h3-35xw",
diff --git a/08-threat-intel/registry/entities/astro.json b/08-threat-intel/registry/entities/astro.json
index e17d7ebc..8b31adb1 100644
--- a/08-threat-intel/registry/entities/astro.json
+++ b/08-threat-intel/registry/entities/astro.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 32,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/caddy--extension--github-com-caddyserver-caddy-v2.json b/08-threat-intel/registry/entities/caddy--extension--github-com-caddyserver-caddy-v2.json
index c8309f81..640a7044 100644
--- a/08-threat-intel/registry/entities/caddy--extension--github-com-caddyserver-caddy-v2.json
+++ b/08-threat-intel/registry/entities/caddy--extension--github-com-caddyserver-caddy-v2.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "https://github.com/caddyserver/caddy/security/advisories/GHSA-5r3v-vc8m-m96g",
diff --git a/08-threat-intel/registry/entities/caddy--repo--github-com-caddyserver-caddy-v2.json b/08-threat-intel/registry/entities/caddy--repo--github-com-caddyserver-caddy-v2.json
index 82dcbbb5..73eb4eb4 100644
--- a/08-threat-intel/registry/entities/caddy--repo--github-com-caddyserver-caddy-v2.json
+++ b/08-threat-intel/registry/entities/caddy--repo--github-com-caddyserver-caddy-v2.json
@@ -24,7 +24,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 5,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "https://github.com/caddyserver/caddy/security/advisories/GHSA-4xrr-hq4w-6vf4",
diff --git a/08-threat-intel/registry/entities/caddy.json b/08-threat-intel/registry/entities/caddy.json
index 8f34b7e2..854393d0 100644
--- a/08-threat-intel/registry/entities/caddy.json
+++ b/08-threat-intel/registry/entities/caddy.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 7,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/directus--repo--directus-directus.json b/08-threat-intel/registry/entities/directus--repo--directus-directus.json
index 3bc198e1..a7be08e1 100644
--- a/08-threat-intel/registry/entities/directus--repo--directus-directus.json
+++ b/08-threat-intel/registry/entities/directus--repo--directus-directus.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 1,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "Directus GitHub Advisories"
diff --git a/08-threat-intel/registry/entities/directus.json b/08-threat-intel/registry/entities/directus.json
index 2839c24d..f1caeb4c 100644
--- a/08-threat-intel/registry/entities/directus.json
+++ b/08-threat-intel/registry/entities/directus.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 1,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Directus GitHub Advisories"
   ],
diff --git a/08-threat-intel/registry/entities/discourse.json b/08-threat-intel/registry/entities/discourse.json
index 865b2455..585127a7 100644
--- a/08-threat-intel/registry/entities/discourse.json
+++ b/08-threat-intel/registry/entities/discourse.json
@@ -34,7 +34,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 80,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Discourse Release Notes RSS",
     "Discourse Security RSS"
diff --git a/08-threat-intel/registry/entities/django--project--django.json b/08-threat-intel/registry/entities/django--project--django.json
index e280a5fa..58bcf59b 100644
--- a/08-threat-intel/registry/entities/django--project--django.json
+++ b/08-threat-intel/registry/entities/django--project--django.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 160,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://nvd.nist.gov/vuln/detail/CVE-2019-11358"
diff --git a/08-threat-intel/registry/entities/django.json b/08-threat-intel/registry/entities/django.json
index 4846e5c0..222fe358 100644
--- a/08-threat-intel/registry/entities/django.json
+++ b/08-threat-intel/registry/entities/django.json
@@ -38,7 +38,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 160,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Django Security Weblog",
     "Django Security Releases Archive"
diff --git a/08-threat-intel/registry/entities/drupal.json b/08-threat-intel/registry/entities/drupal.json
index e30c00bf..b3ceaec0 100644
--- a/08-threat-intel/registry/entities/drupal.json
+++ b/08-threat-intel/registry/entities/drupal.json
@@ -27,7 +27,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 74,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Drupal Security Advisories RSS"
   ],
diff --git a/08-threat-intel/registry/entities/echo--repo--github-com-labstack-echo-v4.json b/08-threat-intel/registry/entities/echo--repo--github-com-labstack-echo-v4.json
index 40d8b942..4c7d067f 100644
--- a/08-threat-intel/registry/entities/echo--repo--github-com-labstack-echo-v4.json
+++ b/08-threat-intel/registry/entities/echo--repo--github-com-labstack-echo-v4.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "https://github.com/labstack/echo/pull/1718",
diff --git a/08-threat-intel/registry/entities/echo.json b/08-threat-intel/registry/entities/echo.json
index 720f2520..c75f99f2 100644
--- a/08-threat-intel/registry/entities/echo.json
+++ b/08-threat-intel/registry/entities/echo.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/esbuild--project--esbuild.json b/08-threat-intel/registry/entities/esbuild--project--esbuild.json
index 4fbcf740..4de5a85f 100644
--- a/08-threat-intel/registry/entities/esbuild--project--esbuild.json
+++ b/08-threat-intel/registry/entities/esbuild--project--esbuild.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99"
diff --git a/08-threat-intel/registry/entities/esbuild.json b/08-threat-intel/registry/entities/esbuild.json
index 6672f927..77dc25f4 100644
--- a/08-threat-intel/registry/entities/esbuild.json
+++ b/08-threat-intel/registry/entities/esbuild.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/express.json b/08-threat-intel/registry/entities/express.json
index fe8f5c61..45484d5e 100644
--- a/08-threat-intel/registry/entities/express.json
+++ b/08-threat-intel/registry/entities/express.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/fastify--project--fastify.json b/08-threat-intel/registry/entities/fastify--project--fastify.json
index 5a6df236..cf6147c0 100644
--- a/08-threat-intel/registry/entities/fastify--project--fastify.json
+++ b/08-threat-intel/registry/entities/fastify--project--fastify.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/fastify/fastify/security/advisories/GHSA-573f-x89g-hqp9",
diff --git a/08-threat-intel/registry/entities/fastify.json b/08-threat-intel/registry/entities/fastify.json
index cf105e95..291798fe 100644
--- a/08-threat-intel/registry/entities/fastify.json
+++ b/08-threat-intel/registry/entities/fastify.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/flask--project--flask.json b/08-threat-intel/registry/entities/flask--project--flask.json
index fcbbe988..bf0eaf5b 100644
--- a/08-threat-intel/registry/entities/flask--project--flask.json
+++ b/08-threat-intel/registry/entities/flask--project--flask.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 22,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726"
diff --git a/08-threat-intel/registry/entities/flask.json b/08-threat-intel/registry/entities/flask.json
index ef3ad0cc..1d81c8ae 100644
--- a/08-threat-intel/registry/entities/flask.json
+++ b/08-threat-intel/registry/entities/flask.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 22,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/ghost--repo--tryghost-ghost.json b/08-threat-intel/registry/entities/ghost--repo--tryghost-ghost.json
index 9cc559dc..4996ef56 100644
--- a/08-threat-intel/registry/entities/ghost--repo--tryghost-ghost.json
+++ b/08-threat-intel/registry/entities/ghost--repo--tryghost-ghost.json
@@ -24,7 +24,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "Ghost GitHub Advisories"
diff --git a/08-threat-intel/registry/entities/ghost.json b/08-threat-intel/registry/entities/ghost.json
index 6a1f0301..b2df2bd9 100644
--- a/08-threat-intel/registry/entities/ghost.json
+++ b/08-threat-intel/registry/entities/ghost.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Ghost GitHub Advisories"
   ],
diff --git a/08-threat-intel/registry/entities/gin--repo--github-com-gin-gonic-gin.json b/08-threat-intel/registry/entities/gin--repo--github-com-gin-gonic-gin.json
index ab9c0aa7..f5ffa588 100644
--- a/08-threat-intel/registry/entities/gin--repo--github-com-gin-gonic-gin.json
+++ b/08-threat-intel/registry/entities/gin--repo--github-com-gin-gonic-gin.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "https://nvd.nist.gov/vuln/detail/CVE-2020-28483",
diff --git a/08-threat-intel/registry/entities/gin.json b/08-threat-intel/registry/entities/gin.json
index 6a2f4993..21afdbf1 100644
--- a/08-threat-intel/registry/entities/gin.json
+++ b/08-threat-intel/registry/entities/gin.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/gitea.json b/08-threat-intel/registry/entities/gitea.json
index 3fa0d17f..5b9f20cf 100644
--- a/08-threat-intel/registry/entities/gitea.json
+++ b/08-threat-intel/registry/entities/gitea.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/gitlab-ce.json b/08-threat-intel/registry/entities/gitlab-ce.json
index 762c36ad..6f5b398b 100644
--- a/08-threat-intel/registry/entities/gitlab-ce.json
+++ b/08-threat-intel/registry/entities/gitlab-ce.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 627,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitLab Security Releases Atom"
   ],
diff --git a/08-threat-intel/registry/entities/grafana.json b/08-threat-intel/registry/entities/grafana.json
index 766849cf..3f2e7c8c 100644
--- a/08-threat-intel/registry/entities/grafana.json
+++ b/08-threat-intel/registry/entities/grafana.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/hapi--package--hapi-hapi.json b/08-threat-intel/registry/entities/hapi--package--hapi-hapi.json
index 702ed5fd..7163d139 100644
--- a/08-threat-intel/registry/entities/hapi--package--hapi-hapi.json
+++ b/08-threat-intel/registry/entities/hapi--package--hapi-hapi.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://www.npmjs.com/advisories/1482"
diff --git a/08-threat-intel/registry/entities/hapi.json b/08-threat-intel/registry/entities/hapi.json
index 324aff1c..be42d8ee 100644
--- a/08-threat-intel/registry/entities/hapi.json
+++ b/08-threat-intel/registry/entities/hapi.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/haproxy.json b/08-threat-intel/registry/entities/haproxy.json
index 86587cb2..d9362a0a 100644
--- a/08-threat-intel/registry/entities/haproxy.json
+++ b/08-threat-intel/registry/entities/haproxy.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "HAProxy Blog Feed"
   ],
diff --git a/08-threat-intel/registry/entities/jenkins.json b/08-threat-intel/registry/entities/jenkins.json
index 0ab0558a..d89876cf 100644
--- a/08-threat-intel/registry/entities/jenkins.json
+++ b/08-threat-intel/registry/entities/jenkins.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/joomla.json b/08-threat-intel/registry/entities/joomla.json
index 15c1a02e..e3ea685e 100644
--- a/08-threat-intel/registry/entities/joomla.json
+++ b/08-threat-intel/registry/entities/joomla.json
@@ -25,7 +25,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 5,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Joomla Security Centre"
   ],
diff --git a/08-threat-intel/registry/entities/kibana.json b/08-threat-intel/registry/entities/kibana.json
index f8ea6d90..a425babe 100644
--- a/08-threat-intel/registry/entities/kibana.json
+++ b/08-threat-intel/registry/entities/kibana.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/koa--project--koa.json b/08-threat-intel/registry/entities/koa--project--koa.json
index 5487702c..d6c50eac 100644
--- a/08-threat-intel/registry/entities/koa--project--koa.json
+++ b/08-threat-intel/registry/entities/koa--project--koa.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/koajs/koa/security/advisories/GHSA-7gcc-r8m5-44qm"
diff --git a/08-threat-intel/registry/entities/koa.json b/08-threat-intel/registry/entities/koa.json
index a8154837..af3aa7f1 100644
--- a/08-threat-intel/registry/entities/koa.json
+++ b/08-threat-intel/registry/entities/koa.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/laravel--package--laravel-framework.json b/08-threat-intel/registry/entities/laravel--package--laravel-framework.json
index 1618826c..95d245e0 100644
--- a/08-threat-intel/registry/entities/laravel--package--laravel-framework.json
+++ b/08-threat-intel/registry/entities/laravel--package--laravel-framework.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 103,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Packagist p2",
     "https://github.com/laravel/framework/security/advisories/GHSA-66hf-2p6w-jqfw"
diff --git a/08-threat-intel/registry/entities/laravel.json b/08-threat-intel/registry/entities/laravel.json
index ee0d7b54..abc0a2a1 100644
--- a/08-threat-intel/registry/entities/laravel.json
+++ b/08-threat-intel/registry/entities/laravel.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 103,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/magento-open-source--repo--magento-magento2.json b/08-threat-intel/registry/entities/magento-open-source--repo--magento-magento2.json
index 53d818f5..028b05ee 100644
--- a/08-threat-intel/registry/entities/magento-open-source--repo--magento-magento2.json
+++ b/08-threat-intel/registry/entities/magento-open-source--repo--magento-magento2.json
@@ -25,7 +25,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 3,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "Sansec Research"
diff --git a/08-threat-intel/registry/entities/magento-open-source.json b/08-threat-intel/registry/entities/magento-open-source.json
index 54b76a82..d95e8c28 100644
--- a/08-threat-intel/registry/entities/magento-open-source.json
+++ b/08-threat-intel/registry/entities/magento-open-source.json
@@ -24,7 +24,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 3,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Sansec Research"
   ],
diff --git a/08-threat-intel/registry/entities/mattermost--plugin--mattermost-plugins.json b/08-threat-intel/registry/entities/mattermost--plugin--mattermost-plugins.json
index 23ef4dad..e4d8a91a 100644
--- a/08-threat-intel/registry/entities/mattermost--plugin--mattermost-plugins.json
+++ b/08-threat-intel/registry/entities/mattermost--plugin--mattermost-plugins.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 759,
-  "last_version_synced_at": "2026-03-28T09:18:13+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:44+00:00",
   "latest_version_evidence": [
     "Mattermost Security Updates JSON",
     "https://securityupdates.mattermost.com/security_updates.json",
diff --git a/08-threat-intel/registry/entities/mattermost--project--issue-platform.json b/08-threat-intel/registry/entities/mattermost--project--issue-platform.json
index 9c03a03b..6751e397 100644
--- a/08-threat-intel/registry/entities/mattermost--project--issue-platform.json
+++ b/08-threat-intel/registry/entities/mattermost--project--issue-platform.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 756,
-  "last_version_synced_at": "2026-03-28T09:18:14+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "Mattermost Security Updates JSON",
     "https://securityupdates.mattermost.com/security_updates.json",
diff --git a/08-threat-intel/registry/entities/mattermost--project--mattermost-server.json b/08-threat-intel/registry/entities/mattermost--project--mattermost-server.json
index a666f585..3ee62895 100644
--- a/08-threat-intel/registry/entities/mattermost--project--mattermost-server.json
+++ b/08-threat-intel/registry/entities/mattermost--project--mattermost-server.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 764,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "Mattermost Security Updates JSON",
     "advisory-fixed-version",
diff --git a/08-threat-intel/registry/entities/mattermost--repo--github-com-mattermost-mattermost-server.json b/08-threat-intel/registry/entities/mattermost--repo--github-com-mattermost-mattermost-server.json
index 745f15bd..21476ce4 100644
--- a/08-threat-intel/registry/entities/mattermost--repo--github-com-mattermost-mattermost-server.json
+++ b/08-threat-intel/registry/entities/mattermost--repo--github-com-mattermost-mattermost-server.json
@@ -36,7 +36,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 818,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "https://nvd.nist.gov/vuln/detail/CVE-2026-22545",
diff --git a/08-threat-intel/registry/entities/mattermost.json b/08-threat-intel/registry/entities/mattermost.json
index 89ae7198..353bc53c 100644
--- a/08-threat-intel/registry/entities/mattermost.json
+++ b/08-threat-intel/registry/entities/mattermost.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 3097,
-  "last_version_synced_at": "2026-03-28T09:18:12+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:43+00:00",
   "latest_version_evidence": [
     "Mattermost Security Updates JSON"
   ],
diff --git a/08-threat-intel/registry/entities/mediawiki.json b/08-threat-intel/registry/entities/mediawiki.json
index 44ef53b1..65dc3edb 100644
--- a/08-threat-intel/registry/entities/mediawiki.json
+++ b/08-threat-intel/registry/entities/mediawiki.json
@@ -28,7 +28,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 254,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "MediaWiki Announce RSS"
   ],
diff --git a/08-threat-intel/registry/entities/medusa.json b/08-threat-intel/registry/entities/medusa.json
index 07cf4668..41b8bb44 100644
--- a/08-threat-intel/registry/entities/medusa.json
+++ b/08-threat-intel/registry/entities/medusa.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/moodle.json b/08-threat-intel/registry/entities/moodle.json
index 920a2c15..35d8c8fe 100644
--- a/08-threat-intel/registry/entities/moodle.json
+++ b/08-threat-intel/registry/entities/moodle.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/nestjs.json b/08-threat-intel/registry/entities/nestjs.json
index 699c2e1b..f0a62c24 100644
--- a/08-threat-intel/registry/entities/nestjs.json
+++ b/08-threat-intel/registry/entities/nestjs.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/nextjs--project--next.json b/08-threat-intel/registry/entities/nextjs--project--next.json
index d8eaccf5..5b3ac962 100644
--- a/08-threat-intel/registry/entities/nextjs--project--next.json
+++ b/08-threat-intel/registry/entities/nextjs--project--next.json
@@ -35,7 +35,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 168,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/vercel/next.js",
diff --git a/08-threat-intel/registry/entities/nextjs.json b/08-threat-intel/registry/entities/nextjs.json
index ecaf308b..c74fe77d 100644
--- a/08-threat-intel/registry/entities/nextjs.json
+++ b/08-threat-intel/registry/entities/nextjs.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 168,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/nginx.json b/08-threat-intel/registry/entities/nginx.json
index 5cd77cde..6a6e010d 100644
--- a/08-threat-intel/registry/entities/nginx.json
+++ b/08-threat-intel/registry/entities/nginx.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/nodejs.json b/08-threat-intel/registry/entities/nodejs.json
index f93918fd..0c989338 100644
--- a/08-threat-intel/registry/entities/nodejs.json
+++ b/08-threat-intel/registry/entities/nodejs.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/nuxt--project--nuxt.json b/08-threat-intel/registry/entities/nuxt--project--nuxt.json
index 78635002..b830554a 100644
--- a/08-threat-intel/registry/entities/nuxt--project--nuxt.json
+++ b/08-threat-intel/registry/entities/nuxt--project--nuxt.json
@@ -26,7 +26,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 11,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/nuxt/nuxt/security/advisories/GHSA-vf6r-87q4-2vjf",
diff --git a/08-threat-intel/registry/entities/nuxt.json b/08-threat-intel/registry/entities/nuxt.json
index d2f9ac1f..7c4f7f0b 100644
--- a/08-threat-intel/registry/entities/nuxt.json
+++ b/08-threat-intel/registry/entities/nuxt.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 11,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/opencart--repo--opencart-opencart.json b/08-threat-intel/registry/entities/opencart--repo--opencart-opencart.json
index 7a65a68e..54cb0473 100644
--- a/08-threat-intel/registry/entities/opencart--repo--opencart-opencart.json
+++ b/08-threat-intel/registry/entities/opencart--repo--opencart-opencart.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "OpenCart Releases"
diff --git a/08-threat-intel/registry/entities/opencart.json b/08-threat-intel/registry/entities/opencart.json
index a0a34525..dd56e82c 100644
--- a/08-threat-intel/registry/entities/opencart.json
+++ b/08-threat-intel/registry/entities/opencart.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "OpenCart Releases"
   ],
diff --git a/08-threat-intel/registry/entities/openmage--repo--openmage-magento-lts.json b/08-threat-intel/registry/entities/openmage--repo--openmage-magento-lts.json
index 379e3716..f4d39978 100644
--- a/08-threat-intel/registry/entities/openmage--repo--openmage-magento-lts.json
+++ b/08-threat-intel/registry/entities/openmage--repo--openmage-magento-lts.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub Releases API"
   ],
diff --git a/08-threat-intel/registry/entities/openmage.json b/08-threat-intel/registry/entities/openmage.json
index 724c1305..cb05c75b 100644
--- a/08-threat-intel/registry/entities/openmage.json
+++ b/08-threat-intel/registry/entities/openmage.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/phpmyadmin.json b/08-threat-intel/registry/entities/phpmyadmin.json
index 029d7581..3706be7b 100644
--- a/08-threat-intel/registry/entities/phpmyadmin.json
+++ b/08-threat-intel/registry/entities/phpmyadmin.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "phpMyAdmin Security Page"
   ],
diff --git a/08-threat-intel/registry/entities/prestashop--package--prestashop-prestashop.json b/08-threat-intel/registry/entities/prestashop--package--prestashop-prestashop.json
index 4a08fe3b..110e1a05 100644
--- a/08-threat-intel/registry/entities/prestashop--package--prestashop-prestashop.json
+++ b/08-threat-intel/registry/entities/prestashop--package--prestashop-prestashop.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 41,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "Packagist p2",
     "https://github.com/PrestaShop/PrestaShop/security/advisories/GHSA-35pf-37c6-jxjv",
diff --git a/08-threat-intel/registry/entities/prestashop--repo--prestashop-prestashop.json b/08-threat-intel/registry/entities/prestashop--repo--prestashop-prestashop.json
index c2a7b14e..a7374360 100644
--- a/08-threat-intel/registry/entities/prestashop--repo--prestashop-prestashop.json
+++ b/08-threat-intel/registry/entities/prestashop--repo--prestashop-prestashop.json
@@ -28,7 +28,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 9,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "Friends Of Presta Security",
diff --git a/08-threat-intel/registry/entities/prestashop.json b/08-threat-intel/registry/entities/prestashop.json
index 6467390c..8aeeb7cc 100644
--- a/08-threat-intel/registry/entities/prestashop.json
+++ b/08-threat-intel/registry/entities/prestashop.json
@@ -26,7 +26,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 50,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub PrestaShop Advisories",
     "Friends Of Presta Security",
diff --git a/08-threat-intel/registry/entities/rails--project--rails.json b/08-threat-intel/registry/entities/rails--project--rails.json
index b6a7d680..23179c33 100644
--- a/08-threat-intel/registry/entities/rails--project--rails.json
+++ b/08-threat-intel/registry/entities/rails--project--rails.json
@@ -26,7 +26,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 102,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://nvd.nist.gov/vuln/detail/CVE-2007-5379",
diff --git a/08-threat-intel/registry/entities/rails.json b/08-threat-intel/registry/entities/rails.json
index f1e8f5f1..94d8f0d7 100644
--- a/08-threat-intel/registry/entities/rails.json
+++ b/08-threat-intel/registry/entities/rails.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 102,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/react--project--react-dom.json b/08-threat-intel/registry/entities/react--project--react-dom.json
index f8fda890..fa5dee69 100644
--- a/08-threat-intel/registry/entities/react--project--react-dom.json
+++ b/08-threat-intel/registry/entities/react--project--react-dom.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 12,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://nvd.nist.gov/vuln/detail/CVE-2018-6341"
diff --git a/08-threat-intel/registry/entities/react--project--react.json b/08-threat-intel/registry/entities/react--project--react.json
index 7e50d9ec..742db70b 100644
--- a/08-threat-intel/registry/entities/react--project--react.json
+++ b/08-threat-intel/registry/entities/react--project--react.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 6,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/facebook/react",
diff --git a/08-threat-intel/registry/entities/react.json b/08-threat-intel/registry/entities/react.json
index d7260713..0445f0a8 100644
--- a/08-threat-intel/registry/entities/react.json
+++ b/08-threat-intel/registry/entities/react.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 18,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/redmine.json b/08-threat-intel/registry/entities/redmine.json
index 13f3f744..9e2d0c60 100644
--- a/08-threat-intel/registry/entities/redmine.json
+++ b/08-threat-intel/registry/entities/redmine.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "Redmine Security Advisories"
   ],
diff --git a/08-threat-intel/registry/entities/saleor--repo--saleor-saleor.json b/08-threat-intel/registry/entities/saleor--repo--saleor-saleor.json
index 30392b67..0d7d9f8b 100644
--- a/08-threat-intel/registry/entities/saleor--repo--saleor-saleor.json
+++ b/08-threat-intel/registry/entities/saleor--repo--saleor-saleor.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "GitHub Saleor Advisories"
diff --git a/08-threat-intel/registry/entities/saleor.json b/08-threat-intel/registry/entities/saleor.json
index bbe5d86f..a62707a1 100644
--- a/08-threat-intel/registry/entities/saleor.json
+++ b/08-threat-intel/registry/entities/saleor.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub Saleor Advisories"
   ],
diff --git a/08-threat-intel/registry/entities/shopware--repo--shopware-shopware.json b/08-threat-intel/registry/entities/shopware--repo--shopware-shopware.json
index 0307601c..57465d02 100644
--- a/08-threat-intel/registry/entities/shopware--repo--shopware-shopware.json
+++ b/08-threat-intel/registry/entities/shopware--repo--shopware-shopware.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "Shopware Security Advisories"
diff --git a/08-threat-intel/registry/entities/shopware.json b/08-threat-intel/registry/entities/shopware.json
index 9068ccf2..d1633afb 100644
--- a/08-threat-intel/registry/entities/shopware.json
+++ b/08-threat-intel/registry/entities/shopware.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [
     "Shopware Security Advisories"
   ],
diff --git a/08-threat-intel/registry/entities/spring-boot--project--org-springframework-boot-spring-boot.json b/08-threat-intel/registry/entities/spring-boot--project--org-springframework-boot-spring-boot.json
index 0064887c..78af8235 100644
--- a/08-threat-intel/registry/entities/spring-boot--project--org-springframework-boot-spring-boot.json
+++ b/08-threat-intel/registry/entities/spring-boot--project--org-springframework-boot-spring-boot.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 22,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:46+00:00",
   "latest_version_evidence": [
     "advisory-fixed-version",
     "https://github.com/JLLeitschuh/security-research/security/advisories/GHSA-cm59-pr5q-cw85"
diff --git a/08-threat-intel/registry/entities/spring-boot.json b/08-threat-intel/registry/entities/spring-boot.json
index 51cbfb7e..97add805 100644
--- a/08-threat-intel/registry/entities/spring-boot.json
+++ b/08-threat-intel/registry/entities/spring-boot.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 22,
-  "last_version_synced_at": "2026-03-28T09:18:15+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:45+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/spring-framework.json b/08-threat-intel/registry/entities/spring-framework.json
index e3a29b47..5ea8b103 100644
--- a/08-threat-intel/registry/entities/spring-framework.json
+++ b/08-threat-intel/registry/entities/spring-framework.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:46+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/spring-security--project--org-springframework-security-spring-security-web.json b/08-threat-intel/registry/entities/spring-security--project--org-springframework-security-spring-security-web.json
index f34fe6a4..4d0ca19b 100644
--- a/08-threat-intel/registry/entities/spring-security--project--org-springframework-security-spring-security-web.json
+++ b/08-threat-intel/registry/entities/spring-security--project--org-springframework-security-spring-security-web.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 92,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "advisory-fixed-version",
     "https://nvd.nist.gov/vuln/detail/CVE-2026-22732"
diff --git a/08-threat-intel/registry/entities/spring-security.json b/08-threat-intel/registry/entities/spring-security.json
index 652276e6..05b5f656 100644
--- a/08-threat-intel/registry/entities/spring-security.json
+++ b/08-threat-intel/registry/entities/spring-security.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 92,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:46+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/strapi--repo--strapi-strapi.json b/08-threat-intel/registry/entities/strapi--repo--strapi-strapi.json
index c574b571..222065e2 100644
--- a/08-threat-intel/registry/entities/strapi--repo--strapi-strapi.json
+++ b/08-threat-intel/registry/entities/strapi--repo--strapi-strapi.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "Strapi GitHub Advisories"
diff --git a/08-threat-intel/registry/entities/strapi.json b/08-threat-intel/registry/entities/strapi.json
index 51e7aa39..e48c7924 100644
--- a/08-threat-intel/registry/entities/strapi.json
+++ b/08-threat-intel/registry/entities/strapi.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "Strapi GitHub Advisories"
   ],
diff --git a/08-threat-intel/registry/entities/sveltekit--package--sveltejs-kit.json b/08-threat-intel/registry/entities/sveltekit--package--sveltejs-kit.json
index fc8df802..d4a84fab 100644
--- a/08-threat-intel/registry/entities/sveltekit--package--sveltejs-kit.json
+++ b/08-threat-intel/registry/entities/sveltekit--package--sveltejs-kit.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/sveltejs/kit/security/advisories/GHSA-88qp-p4qg-rqm6",
diff --git a/08-threat-intel/registry/entities/sveltekit.json b/08-threat-intel/registry/entities/sveltekit.json
index 240fb638..51ceeeab 100644
--- a/08-threat-intel/registry/entities/sveltekit.json
+++ b/08-threat-intel/registry/entities/sveltekit.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/symfony--package--symfony-symfony.json b/08-threat-intel/registry/entities/symfony--package--symfony-symfony.json
index 3b8e7faa..457ccb40 100644
--- a/08-threat-intel/registry/entities/symfony--package--symfony-symfony.json
+++ b/08-threat-intel/registry/entities/symfony--package--symfony-symfony.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 220,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "Packagist p2",
     "https://github.com/symfony/symfony/security/advisories/GHSA-5pv8-ppvj-4h68"
diff --git a/08-threat-intel/registry/entities/symfony.json b/08-threat-intel/registry/entities/symfony.json
index ca1473ca..a2e7b35a 100644
--- a/08-threat-intel/registry/entities/symfony.json
+++ b/08-threat-intel/registry/entities/symfony.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 220,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/traefik--extension--github-com-traefik-traefik-v3.json b/08-threat-intel/registry/entities/traefik--extension--github-com-traefik-traefik-v3.json
index c74e4d66..6b1d5c8b 100644
--- a/08-threat-intel/registry/entities/traefik--extension--github-com-traefik-traefik-v3.json
+++ b/08-threat-intel/registry/entities/traefik--extension--github-com-traefik-traefik-v3.json
@@ -24,7 +24,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 8,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "https://github.com/traefik/traefik/security/advisories/GHSA-wvvq-wgcr-9q48",
diff --git a/08-threat-intel/registry/entities/traefik--repo--github-com-traefik-traefik-v3.json b/08-threat-intel/registry/entities/traefik--repo--github-com-traefik-traefik-v3.json
index cf3b1398..81dd30fe 100644
--- a/08-threat-intel/registry/entities/traefik--repo--github-com-traefik-traefik-v3.json
+++ b/08-threat-intel/registry/entities/traefik--repo--github-com-traefik-traefik-v3.json
@@ -39,7 +39,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 62,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "https://github.com/traefik/traefik/security/advisories/GHSA-gxrv-wf35-62w9",
diff --git a/08-threat-intel/registry/entities/traefik.json b/08-threat-intel/registry/entities/traefik.json
index f969308c..ad616cbc 100644
--- a/08-threat-intel/registry/entities/traefik.json
+++ b/08-threat-intel/registry/entities/traefik.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 70,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/undici--extension--undici.json b/08-threat-intel/registry/entities/undici--extension--undici.json
index b01ec309..8a33646c 100644
--- a/08-threat-intel/registry/entities/undici--extension--undici.json
+++ b/08-threat-intel/registry/entities/undici--extension--undici.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 4,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/nodejs/undici/security/advisories/GHSA-vrm6-8vpv-qv8q"
diff --git a/08-threat-intel/registry/entities/undici--project--undici.json b/08-threat-intel/registry/entities/undici--project--undici.json
index 64c9a071..9e12fabe 100644
--- a/08-threat-intel/registry/entities/undici--project--undici.json
+++ b/08-threat-intel/registry/entities/undici--project--undici.json
@@ -32,7 +32,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 21,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/nodejs/undici/security/advisories/GHSA-3cvr-822r-rqcc",
diff --git a/08-threat-intel/registry/entities/undici.json b/08-threat-intel/registry/entities/undici.json
index df816b2d..47d31164 100644
--- a/08-threat-intel/registry/entities/undici.json
+++ b/08-threat-intel/registry/entities/undici.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 25,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/vite--extension--vite.json b/08-threat-intel/registry/entities/vite--extension--vite.json
index d42d7524..000a69de 100644
--- a/08-threat-intel/registry/entities/vite--extension--vite.json
+++ b/08-threat-intel/registry/entities/vite--extension--vite.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 8,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/vitejs/vite/security/advisories/GHSA-jqfw-vq24-v9c3"
diff --git a/08-threat-intel/registry/entities/vite--module--vite.json b/08-threat-intel/registry/entities/vite--module--vite.json
index 26b6cb7e..a78cd740 100644
--- a/08-threat-intel/registry/entities/vite--module--vite.json
+++ b/08-threat-intel/registry/entities/vite--module--vite.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 12,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/vitejs/vite/security/advisories/GHSA-64vr-g452-qvp3"
diff --git a/08-threat-intel/registry/entities/vite--plugin--vite.json b/08-threat-intel/registry/entities/vite--plugin--vite.json
index dbeae57d..90e4a581 100644
--- a/08-threat-intel/registry/entities/vite--plugin--vite.json
+++ b/08-threat-intel/registry/entities/vite--plugin--vite.json
@@ -24,7 +24,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 23,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6",
diff --git a/08-threat-intel/registry/entities/vite--project--vite.json b/08-threat-intel/registry/entities/vite--project--vite.json
index 2000d278..2894cb3d 100644
--- a/08-threat-intel/registry/entities/vite--project--vite.json
+++ b/08-threat-intel/registry/entities/vite--project--vite.json
@@ -32,7 +32,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 107,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://nvd.nist.gov/vuln/detail/CVE-2022-35204",
diff --git a/08-threat-intel/registry/entities/vite.json b/08-threat-intel/registry/entities/vite.json
index 90533d08..a4abb198 100644
--- a/08-threat-intel/registry/entities/vite.json
+++ b/08-threat-intel/registry/entities/vite.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 150,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/vue--project--vue.json b/08-threat-intel/registry/entities/vue--project--vue.json
index c7219c28..5920a01d 100644
--- a/08-threat-intel/registry/entities/vue--project--vue.json
+++ b/08-threat-intel/registry/entities/vue--project--vue.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://nvd.nist.gov/vuln/detail/CVE-2024-9506"
diff --git a/08-threat-intel/registry/entities/vue.json b/08-threat-intel/registry/entities/vue.json
index 145b27ae..7661a81f 100644
--- a/08-threat-intel/registry/entities/vue.json
+++ b/08-threat-intel/registry/entities/vue.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/webpack.json b/08-threat-intel/registry/entities/webpack.json
index a0832863..98cac4ff 100644
--- a/08-threat-intel/registry/entities/webpack.json
+++ b/08-threat-intel/registry/entities/webpack.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "source-gap",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/werkzeug--project--werkzeug.json b/08-threat-intel/registry/entities/werkzeug--project--werkzeug.json
index 0293be59..ff162bb5 100644
--- a/08-threat-intel/registry/entities/werkzeug--project--werkzeug.json
+++ b/08-threat-intel/registry/entities/werkzeug--project--werkzeug.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 22,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "npm latest",
     "https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x"
diff --git a/08-threat-intel/registry/entities/werkzeug.json b/08-threat-intel/registry/entities/werkzeug.json
index 4f8227eb..4b8305d4 100644
--- a/08-threat-intel/registry/entities/werkzeug.json
+++ b/08-threat-intel/registry/entities/werkzeug.json
@@ -19,7 +19,7 @@
   "version_source_refs": [],
   "version_sync_status": "green",
   "security_version_count": 22,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [],
   "catalog_source": "",
   "catalog_reason": "",
diff --git a/08-threat-intel/registry/entities/woocommerce--repo--woocommerce-woocommerce.json b/08-threat-intel/registry/entities/woocommerce--repo--woocommerce-woocommerce.json
index c75f1698..f7a3480e 100644
--- a/08-threat-intel/registry/entities/woocommerce--repo--woocommerce-woocommerce.json
+++ b/08-threat-intel/registry/entities/woocommerce--repo--woocommerce-woocommerce.json
@@ -30,7 +30,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 5,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "GitHub Releases API",
     "Patchstack Database",
diff --git a/08-threat-intel/registry/entities/woocommerce.json b/08-threat-intel/registry/entities/woocommerce.json
index e67e7cc9..a9b96592 100644
--- a/08-threat-intel/registry/entities/woocommerce.json
+++ b/08-threat-intel/registry/entities/woocommerce.json
@@ -29,7 +29,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 5,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "Woo Developer Advisories",
     "Patchstack Database"
diff --git a/08-threat-intel/registry/entities/wordpress.json b/08-threat-intel/registry/entities/wordpress.json
index d279a991..0e50c1b9 100644
--- a/08-threat-intel/registry/entities/wordpress.json
+++ b/08-threat-intel/registry/entities/wordpress.json
@@ -70,7 +70,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 55,
-  "last_version_synced_at": "2026-03-28T09:18:16+00:00",
+  "last_version_synced_at": "2026-03-29T10:50:47+00:00",
   "latest_version_evidence": [
     "WPScan Vulnerability Database",
     "Patchstack Database",
diff --git a/08-threat-intel/registry/monitoring/2026-03-29T10-50-39+00-00.json b/08-threat-intel/registry/monitoring/2026-03-29T10-50-39+00-00.json
new file mode 100644
index 00000000..726207e8
--- /dev/null
+++ b/08-threat-intel/registry/monitoring/2026-03-29T10-50-39+00-00.json
@@ -0,0 +1,10257 @@
+{
+  "generated_at": "2026-03-29T10:50:39+00:00",
+  "source_catalog_audit": {
+    "generated_at": "2026-03-29T10:49:35+00:00",
+    "system_count": 62,
+    "source_count": 179,
+    "active_source_count": 102,
+    "retired_source_count": 77,
+    "systems_with_active_official": 61,
+    "systems_with_machine_readable_source": 61,
+    "systems": [
+      {
+        "system_id": "adminer",
+        "display_name": "Adminer",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "category": "ecommerce",
+        "tier": "history-full",
+        "source_total": 5,
+        "active_source_total": 1,
+        "retired_source_total": 4,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 0,
+        "has_active_official": true,
+        "has_machine_readable_source": false
+      },
+      {
+        "system_id": "angular",
+        "display_name": "Angular",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "apache-httpd",
+        "display_name": "Apache HTTP Server",
+        "category": "servers",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "apache-tomcat",
+        "display_name": "Apache Tomcat",
+        "category": "servers",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "aspnet-core",
+        "display_name": "ASP.NET Core",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "astro",
+        "display_name": "Astro",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "caddy",
+        "display_name": "Caddy",
+        "category": "servers",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "directus",
+        "display_name": "Directus",
+        "category": "cms",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 2,
+        "retired_source_total": 0,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "discourse",
+        "display_name": "Discourse",
+        "category": "cms",
+        "tier": "rolling-24m",
+        "source_total": 5,
+        "active_source_total": 3,
+        "retired_source_total": 2,
+        "official_active": 2,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 3,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "django",
+        "display_name": "Django",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 4,
+        "active_source_total": 3,
+        "retired_source_total": 1,
+        "official_active": 3,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "drupal",
+        "display_name": "Drupal",
+        "category": "cms",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 2,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "echo",
+        "display_name": "Echo",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 1,
+        "active_source_total": 1,
+        "retired_source_total": 0,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "esbuild",
+        "display_name": "esbuild",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "express",
+        "display_name": "Express",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "fastify",
+        "display_name": "Fastify",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "flask",
+        "display_name": "Flask",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "ghost",
+        "display_name": "Ghost",
+        "category": "cms",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "gin",
+        "display_name": "Gin",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 1,
+        "active_source_total": 1,
+        "retired_source_total": 0,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "gitea",
+        "display_name": "Gitea",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "gitlab-ce",
+        "display_name": "GitLab CE",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 4,
+        "active_source_total": 2,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "grafana",
+        "display_name": "Grafana",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 2,
+        "retired_source_total": 0,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "hapi",
+        "display_name": "Hapi",
+        "category": "frameworks",
+        "tier": "history-full",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "haproxy",
+        "display_name": "HAProxy",
+        "category": "servers",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "jenkins",
+        "display_name": "Jenkins",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "joomla",
+        "display_name": "Joomla",
+        "category": "cms",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "kibana",
+        "display_name": "Kibana",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "koa",
+        "display_name": "Koa",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "laravel",
+        "display_name": "Laravel",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "magento-open-source",
+        "display_name": "Magento Open Source",
+        "category": "ecommerce",
+        "tier": "history-full",
+        "source_total": 4,
+        "active_source_total": 3,
+        "retired_source_total": 1,
+        "official_active": 2,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "mattermost",
+        "display_name": "Mattermost",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 4,
+        "active_source_total": 2,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 2,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "mediawiki",
+        "display_name": "MediaWiki",
+        "category": "cms",
+        "tier": "rolling-24m",
+        "source_total": 4,
+        "active_source_total": 2,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 2,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "medusa",
+        "display_name": "Medusa",
+        "category": "ecommerce",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "moodle",
+        "display_name": "Moodle",
+        "category": "cms",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 0,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": false,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "nestjs",
+        "display_name": "NestJS",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "nextjs",
+        "display_name": "Next.js",
+        "category": "frameworks",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "nginx",
+        "display_name": "Nginx",
+        "category": "servers",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "nodejs",
+        "display_name": "Node.js",
+        "category": "frameworks",
+        "tier": "history-full",
+        "source_total": 2,
+        "active_source_total": 2,
+        "retired_source_total": 0,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "nuxt",
+        "display_name": "Nuxt",
+        "category": "frameworks",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "opencart",
+        "display_name": "OpenCart",
+        "category": "ecommerce",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "openmage",
+        "display_name": "OpenMage / Mage-OS",
+        "category": "ecommerce",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "phpmyadmin",
+        "display_name": "phpMyAdmin",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "prestashop",
+        "display_name": "PrestaShop",
+        "category": "ecommerce",
+        "tier": "history-full",
+        "source_total": 5,
+        "active_source_total": 4,
+        "retired_source_total": 1,
+        "official_active": 2,
+        "ecosystem_active": 2,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "rails",
+        "display_name": "Ruby on Rails",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "react",
+        "display_name": "React",
+        "category": "frameworks",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "redmine",
+        "display_name": "Redmine",
+        "category": "platforms",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "saleor",
+        "display_name": "Saleor",
+        "category": "ecommerce",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "shopware",
+        "display_name": "Shopware",
+        "category": "ecommerce",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "spring-boot",
+        "display_name": "Spring Boot",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "spring-framework",
+        "display_name": "Spring Framework",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "spring-security",
+        "display_name": "Spring Security",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 2,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 1,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "strapi",
+        "display_name": "Strapi",
+        "category": "cms",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 2,
+        "retired_source_total": 0,
+        "official_active": 2,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "sveltekit",
+        "display_name": "SvelteKit",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "symfony",
+        "display_name": "Symfony",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "traefik",
+        "display_name": "Traefik",
+        "category": "servers",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "undici",
+        "display_name": "Undici",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "vite",
+        "display_name": "Vite",
+        "category": "frameworks",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "vue",
+        "display_name": "Vue",
+        "category": "frameworks",
+        "tier": "history-full",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "webpack",
+        "display_name": "webpack",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 3,
+        "active_source_total": 1,
+        "retired_source_total": 2,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "werkzeug",
+        "display_name": "Werkzeug",
+        "category": "frameworks",
+        "tier": "rolling-24m",
+        "source_total": 2,
+        "active_source_total": 1,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 0,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "category": "ecommerce",
+        "tier": "history-full",
+        "source_total": 6,
+        "active_source_total": 5,
+        "retired_source_total": 1,
+        "official_active": 2,
+        "ecosystem_active": 3,
+        "research_active": 0,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      },
+      {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "category": "cms",
+        "tier": "history-full",
+        "source_total": 6,
+        "active_source_total": 5,
+        "retired_source_total": 1,
+        "official_active": 1,
+        "ecosystem_active": 3,
+        "research_active": 1,
+        "machine_readable_active": 1,
+        "has_active_official": true,
+        "has_machine_readable_source": true
+      }
+    ],
+    "retired_sources": [
+      {
+        "system_id": "adminer",
+        "display_name": "Adminer",
+        "source_name": "NVD Adminer",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Adminer provides a machine-readable Packagist-aligned source, removing the need for NVD public search.",
+        "replacement_sources": [
+          "OSV Adminer"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "source_name": "Adobe Security Bulletins",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "Original bulletin index probe was unstable under the old transport path; vendor index replacement uses explicit request policy and parser hints.",
+        "replacement_sources": [
+          "Adobe Magento Security Index",
+          "NVD Adobe Commerce",
+          "GHSA Adobe Commerce"
+        ],
+        "url": "https://helpx.adobe.com/security/products/magento.html"
+      },
+      {
+        "system_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "source_name": "GHSA Adobe Commerce",
+        "bucket": "ecosystem_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; Adobe index and NVD remain active replacements.",
+        "replacement_sources": [
+          "Adobe Magento Security Index",
+          "NVD Adobe Commerce"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "source_name": "NVD Adobe Commerce",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "Adobe Magento Security Index is now the active official machine-readable source, so NVD public search is no longer needed for daily collection.",
+        "replacement_sources": [
+          "Adobe Magento Security Index"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "source_name": "Sansec Research",
+        "bucket": "ecosystem_sources",
+        "kind": "vendor-index",
+        "retired_reason": "Research index is too slow for daily active monitoring; GHSA Adobe Commerce provides a stable machine-readable replacement.",
+        "replacement_sources": [
+          "GHSA Adobe Commerce",
+          "Adobe Magento Security Index"
+        ],
+        "url": "https://sansec.io/research"
+      },
+      {
+        "system_id": "angular",
+        "display_name": "Angular",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV Angular remains the active replacement source.",
+        "replacement_sources": [
+          "OSV Angular"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "apache-httpd",
+        "display_name": "Apache HTTP Server",
+        "source_name": "NVD Apache HTTP Server",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "Official Apache HTTPD advisories page plus CISA KEV are sufficient active sources for daily monitoring.",
+        "replacement_sources": [
+          "Apache HTTPD Security",
+          "CISA KEV Apache HTTPD"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "apache-tomcat",
+        "display_name": "Apache Tomcat",
+        "source_name": "NVD Tomcat",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "Official Tomcat advisories page plus CISA KEV are sufficient active sources for daily monitoring.",
+        "replacement_sources": [
+          "Apache Tomcat Security",
+          "CISA KEV Tomcat"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "aspnet-core",
+        "display_name": "ASP.NET Core",
+        "source_name": "NVD ASP.NET Core",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV ASP.NET Core provides machine-readable NuGet-aligned coverage with lower latency than NVD public search.",
+        "replacement_sources": [
+          "OSV ASP.NET Core"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "astro",
+        "display_name": "Astro",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV Astro remains the active replacement source.",
+        "replacement_sources": [
+          "OSV Astro"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "caddy",
+        "display_name": "Caddy",
+        "source_name": "GitHub Caddy Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Caddy is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Caddy"
+        ],
+        "url": "https://github.com/caddyserver/caddy/security/advisories"
+      },
+      {
+        "system_id": "discourse",
+        "display_name": "Discourse",
+        "source_name": "Discourse Meta Security",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "Meta security category HTML changed and no longer provides stable scrape semantics for health checks.",
+        "replacement_sources": [
+          "Discourse Release Notes RSS",
+          "GitHub Discourse Advisories"
+        ],
+        "url": "https://meta.discourse.org/c/bug/security/40"
+      },
+      {
+        "system_id": "discourse",
+        "display_name": "Discourse",
+        "source_name": "GitHub Discourse Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; Discourse release feed remains the active official source.",
+        "replacement_sources": [
+          "Discourse Release Notes RSS",
+          "Discourse Security RSS"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "django",
+        "display_name": "Django",
+        "source_name": "Django Security RSS",
+        "bucket": "official_sources",
+        "kind": "rss-feed",
+        "retired_reason": "Official security tag feed became unstable; use official weblog index and release archive instead.",
+        "replacement_sources": [
+          "Django Security Weblog",
+          "Django Security Releases Archive"
+        ],
+        "url": "https://www.djangoproject.com/weblog/feeds/tags/security/"
+      },
+      {
+        "system_id": "drupal",
+        "display_name": "Drupal",
+        "source_name": "NVD Drupal",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Drupal + Drupal official RSS now cover machine-readable collection with lower cold-start latency than NVD public search.",
+        "replacement_sources": [
+          "Drupal Security Advisories RSS",
+          "OSV Drupal"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "esbuild",
+        "display_name": "esbuild",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV esbuild remains the active replacement source.",
+        "replacement_sources": [
+          "OSV esbuild"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "esbuild",
+        "display_name": "esbuild",
+        "source_name": "NVD esbuild",
+        "bucket": "ecosystem_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV esbuild replaces NVD public search for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "OSV esbuild"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "express",
+        "display_name": "Express",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV Express remains the active replacement source.",
+        "replacement_sources": [
+          "OSV Express"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "express",
+        "display_name": "Express",
+        "source_name": "NVD Express.js",
+        "bucket": "ecosystem_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Express replaces NVD public search for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "OSV Express"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "fastify",
+        "display_name": "Fastify",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV Fastify remains the active replacement source.",
+        "replacement_sources": [
+          "OSV Fastify"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "flask",
+        "display_name": "Flask",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GitHub advisory API is quota-limited; OSV Flask remains the active machine-readable source.",
+        "replacement_sources": [
+          "OSV Flask"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "ghost",
+        "display_name": "Ghost",
+        "source_name": "NVD Ghost",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Ghost replaces NVD for machine-readable collection and keeps npm package alignment.",
+        "replacement_sources": [
+          "Ghost GitHub Advisories",
+          "OSV Ghost"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "gitea",
+        "display_name": "Gitea",
+        "source_name": "GitHub Gitea Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Gitea is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Gitea"
+        ],
+        "url": "https://github.com/go-gitea/gitea/security/advisories"
+      },
+      {
+        "system_id": "gitlab-ce",
+        "display_name": "GitLab CE",
+        "source_name": "GitLab Security Releases",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "GitLab Security Releases Atom is the official machine-readable replacement; keeping both active adds duplicate cold-start cost without added coverage.",
+        "replacement_sources": [
+          "GitLab Security Releases Atom"
+        ],
+        "url": "https://about.gitlab.com/releases/categories/releases/"
+      },
+      {
+        "system_id": "gitlab-ce",
+        "display_name": "GitLab CE",
+        "source_name": "NVD GitLab",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "GitLab Security Releases Atom provides an official machine-readable feed, so NVD public search is no longer required.",
+        "replacement_sources": [
+          "GitLab Security Releases",
+          "GitLab Security Releases Atom"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "hapi",
+        "display_name": "Hapi",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV Hapi remains the active replacement source.",
+        "replacement_sources": [
+          "OSV Hapi"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "haproxy",
+        "display_name": "HAProxy",
+        "source_name": "HAProxy Security Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "Legacy haproxy.org security page no longer yields stable scrape results for monitoring.",
+        "replacement_sources": [
+          "HAProxy Blog Feed"
+        ],
+        "url": "https://www.haproxy.org/security/"
+      },
+      {
+        "system_id": "haproxy",
+        "display_name": "HAProxy",
+        "source_name": "NVD HAProxy",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "HAProxy Blog Feed is an active official RSS source, so NVD public search is no longer required.",
+        "replacement_sources": [
+          "HAProxy Blog Feed"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "jenkins",
+        "display_name": "Jenkins",
+        "source_name": "Jenkins Security Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "Jenkins Security Advisories RSS is the official machine-readable replacement; keeping both active adds duplicate cold-start cost without added coverage.",
+        "replacement_sources": [
+          "Jenkins Security Advisories RSS"
+        ],
+        "url": "https://www.jenkins.io/security/advisories/"
+      },
+      {
+        "system_id": "jenkins",
+        "display_name": "Jenkins",
+        "source_name": "NVD Jenkins",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "Jenkins Security Advisories RSS provides an official machine-readable feed, replacing NVD public search.",
+        "replacement_sources": [
+          "Jenkins Security Advisories",
+          "Jenkins Security Advisories RSS"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "joomla",
+        "display_name": "Joomla",
+        "source_name": "NVD Joomla",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Joomla CMS replaces NVD for machine-readable collection without public NVD throttling.",
+        "replacement_sources": [
+          "Joomla Security Centre",
+          "OSV Joomla"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "kibana",
+        "display_name": "Kibana",
+        "source_name": "Elastic Security Announcements RSS",
+        "bucket": "official_sources",
+        "kind": "rss-feed",
+        "retired_reason": "Elastic Discuss RSS is frequently rate-limited by cloud_10_secs_limit during monitor/source-health bursts; use Elastic Product Security plus NVD Kibana for stable active coverage.",
+        "replacement_sources": [
+          "Elastic Product Security",
+          "NVD Kibana"
+        ],
+        "url": "https://discuss.elastic.co/c/announcements/security-announcements/31.rss"
+      },
+      {
+        "system_id": "koa",
+        "display_name": "Koa",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV Koa remains the active replacement source.",
+        "replacement_sources": [
+          "OSV Koa"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "laravel",
+        "display_name": "Laravel",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GitHub advisory API is quota-limited; OSV Laravel remains the active machine-readable source.",
+        "replacement_sources": [
+          "OSV Laravel"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "magento-open-source",
+        "display_name": "Magento Open Source",
+        "source_name": "NVD Magento",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Magento Open Source plus Magento GitHub advisories replace NVD public search for machine-readable collection.",
+        "replacement_sources": [
+          "Magento GitHub Advisories",
+          "OSV Magento Open Source"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "mattermost",
+        "display_name": "Mattermost",
+        "source_name": "Mattermost Security Updates",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "Mattermost security updates page returned repeated 403 responses from the collector path; NVD replacement remains active.",
+        "replacement_sources": [
+          "NVD Mattermost"
+        ],
+        "url": "https://mattermost.com/security-updates/"
+      },
+      {
+        "system_id": "mattermost",
+        "display_name": "Mattermost",
+        "source_name": "NVD Mattermost",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "Mattermost official JSON feed plus OSV Mattermost replace NVD for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "Mattermost Security Updates JSON",
+          "OSV Mattermost"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "mediawiki",
+        "display_name": "MediaWiki",
+        "source_name": "MediaWiki Security Releases",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "MediaWiki security page is no longer reachable reliably from the collector path; NVD replacement remains active.",
+        "replacement_sources": [
+          "MediaWiki Announce RSS",
+          "NVD MediaWiki"
+        ],
+        "url": "https://www.mediawiki.org/wiki/Security"
+      },
+      {
+        "system_id": "mediawiki",
+        "display_name": "MediaWiki",
+        "source_name": "NVD MediaWiki",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "MediaWiki announce RSS plus OSV MediaWiki now replace NVD for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "MediaWiki Announce RSS",
+          "OSV MediaWiki"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "medusa",
+        "display_name": "Medusa",
+        "source_name": "GitHub Medusa Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Medusa is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Medusa"
+        ],
+        "url": "https://github.com/medusajs/medusa/security/advisories"
+      },
+      {
+        "system_id": "moodle",
+        "display_name": "Moodle",
+        "source_name": "Moodle Security News",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "Security page is reachable with a browser-style UA, but the current markup only exposes generic \"Discuss this topic\" anchors to the collector; NVD Moodle remains the active replacement source until a richer parser is added.",
+        "replacement_sources": [
+          "NVD Moodle"
+        ],
+        "url": "https://moodle.org/security/"
+      },
+      {
+        "system_id": "moodle",
+        "display_name": "Moodle",
+        "source_name": "NVD Moodle",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Moodle replaces NVD for machine-readable collection while official Moodle sources remain for cross-checking.",
+        "replacement_sources": [
+          "OSV Moodle"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "nestjs",
+        "display_name": "NestJS",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV NestJS remains the active replacement source.",
+        "replacement_sources": [
+          "OSV NestJS"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "nestjs",
+        "display_name": "NestJS",
+        "source_name": "NVD NestJS",
+        "bucket": "ecosystem_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV NestJS replaces NVD public search for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "OSV NestJS"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "nextjs",
+        "display_name": "Next.js",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; GitHub Next.js Advisories and OSV Next.js remain active replacements.",
+        "replacement_sources": [
+          "GitHub Next.js Advisories",
+          "OSV Next.js"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "nextjs",
+        "display_name": "Next.js",
+        "source_name": "GitHub Next.js Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Next.js is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Next.js"
+        ],
+        "url": "https://github.com/vercel/next.js/security/advisories"
+      },
+      {
+        "system_id": "nginx",
+        "display_name": "Nginx",
+        "source_name": "NVD NGINX",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "Official NGINX advisories page and CISA KEV together provide the needed daily signal without NVD public-search latency.",
+        "replacement_sources": [
+          "NGINX Security Advisories",
+          "CISA KEV NGINX"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "nuxt",
+        "display_name": "Nuxt",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; Nuxt Security and OSV Nuxt remain active replacements.",
+        "replacement_sources": [
+          "Nuxt Security",
+          "OSV Nuxt"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "nuxt",
+        "display_name": "Nuxt",
+        "source_name": "Nuxt Security",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Nuxt is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Nuxt"
+        ],
+        "url": "https://github.com/nuxt/nuxt/security/advisories"
+      },
+      {
+        "system_id": "opencart",
+        "display_name": "OpenCart",
+        "source_name": "NVD OpenCart",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV OpenCart replaces NVD for machine-readable collection while official release source remains active.",
+        "replacement_sources": [
+          "OpenCart Releases",
+          "OSV OpenCart"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "openmage",
+        "display_name": "OpenMage / Mage-OS",
+        "source_name": "NVD OpenMage",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV OpenMage replaces NVD for machine-readable composer-aligned collection.",
+        "replacement_sources": [
+          "OpenMage GitHub Advisories",
+          "OSV OpenMage"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "phpmyadmin",
+        "display_name": "phpMyAdmin",
+        "source_name": "NVD phpMyAdmin",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV phpMyAdmin replaces NVD for machine-readable collection while the official security page remains active.",
+        "replacement_sources": [
+          "phpMyAdmin Security Page",
+          "OSV phpMyAdmin"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "prestashop",
+        "display_name": "PrestaShop",
+        "source_name": "NVD PrestaShop",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV PrestaShop replaces NVD for machine-readable collection while official and ecosystem advisories remain active.",
+        "replacement_sources": [
+          "PrestaShop Security Page",
+          "GitHub PrestaShop Advisories",
+          "OSV PrestaShop"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "rails",
+        "display_name": "Ruby on Rails",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GitHub advisory API is quota-limited; OSV Rails remains the active machine-readable source.",
+        "replacement_sources": [
+          "OSV Rails"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "rails",
+        "display_name": "Ruby on Rails",
+        "source_name": "NVD Ruby on Rails",
+        "bucket": "ecosystem_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Rails replaces NVD public search for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "OSV Rails"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "react",
+        "display_name": "React",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; GitHub React Advisories and OSV React remain active replacements.",
+        "replacement_sources": [
+          "GitHub React Advisories",
+          "OSV React"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "react",
+        "display_name": "React",
+        "source_name": "GitHub React Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV React is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV React"
+        ],
+        "url": "https://github.com/facebook/react/security/advisories"
+      },
+      {
+        "system_id": "redmine",
+        "display_name": "Redmine",
+        "source_name": "NVD Redmine",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "Official Redmine advisories page remains active and NVD public search is retired to reduce cold-start latency.",
+        "replacement_sources": [
+          "Redmine Security Advisories"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "saleor",
+        "display_name": "Saleor",
+        "source_name": "NVD Saleor",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Saleor replaces NVD for machine-readable collection and aligns with the published PyPI package.",
+        "replacement_sources": [
+          "GitHub Saleor Advisories",
+          "OSV Saleor"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "shopware",
+        "display_name": "Shopware",
+        "source_name": "NVD Shopware",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Shopware replaces NVD for machine-readable collection with lower cold-start overhead.",
+        "replacement_sources": [
+          "Shopware Security Advisories",
+          "OSV Shopware"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "spring-boot",
+        "display_name": "Spring Boot",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GitHub advisory API is quota-limited; Spring official page and OSV remain the active replacements.",
+        "replacement_sources": [
+          "Spring Security Advisories",
+          "OSV Spring Boot"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "spring-framework",
+        "display_name": "Spring Framework",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; Spring official page and OSV remain the active replacements.",
+        "replacement_sources": [
+          "Spring Security Advisories",
+          "OSV Spring Framework"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "spring-security",
+        "display_name": "Spring Security",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GitHub advisory API is quota-limited; Spring official page and OSV remain the active replacements.",
+        "replacement_sources": [
+          "Spring Security Advisories",
+          "OSV Spring Security"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "sveltekit",
+        "display_name": "SvelteKit",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV SvelteKit remains the active replacement source.",
+        "replacement_sources": [
+          "OSV SvelteKit"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "symfony",
+        "display_name": "Symfony",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GitHub advisory API is quota-limited; OSV Symfony remains the active machine-readable source.",
+        "replacement_sources": [
+          "OSV Symfony"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "traefik",
+        "display_name": "Traefik",
+        "source_name": "GitHub Traefik Advisories",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Traefik is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Traefik"
+        ],
+        "url": "https://github.com/traefik/traefik/security/advisories"
+      },
+      {
+        "system_id": "undici",
+        "display_name": "Undici",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV Undici remains the active replacement source.",
+        "replacement_sources": [
+          "OSV Undici"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "undici",
+        "display_name": "Undici",
+        "source_name": "NVD Undici",
+        "bucket": "ecosystem_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV Undici replaces NVD public search for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "OSV Undici"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "vite",
+        "display_name": "Vite",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; Vite Security and OSV Vite remain active replacements.",
+        "replacement_sources": [
+          "Vite Security",
+          "OSV Vite"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "vite",
+        "display_name": "Vite",
+        "source_name": "Vite Security",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Vite is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Vite"
+        ],
+        "url": "https://github.com/vitejs/vite/security/advisories"
+      },
+      {
+        "system_id": "vue",
+        "display_name": "Vue",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; Vue Security and OSV Vue remain active replacements.",
+        "replacement_sources": [
+          "Vue Security",
+          "OSV Vue"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "vue",
+        "display_name": "Vue",
+        "source_name": "Vue Security",
+        "bucket": "official_sources",
+        "kind": "html-links",
+        "retired_reason": "OSV Vue is the active official machine-readable replacement; keeping GitHub HTML advisories active adds duplicate cold-start cost.",
+        "replacement_sources": [
+          "OSV Vue"
+        ],
+        "url": "https://github.com/vuejs/core/security"
+      },
+      {
+        "system_id": "webpack",
+        "display_name": "webpack",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; OSV webpack remains the active replacement source.",
+        "replacement_sources": [
+          "OSV webpack"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "webpack",
+        "display_name": "webpack",
+        "source_name": "NVD webpack",
+        "bucket": "ecosystem_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV webpack replaces NVD public search for lower-latency machine-readable collection.",
+        "replacement_sources": [
+          "OSV webpack"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "werkzeug",
+        "display_name": "Werkzeug",
+        "source_name": "GitHub Global Advisories",
+        "bucket": "official_sources",
+        "kind": "ghsa-global",
+        "retired_reason": "Unauthenticated GitHub advisory API is quota-limited; OSV Werkzeug remains the active machine-readable source.",
+        "replacement_sources": [
+          "OSV Werkzeug"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "source_name": "NVD WooCommerce",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "OSV WooCommerce replaces NVD for machine-readable collection while official and ecosystem advisory pages remain active.",
+        "replacement_sources": [
+          "Woo Developer Advisories",
+          "GitHub WooCommerce Advisories",
+          "OSV WooCommerce"
+        ],
+        "url": ""
+      },
+      {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "source_name": "NVD WordPress",
+        "bucket": "official_sources",
+        "kind": "nvd-search",
+        "retired_reason": "WordPress official RSS plus ecosystem plugin intelligence cover active collection with lower cold-start latency and lower public-search dependence than NVD.",
+        "replacement_sources": [
+          "WordPress Security News RSS",
+          "Wordfence Vulnerability Database",
+          "WPScan Vulnerability Database"
+        ],
+        "url": ""
+      }
+    ],
+    "replacement_map": [
+      {
+        "system_id": "adminer",
+        "retired_source": "NVD Adminer",
+        "replacement_sources": [
+          "OSV Adminer"
+        ]
+      },
+      {
+        "system_id": "adobe-commerce",
+        "retired_source": "Adobe Security Bulletins",
+        "replacement_sources": [
+          "Adobe Magento Security Index",
+          "NVD Adobe Commerce",
+          "GHSA Adobe Commerce"
+        ]
+      },
+      {
+        "system_id": "adobe-commerce",
+        "retired_source": "GHSA Adobe Commerce",
+        "replacement_sources": [
+          "Adobe Magento Security Index",
+          "NVD Adobe Commerce"
+        ]
+      },
+      {
+        "system_id": "adobe-commerce",
+        "retired_source": "NVD Adobe Commerce",
+        "replacement_sources": [
+          "Adobe Magento Security Index"
+        ]
+      },
+      {
+        "system_id": "adobe-commerce",
+        "retired_source": "Sansec Research",
+        "replacement_sources": [
+          "GHSA Adobe Commerce",
+          "Adobe Magento Security Index"
+        ]
+      },
+      {
+        "system_id": "angular",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Angular"
+        ]
+      },
+      {
+        "system_id": "apache-httpd",
+        "retired_source": "NVD Apache HTTP Server",
+        "replacement_sources": [
+          "Apache HTTPD Security",
+          "CISA KEV Apache HTTPD"
+        ]
+      },
+      {
+        "system_id": "apache-tomcat",
+        "retired_source": "NVD Tomcat",
+        "replacement_sources": [
+          "Apache Tomcat Security",
+          "CISA KEV Tomcat"
+        ]
+      },
+      {
+        "system_id": "aspnet-core",
+        "retired_source": "NVD ASP.NET Core",
+        "replacement_sources": [
+          "OSV ASP.NET Core"
+        ]
+      },
+      {
+        "system_id": "astro",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Astro"
+        ]
+      },
+      {
+        "system_id": "caddy",
+        "retired_source": "GitHub Caddy Advisories",
+        "replacement_sources": [
+          "OSV Caddy"
+        ]
+      },
+      {
+        "system_id": "discourse",
+        "retired_source": "Discourse Meta Security",
+        "replacement_sources": [
+          "Discourse Release Notes RSS",
+          "GitHub Discourse Advisories"
+        ]
+      },
+      {
+        "system_id": "discourse",
+        "retired_source": "GitHub Discourse Advisories",
+        "replacement_sources": [
+          "Discourse Release Notes RSS",
+          "Discourse Security RSS"
+        ]
+      },
+      {
+        "system_id": "django",
+        "retired_source": "Django Security RSS",
+        "replacement_sources": [
+          "Django Security Weblog",
+          "Django Security Releases Archive"
+        ]
+      },
+      {
+        "system_id": "drupal",
+        "retired_source": "NVD Drupal",
+        "replacement_sources": [
+          "Drupal Security Advisories RSS",
+          "OSV Drupal"
+        ]
+      },
+      {
+        "system_id": "esbuild",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV esbuild"
+        ]
+      },
+      {
+        "system_id": "esbuild",
+        "retired_source": "NVD esbuild",
+        "replacement_sources": [
+          "OSV esbuild"
+        ]
+      },
+      {
+        "system_id": "express",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Express"
+        ]
+      },
+      {
+        "system_id": "express",
+        "retired_source": "NVD Express.js",
+        "replacement_sources": [
+          "OSV Express"
+        ]
+      },
+      {
+        "system_id": "fastify",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Fastify"
+        ]
+      },
+      {
+        "system_id": "flask",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Flask"
+        ]
+      },
+      {
+        "system_id": "ghost",
+        "retired_source": "NVD Ghost",
+        "replacement_sources": [
+          "Ghost GitHub Advisories",
+          "OSV Ghost"
+        ]
+      },
+      {
+        "system_id": "gitea",
+        "retired_source": "GitHub Gitea Advisories",
+        "replacement_sources": [
+          "OSV Gitea"
+        ]
+      },
+      {
+        "system_id": "gitlab-ce",
+        "retired_source": "GitLab Security Releases",
+        "replacement_sources": [
+          "GitLab Security Releases Atom"
+        ]
+      },
+      {
+        "system_id": "gitlab-ce",
+        "retired_source": "NVD GitLab",
+        "replacement_sources": [
+          "GitLab Security Releases",
+          "GitLab Security Releases Atom"
+        ]
+      },
+      {
+        "system_id": "hapi",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Hapi"
+        ]
+      },
+      {
+        "system_id": "haproxy",
+        "retired_source": "HAProxy Security Advisories",
+        "replacement_sources": [
+          "HAProxy Blog Feed"
+        ]
+      },
+      {
+        "system_id": "haproxy",
+        "retired_source": "NVD HAProxy",
+        "replacement_sources": [
+          "HAProxy Blog Feed"
+        ]
+      },
+      {
+        "system_id": "jenkins",
+        "retired_source": "Jenkins Security Advisories",
+        "replacement_sources": [
+          "Jenkins Security Advisories RSS"
+        ]
+      },
+      {
+        "system_id": "jenkins",
+        "retired_source": "NVD Jenkins",
+        "replacement_sources": [
+          "Jenkins Security Advisories",
+          "Jenkins Security Advisories RSS"
+        ]
+      },
+      {
+        "system_id": "joomla",
+        "retired_source": "NVD Joomla",
+        "replacement_sources": [
+          "Joomla Security Centre",
+          "OSV Joomla"
+        ]
+      },
+      {
+        "system_id": "kibana",
+        "retired_source": "Elastic Security Announcements RSS",
+        "replacement_sources": [
+          "Elastic Product Security",
+          "NVD Kibana"
+        ]
+      },
+      {
+        "system_id": "koa",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Koa"
+        ]
+      },
+      {
+        "system_id": "laravel",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Laravel"
+        ]
+      },
+      {
+        "system_id": "magento-open-source",
+        "retired_source": "NVD Magento",
+        "replacement_sources": [
+          "Magento GitHub Advisories",
+          "OSV Magento Open Source"
+        ]
+      },
+      {
+        "system_id": "mattermost",
+        "retired_source": "Mattermost Security Updates",
+        "replacement_sources": [
+          "NVD Mattermost"
+        ]
+      },
+      {
+        "system_id": "mattermost",
+        "retired_source": "NVD Mattermost",
+        "replacement_sources": [
+          "Mattermost Security Updates JSON",
+          "OSV Mattermost"
+        ]
+      },
+      {
+        "system_id": "mediawiki",
+        "retired_source": "MediaWiki Security Releases",
+        "replacement_sources": [
+          "MediaWiki Announce RSS",
+          "NVD MediaWiki"
+        ]
+      },
+      {
+        "system_id": "mediawiki",
+        "retired_source": "NVD MediaWiki",
+        "replacement_sources": [
+          "MediaWiki Announce RSS",
+          "OSV MediaWiki"
+        ]
+      },
+      {
+        "system_id": "medusa",
+        "retired_source": "GitHub Medusa Advisories",
+        "replacement_sources": [
+          "OSV Medusa"
+        ]
+      },
+      {
+        "system_id": "moodle",
+        "retired_source": "Moodle Security News",
+        "replacement_sources": [
+          "NVD Moodle"
+        ]
+      },
+      {
+        "system_id": "moodle",
+        "retired_source": "NVD Moodle",
+        "replacement_sources": [
+          "OSV Moodle"
+        ]
+      },
+      {
+        "system_id": "nestjs",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV NestJS"
+        ]
+      },
+      {
+        "system_id": "nestjs",
+        "retired_source": "NVD NestJS",
+        "replacement_sources": [
+          "OSV NestJS"
+        ]
+      },
+      {
+        "system_id": "nextjs",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "GitHub Next.js Advisories",
+          "OSV Next.js"
+        ]
+      },
+      {
+        "system_id": "nextjs",
+        "retired_source": "GitHub Next.js Advisories",
+        "replacement_sources": [
+          "OSV Next.js"
+        ]
+      },
+      {
+        "system_id": "nginx",
+        "retired_source": "NVD NGINX",
+        "replacement_sources": [
+          "NGINX Security Advisories",
+          "CISA KEV NGINX"
+        ]
+      },
+      {
+        "system_id": "nuxt",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "Nuxt Security",
+          "OSV Nuxt"
+        ]
+      },
+      {
+        "system_id": "nuxt",
+        "retired_source": "Nuxt Security",
+        "replacement_sources": [
+          "OSV Nuxt"
+        ]
+      },
+      {
+        "system_id": "opencart",
+        "retired_source": "NVD OpenCart",
+        "replacement_sources": [
+          "OpenCart Releases",
+          "OSV OpenCart"
+        ]
+      },
+      {
+        "system_id": "openmage",
+        "retired_source": "NVD OpenMage",
+        "replacement_sources": [
+          "OpenMage GitHub Advisories",
+          "OSV OpenMage"
+        ]
+      },
+      {
+        "system_id": "phpmyadmin",
+        "retired_source": "NVD phpMyAdmin",
+        "replacement_sources": [
+          "phpMyAdmin Security Page",
+          "OSV phpMyAdmin"
+        ]
+      },
+      {
+        "system_id": "prestashop",
+        "retired_source": "NVD PrestaShop",
+        "replacement_sources": [
+          "PrestaShop Security Page",
+          "GitHub PrestaShop Advisories",
+          "OSV PrestaShop"
+        ]
+      },
+      {
+        "system_id": "rails",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Rails"
+        ]
+      },
+      {
+        "system_id": "rails",
+        "retired_source": "NVD Ruby on Rails",
+        "replacement_sources": [
+          "OSV Rails"
+        ]
+      },
+      {
+        "system_id": "react",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "GitHub React Advisories",
+          "OSV React"
+        ]
+      },
+      {
+        "system_id": "react",
+        "retired_source": "GitHub React Advisories",
+        "replacement_sources": [
+          "OSV React"
+        ]
+      },
+      {
+        "system_id": "redmine",
+        "retired_source": "NVD Redmine",
+        "replacement_sources": [
+          "Redmine Security Advisories"
+        ]
+      },
+      {
+        "system_id": "saleor",
+        "retired_source": "NVD Saleor",
+        "replacement_sources": [
+          "GitHub Saleor Advisories",
+          "OSV Saleor"
+        ]
+      },
+      {
+        "system_id": "shopware",
+        "retired_source": "NVD Shopware",
+        "replacement_sources": [
+          "Shopware Security Advisories",
+          "OSV Shopware"
+        ]
+      },
+      {
+        "system_id": "spring-boot",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "Spring Security Advisories",
+          "OSV Spring Boot"
+        ]
+      },
+      {
+        "system_id": "spring-framework",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "Spring Security Advisories",
+          "OSV Spring Framework"
+        ]
+      },
+      {
+        "system_id": "spring-security",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "Spring Security Advisories",
+          "OSV Spring Security"
+        ]
+      },
+      {
+        "system_id": "sveltekit",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV SvelteKit"
+        ]
+      },
+      {
+        "system_id": "symfony",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Symfony"
+        ]
+      },
+      {
+        "system_id": "traefik",
+        "retired_source": "GitHub Traefik Advisories",
+        "replacement_sources": [
+          "OSV Traefik"
+        ]
+      },
+      {
+        "system_id": "undici",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Undici"
+        ]
+      },
+      {
+        "system_id": "undici",
+        "retired_source": "NVD Undici",
+        "replacement_sources": [
+          "OSV Undici"
+        ]
+      },
+      {
+        "system_id": "vite",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "Vite Security",
+          "OSV Vite"
+        ]
+      },
+      {
+        "system_id": "vite",
+        "retired_source": "Vite Security",
+        "replacement_sources": [
+          "OSV Vite"
+        ]
+      },
+      {
+        "system_id": "vue",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "Vue Security",
+          "OSV Vue"
+        ]
+      },
+      {
+        "system_id": "vue",
+        "retired_source": "Vue Security",
+        "replacement_sources": [
+          "OSV Vue"
+        ]
+      },
+      {
+        "system_id": "webpack",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV webpack"
+        ]
+      },
+      {
+        "system_id": "webpack",
+        "retired_source": "NVD webpack",
+        "replacement_sources": [
+          "OSV webpack"
+        ]
+      },
+      {
+        "system_id": "werkzeug",
+        "retired_source": "GitHub Global Advisories",
+        "replacement_sources": [
+          "OSV Werkzeug"
+        ]
+      },
+      {
+        "system_id": "woocommerce",
+        "retired_source": "NVD WooCommerce",
+        "replacement_sources": [
+          "Woo Developer Advisories",
+          "GitHub WooCommerce Advisories",
+          "OSV WooCommerce"
+        ]
+      },
+      {
+        "system_id": "wordpress",
+        "retired_source": "NVD WordPress",
+        "replacement_sources": [
+          "WordPress Security News RSS",
+          "Wordfence Vulnerability Database",
+          "WPScan Vulnerability Database"
+        ]
+      }
+    ]
+  },
+  "source_health": {
+    "generated_at": "2026-03-29T10:50:39+00:00",
+    "active_source_count": 102,
+    "green_source_count": 102,
+    "failure_count": 0,
+    "all_green": true,
+    "last_fully_green_run": "2026-03-29T10:50:39+00:00",
+    "retries_performed": 0,
+    "probes": [
+      {
+        "system_id": "adminer",
+        "source_name": "OSV Adminer",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.767,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "adobe-commerce",
+        "source_name": "Adobe Magento Security Index",
+        "source_kind": "vendor-index",
+        "elapsed_seconds": 0.017,
+        "kind": "vendor-index",
+        "items_seen": 46
+      },
+      {
+        "system_id": "angular",
+        "source_name": "OSV Angular",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.665,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "apache-httpd",
+        "source_name": "Apache HTTPD Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.872,
+        "kind": "html-links",
+        "items_seen": 182
+      },
+      {
+        "system_id": "apache-httpd",
+        "source_name": "CISA KEV Apache HTTPD",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.032,
+        "kind": "kev-json",
+        "items_seen": 1554
+      },
+      {
+        "system_id": "apache-tomcat",
+        "source_name": "Apache Tomcat Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.892,
+        "kind": "html-links",
+        "items_seen": 270
+      },
+      {
+        "system_id": "apache-tomcat",
+        "source_name": "CISA KEV Tomcat",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.032,
+        "kind": "kev-json",
+        "items_seen": 1554
+      },
+      {
+        "system_id": "aspnet-core",
+        "source_name": "OSV ASP.NET Core",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.695,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "astro",
+        "source_name": "OSV Astro",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.634,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "caddy",
+        "source_name": "OSV Caddy",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.441,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "directus",
+        "source_name": "Directus GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.021,
+        "kind": "html-links",
+        "items_seen": 127
+      },
+      {
+        "system_id": "directus",
+        "source_name": "OSV Directus",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.736,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "discourse",
+        "source_name": "Discourse Release Notes RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.017,
+        "kind": "rss-feed",
+        "items_seen": 30
+      },
+      {
+        "system_id": "discourse",
+        "source_name": "Discourse Security RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.017,
+        "kind": "rss-feed",
+        "items_seen": 3
+      },
+      {
+        "system_id": "discourse",
+        "source_name": "OSV Discourse",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.509,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "django",
+        "source_name": "Django Security Releases Archive",
+        "source_kind": "vendor-index",
+        "elapsed_seconds": 2.61,
+        "kind": "vendor-index",
+        "items_seen": 1276
+      },
+      {
+        "system_id": "django",
+        "source_name": "Django Security Weblog",
+        "source_kind": "vendor-index",
+        "elapsed_seconds": 2.599,
+        "kind": "vendor-index",
+        "items_seen": 332
+      },
+      {
+        "system_id": "django",
+        "source_name": "OSV Django",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.634,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "drupal",
+        "source_name": "Drupal Security Advisories RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 1.184,
+        "kind": "rss-feed",
+        "items_seen": 20
+      },
+      {
+        "system_id": "drupal",
+        "source_name": "OSV Drupal",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.424,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "echo",
+        "source_name": "OSV Echo",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.917,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "esbuild",
+        "source_name": "OSV esbuild",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.596,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "express",
+        "source_name": "OSV Express",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.685,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "fastify",
+        "source_name": "OSV Fastify",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.872,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "flask",
+        "source_name": "OSV Flask",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.695,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "ghost",
+        "source_name": "Ghost GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.148,
+        "kind": "html-links",
+        "items_seen": 119
+      },
+      {
+        "system_id": "ghost",
+        "source_name": "OSV Ghost",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.516,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "gin",
+        "source_name": "OSV Gin",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.695,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "gitea",
+        "source_name": "OSV Gitea",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.833,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "gitlab-ce",
+        "source_name": "GitLab Advisory Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.69,
+        "kind": "html-links",
+        "items_seen": 5
+      },
+      {
+        "system_id": "gitlab-ce",
+        "source_name": "GitLab Security Releases Atom",
+        "source_kind": "atom-feed",
+        "elapsed_seconds": 3.69,
+        "kind": "atom-feed",
+        "items_seen": 187
+      },
+      {
+        "system_id": "grafana",
+        "source_name": "CISA KEV Grafana",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.032,
+        "kind": "kev-json",
+        "items_seen": 1554
+      },
+      {
+        "system_id": "grafana",
+        "source_name": "Grafana Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.69,
+        "kind": "html-links",
+        "items_seen": 159
+      },
+      {
+        "system_id": "hapi",
+        "source_name": "OSV Hapi",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.872,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "haproxy",
+        "source_name": "HAProxy Blog Feed",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 3.596,
+        "kind": "rss-feed",
+        "items_seen": 10
+      },
+      {
+        "system_id": "jenkins",
+        "source_name": "Jenkins Security Advisories RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 3.69,
+        "kind": "rss-feed",
+        "items_seen": 96
+      },
+      {
+        "system_id": "joomla",
+        "source_name": "Joomla Security Centre",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.227,
+        "kind": "html-links",
+        "items_seen": 139
+      },
+      {
+        "system_id": "joomla",
+        "source_name": "OSV Joomla",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.514,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "kibana",
+        "source_name": "Elastic Product Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.695,
+        "kind": "html-links",
+        "items_seen": 66
+      },
+      {
+        "system_id": "kibana",
+        "source_name": "NVD Kibana",
+        "source_kind": "nvd-search",
+        "elapsed_seconds": 5.353,
+        "kind": "nvd-search",
+        "items_seen": 1
+      },
+      {
+        "system_id": "koa",
+        "source_name": "OSV Koa",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.892,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "laravel",
+        "source_name": "OSV Laravel",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.918,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "magento-open-source",
+        "source_name": "Magento GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.01,
+        "kind": "html-links",
+        "items_seen": 99
+      },
+      {
+        "system_id": "magento-open-source",
+        "source_name": "OSV Magento Open Source",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.567,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "magento-open-source",
+        "source_name": "Sansec Research",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.01,
+        "kind": "html-links",
+        "items_seen": 135
+      },
+      {
+        "system_id": "mattermost",
+        "source_name": "Mattermost Security Updates JSON",
+        "source_kind": "json-feed",
+        "elapsed_seconds": 3.695,
+        "kind": "json-feed",
+        "items_seen": 594
+      },
+      {
+        "system_id": "mattermost",
+        "source_name": "OSV Mattermost",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.563,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "mediawiki",
+        "source_name": "MediaWiki Announce RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.02,
+        "kind": "rss-feed",
+        "items_seen": 30
+      },
+      {
+        "system_id": "mediawiki",
+        "source_name": "OSV MediaWiki",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.658,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "medusa",
+        "source_name": "OSV Medusa",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.546,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "moodle",
+        "source_name": "OSV Moodle",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.03,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "nestjs",
+        "source_name": "OSV NestJS",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.672,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "nextjs",
+        "source_name": "OSV Next.js",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.599,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "nginx",
+        "source_name": "CISA KEV NGINX",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.037,
+        "kind": "kev-json",
+        "items_seen": 1554
+      },
+      {
+        "system_id": "nginx",
+        "source_name": "NGINX Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.872,
+        "kind": "html-links",
+        "items_seen": 150
+      },
+      {
+        "system_id": "nodejs",
+        "source_name": "CISA KEV Node.js",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.032,
+        "kind": "kev-json",
+        "items_seen": 1554
+      },
+      {
+        "system_id": "nodejs",
+        "source_name": "Node.js Security Releases",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.835,
+        "kind": "html-links",
+        "items_seen": 74
+      },
+      {
+        "system_id": "nuxt",
+        "source_name": "OSV Nuxt",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.546,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "opencart",
+        "source_name": "OSV OpenCart",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.422,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "opencart",
+        "source_name": "OpenCart Releases",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.126,
+        "kind": "html-links",
+        "items_seen": 1500
+      },
+      {
+        "system_id": "openmage",
+        "source_name": "OSV OpenMage",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.691,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "openmage",
+        "source_name": "OpenMage GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.008,
+        "kind": "html-links",
+        "items_seen": 125
+      },
+      {
+        "system_id": "phpmyadmin",
+        "source_name": "OSV phpMyAdmin",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.189,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "phpmyadmin",
+        "source_name": "phpMyAdmin Security Page",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.596,
+        "kind": "html-links",
+        "items_seen": 263
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "Friends Of Presta Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.004,
+        "kind": "html-links",
+        "items_seen": 38
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "GitHub PrestaShop Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.003,
+        "kind": "html-links",
+        "items_seen": 127
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "OSV PrestaShop",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.544,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "PrestaShop Security Page",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.003,
+        "kind": "html-links",
+        "items_seen": 60
+      },
+      {
+        "system_id": "rails",
+        "source_name": "OSV Rails",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.738,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "react",
+        "source_name": "OSV React",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.546,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "redmine",
+        "source_name": "OSV Redmine",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.651,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "redmine",
+        "source_name": "Redmine Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.695,
+        "kind": "html-links",
+        "items_seen": 371
+      },
+      {
+        "system_id": "saleor",
+        "source_name": "GitHub Saleor Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.161,
+        "kind": "html-links",
+        "items_seen": 120
+      },
+      {
+        "system_id": "saleor",
+        "source_name": "OSV Saleor",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.344,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "shopware",
+        "source_name": "OSV Shopware",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.716,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "shopware",
+        "source_name": "Shopware Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.004,
+        "kind": "html-links",
+        "items_seen": 129
+      },
+      {
+        "system_id": "spring-boot",
+        "source_name": "OSV Spring Boot",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.632,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "spring-boot",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.546,
+        "kind": "html-links",
+        "items_seen": 118
+      },
+      {
+        "system_id": "spring-framework",
+        "source_name": "OSV Spring Framework",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.691,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "spring-framework",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.422,
+        "kind": "html-links",
+        "items_seen": 118
+      },
+      {
+        "system_id": "spring-security",
+        "source_name": "OSV Spring Security",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.596,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "spring-security",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.546,
+        "kind": "html-links",
+        "items_seen": 118
+      },
+      {
+        "system_id": "strapi",
+        "source_name": "OSV Strapi",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.635,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "strapi",
+        "source_name": "Strapi GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.186,
+        "kind": "html-links",
+        "items_seen": 124
+      },
+      {
+        "system_id": "sveltekit",
+        "source_name": "OSV SvelteKit",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.629,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "symfony",
+        "source_name": "OSV Symfony",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.117,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "traefik",
+        "source_name": "OSV Traefik",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.791,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "undici",
+        "source_name": "OSV Undici",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.596,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "vite",
+        "source_name": "OSV Vite",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.546,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "vue",
+        "source_name": "OSV Vue",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.672,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "webpack",
+        "source_name": "OSV webpack",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.398,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "werkzeug",
+        "source_name": "OSV Werkzeug",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.71,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "GitHub WooCommerce Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.005,
+        "kind": "html-links",
+        "items_seen": 107
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "OSV WooCommerce",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 1.361,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "Patchstack Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.005,
+        "kind": "html-links",
+        "items_seen": 193
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "Woo Developer Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.008,
+        "kind": "html-links",
+        "items_seen": 121
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "Wordfence Vulnerability Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.0,
+        "kind": "html-links",
+        "items_seen": 0
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "Patchstack Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.024,
+        "kind": "html-links",
+        "items_seen": 193
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "PortSwigger Research",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.857,
+        "kind": "html-links",
+        "items_seen": 99
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "WPScan Vulnerability Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.405,
+        "kind": "html-links",
+        "items_seen": 74
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "WordPress Security News RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 1.687,
+        "kind": "rss-feed",
+        "items_seen": 10
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "Wordfence Vulnerability Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.024,
+        "kind": "html-links",
+        "items_seen": 0
+      }
+    ],
+    "failures": [],
+    "slow_sources": [
+      {
+        "system_id": "mattermost",
+        "source_name": "OSV Mattermost",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.563,
+        "status": "ok"
+      },
+      {
+        "system_id": "kibana",
+        "source_name": "NVD Kibana",
+        "source_kind": "nvd-search",
+        "elapsed_seconds": 5.353,
+        "status": "ok"
+      },
+      {
+        "system_id": "phpmyadmin",
+        "source_name": "OSV phpMyAdmin",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.189,
+        "status": "ok"
+      },
+      {
+        "system_id": "moodle",
+        "source_name": "OSV Moodle",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.03,
+        "status": "ok"
+      },
+      {
+        "system_id": "gitea",
+        "source_name": "OSV Gitea",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.833,
+        "status": "ok"
+      },
+      {
+        "system_id": "traefik",
+        "source_name": "OSV Traefik",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.791,
+        "status": "ok"
+      },
+      {
+        "system_id": "adminer",
+        "source_name": "OSV Adminer",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.767,
+        "status": "ok"
+      },
+      {
+        "system_id": "redmine",
+        "source_name": "OSV Redmine",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.651,
+        "status": "ok"
+      },
+      {
+        "system_id": "django",
+        "source_name": "OSV Django",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.634,
+        "status": "ok"
+      },
+      {
+        "system_id": "caddy",
+        "source_name": "OSV Caddy",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.441,
+        "status": "ok"
+      }
+    ],
+    "systems": [
+      {
+        "system_id": "adminer",
+        "display_name": "Adminer",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "angular",
+        "display_name": "Angular",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "apache-httpd",
+        "display_name": "Apache HTTP Server",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "apache-tomcat",
+        "display_name": "Apache Tomcat",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "aspnet-core",
+        "display_name": "ASP.NET Core",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "astro",
+        "display_name": "Astro",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "caddy",
+        "display_name": "Caddy",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "directus",
+        "display_name": "Directus",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "discourse",
+        "display_name": "Discourse",
+        "active_source_total": 3,
+        "green_source_total": 3,
+        "failure_count": 0
+      },
+      {
+        "system_id": "django",
+        "display_name": "Django",
+        "active_source_total": 3,
+        "green_source_total": 3,
+        "failure_count": 0
+      },
+      {
+        "system_id": "drupal",
+        "display_name": "Drupal",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "echo",
+        "display_name": "Echo",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "esbuild",
+        "display_name": "esbuild",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "express",
+        "display_name": "Express",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "fastify",
+        "display_name": "Fastify",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "flask",
+        "display_name": "Flask",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "ghost",
+        "display_name": "Ghost",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "gin",
+        "display_name": "Gin",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "gitea",
+        "display_name": "Gitea",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "gitlab-ce",
+        "display_name": "GitLab CE",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "grafana",
+        "display_name": "Grafana",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "hapi",
+        "display_name": "Hapi",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "haproxy",
+        "display_name": "HAProxy",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "jenkins",
+        "display_name": "Jenkins",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "joomla",
+        "display_name": "Joomla",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "kibana",
+        "display_name": "Kibana",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "koa",
+        "display_name": "Koa",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "laravel",
+        "display_name": "Laravel",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "magento-open-source",
+        "display_name": "Magento Open Source",
+        "active_source_total": 3,
+        "green_source_total": 3,
+        "failure_count": 0
+      },
+      {
+        "system_id": "mattermost",
+        "display_name": "Mattermost",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "mediawiki",
+        "display_name": "MediaWiki",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "medusa",
+        "display_name": "Medusa",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "moodle",
+        "display_name": "Moodle",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "nestjs",
+        "display_name": "NestJS",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "nextjs",
+        "display_name": "Next.js",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "nginx",
+        "display_name": "Nginx",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "nodejs",
+        "display_name": "Node.js",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "nuxt",
+        "display_name": "Nuxt",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "opencart",
+        "display_name": "OpenCart",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "openmage",
+        "display_name": "OpenMage / Mage-OS",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "phpmyadmin",
+        "display_name": "phpMyAdmin",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "prestashop",
+        "display_name": "PrestaShop",
+        "active_source_total": 4,
+        "green_source_total": 4,
+        "failure_count": 0
+      },
+      {
+        "system_id": "rails",
+        "display_name": "Ruby on Rails",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "react",
+        "display_name": "React",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "redmine",
+        "display_name": "Redmine",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "saleor",
+        "display_name": "Saleor",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "shopware",
+        "display_name": "Shopware",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "spring-boot",
+        "display_name": "Spring Boot",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "spring-framework",
+        "display_name": "Spring Framework",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "spring-security",
+        "display_name": "Spring Security",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "strapi",
+        "display_name": "Strapi",
+        "active_source_total": 2,
+        "green_source_total": 2,
+        "failure_count": 0
+      },
+      {
+        "system_id": "sveltekit",
+        "display_name": "SvelteKit",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "symfony",
+        "display_name": "Symfony",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "traefik",
+        "display_name": "Traefik",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "undici",
+        "display_name": "Undici",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "vite",
+        "display_name": "Vite",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "vue",
+        "display_name": "Vue",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "webpack",
+        "display_name": "webpack",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "werkzeug",
+        "display_name": "Werkzeug",
+        "active_source_total": 1,
+        "green_source_total": 1,
+        "failure_count": 0
+      },
+      {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "active_source_total": 5,
+        "green_source_total": 5,
+        "failure_count": 0
+      },
+      {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "active_source_total": 5,
+        "green_source_total": 5,
+        "failure_count": 0
+      }
+    ]
+  },
+  "alerts": [
+    {
+      "alert_id": "adminer::OSV Adminer",
+      "system_id": "adminer",
+      "display_name": "Adminer",
+      "source_name": "OSV Adminer",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "adminer",
+        "display_name": "Adminer",
+        "source_name": "OSV Adminer",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "adminer::OSV Adminer::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "adobe-commerce::Adobe Magento Security Index",
+      "system_id": "adobe-commerce",
+      "display_name": "Adobe Commerce",
+      "source_name": "Adobe Magento Security Index",
+      "source_kind": "vendor-index",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "source_name": "Adobe Magento Security Index",
+        "source_kind": "vendor-index",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='helpx.adobe.com', port=443): Max retries exceeded with url: /security/products/magento.html (Caused by NameResolutionError(\"HTTPSConnection(host='helpx.adobe.com', port=443): Failed to resolve 'helpx.adobe.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://helpx.adobe.com/security/products/magento.html",
+        "summary": "adobe-commerce::Adobe Magento Security Index::network::HTTPSConnectionPool(host='helpx.adobe.com', port=443): Max retries exceeded with url: /security/products/magento.html (Caused by NameResolutionError(\"HTTPSConnection(host='helpx.adobe.com', port=443): Failed to resolve 'helpx.adobe.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "angular::OSV Angular",
+      "system_id": "angular",
+      "display_name": "Angular",
+      "source_name": "OSV Angular",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "angular",
+        "display_name": "Angular",
+        "source_name": "OSV Angular",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "angular::OSV Angular::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "apache-httpd::Apache HTTPD Security",
+      "system_id": "apache-httpd",
+      "display_name": "Apache HTTP Server",
+      "source_name": "Apache HTTPD Security",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "apache-httpd",
+        "display_name": "Apache HTTP Server",
+        "source_name": "Apache HTTPD Security",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='httpd.apache.org', port=443): Max retries exceeded with url: /security/vulnerabilities_24.html (Caused by NameResolutionError(\"HTTPSConnection(host='httpd.apache.org', port=443): Failed to resolve 'httpd.apache.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://httpd.apache.org/security/vulnerabilities_24.html",
+        "summary": "apache-httpd::Apache HTTPD Security::network::HTTPSConnectionPool(host='httpd.apache.org', port=443): Max retries exceeded with url: /security/vulnerabilities_24.html (Caused by NameResolutionError(\"HTTPSConnection(host='httpd.apache.org', port=443): Failed to resolve 'httpd.apache.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "apache-httpd::CISA KEV Apache HTTPD",
+      "system_id": "apache-httpd",
+      "display_name": "Apache HTTP Server",
+      "source_name": "CISA KEV Apache HTTPD",
+      "source_kind": "kev-json",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "apache-httpd",
+        "display_name": "Apache HTTP Server",
+        "source_name": "CISA KEV Apache HTTPD",
+        "source_kind": "kev-json",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "summary": "apache-httpd::CISA KEV Apache HTTPD::network::HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "apache-tomcat::Apache Tomcat Security",
+      "system_id": "apache-tomcat",
+      "display_name": "Apache Tomcat",
+      "source_name": "Apache Tomcat Security",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "apache-tomcat",
+        "display_name": "Apache Tomcat",
+        "source_name": "Apache Tomcat Security",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='tomcat.apache.org', port=443): Max retries exceeded with url: /security-10.html (Caused by NameResolutionError(\"HTTPSConnection(host='tomcat.apache.org', port=443): Failed to resolve 'tomcat.apache.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://tomcat.apache.org/security-10.html",
+        "summary": "apache-tomcat::Apache Tomcat Security::network::HTTPSConnectionPool(host='tomcat.apache.org', port=443): Max retries exceeded with url: /security-10.html (Caused by NameResolutionError(\"HTTPSConnection(host='tomcat.apache.org', port=443): Failed to resolve 'tomcat.apache.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "apache-tomcat::CISA KEV Tomcat",
+      "system_id": "apache-tomcat",
+      "display_name": "Apache Tomcat",
+      "source_name": "CISA KEV Tomcat",
+      "source_kind": "kev-json",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "apache-tomcat",
+        "display_name": "Apache Tomcat",
+        "source_name": "CISA KEV Tomcat",
+        "source_kind": "kev-json",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "summary": "apache-tomcat::CISA KEV Tomcat::network::HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "aspnet-core::OSV ASP.NET Core",
+      "system_id": "aspnet-core",
+      "display_name": "ASP.NET Core",
+      "source_name": "OSV ASP.NET Core",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "aspnet-core",
+        "display_name": "ASP.NET Core",
+        "source_name": "OSV ASP.NET Core",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "aspnet-core::OSV ASP.NET Core::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "astro::OSV Astro",
+      "system_id": "astro",
+      "display_name": "Astro",
+      "source_name": "OSV Astro",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "astro",
+        "display_name": "Astro",
+        "source_name": "OSV Astro",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "astro::OSV Astro::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "caddy::OSV Caddy",
+      "system_id": "caddy",
+      "display_name": "Caddy",
+      "source_name": "OSV Caddy",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "caddy",
+        "display_name": "Caddy",
+        "source_name": "OSV Caddy",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "caddy::OSV Caddy::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "directus::Directus GitHub Advisories",
+      "system_id": "directus",
+      "display_name": "Directus",
+      "source_name": "Directus GitHub Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "directus",
+        "display_name": "Directus",
+        "source_name": "Directus GitHub Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /directus/directus/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/directus/directus/security/advisories",
+        "summary": "directus::Directus GitHub Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /directus/directus/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "directus::OSV Directus",
+      "system_id": "directus",
+      "display_name": "Directus",
+      "source_name": "OSV Directus",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "directus",
+        "display_name": "Directus",
+        "source_name": "OSV Directus",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "directus::OSV Directus::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "discourse::Discourse Release Notes RSS",
+      "system_id": "discourse",
+      "display_name": "Discourse",
+      "source_name": "Discourse Release Notes RSS",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "discourse",
+        "display_name": "Discourse",
+        "source_name": "Discourse Release Notes RSS",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='meta.discourse.org', port=443): Max retries exceeded with url: /tag/release-notes.rss (Caused by NameResolutionError(\"HTTPSConnection(host='meta.discourse.org', port=443): Failed to resolve 'meta.discourse.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://meta.discourse.org/tag/release-notes.rss",
+        "summary": "discourse::Discourse Release Notes RSS::network::HTTPSConnectionPool(host='meta.discourse.org', port=443): Max retries exceeded with url: /tag/release-notes.rss (Caused by NameResolutionError(\"HTTPSConnection(host='meta.discourse.org', port=443): Failed to resolve 'meta.discourse.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "discourse::Discourse Security RSS",
+      "system_id": "discourse",
+      "display_name": "Discourse",
+      "source_name": "Discourse Security RSS",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "discourse",
+        "display_name": "Discourse",
+        "source_name": "Discourse Security RSS",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='meta.discourse.org', port=443): Max retries exceeded with url: /tag/security.rss (Caused by NameResolutionError(\"HTTPSConnection(host='meta.discourse.org', port=443): Failed to resolve 'meta.discourse.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://meta.discourse.org/tag/security.rss",
+        "summary": "discourse::Discourse Security RSS::network::HTTPSConnectionPool(host='meta.discourse.org', port=443): Max retries exceeded with url: /tag/security.rss (Caused by NameResolutionError(\"HTTPSConnection(host='meta.discourse.org', port=443): Failed to resolve 'meta.discourse.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "discourse::OSV Discourse",
+      "system_id": "discourse",
+      "display_name": "Discourse",
+      "source_name": "OSV Discourse",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "discourse",
+        "display_name": "Discourse",
+        "source_name": "OSV Discourse",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "discourse::OSV Discourse::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "django::Django Security Releases Archive",
+      "system_id": "django",
+      "display_name": "Django",
+      "source_name": "Django Security Releases Archive",
+      "source_kind": "vendor-index",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "django",
+        "display_name": "Django",
+        "source_name": "Django Security Releases Archive",
+        "source_kind": "vendor-index",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='docs.djangoproject.com', port=443): Max retries exceeded with url: /en/dev/releases/security/ (Caused by NameResolutionError(\"HTTPSConnection(host='docs.djangoproject.com', port=443): Failed to resolve 'docs.djangoproject.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://docs.djangoproject.com/en/dev/releases/security/",
+        "summary": "django::Django Security Releases Archive::network::HTTPSConnectionPool(host='docs.djangoproject.com', port=443): Max retries exceeded with url: /en/dev/releases/security/ (Caused by NameResolutionError(\"HTTPSConnection(host='docs.djangoproject.com', port=443): Failed to resolve 'docs.djangoproject.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "django::Django Security Weblog",
+      "system_id": "django",
+      "display_name": "Django",
+      "source_name": "Django Security Weblog",
+      "source_kind": "vendor-index",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "django",
+        "display_name": "Django",
+        "source_name": "Django Security Weblog",
+        "source_kind": "vendor-index",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.djangoproject.com', port=443): Max retries exceeded with url: /weblog/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.djangoproject.com', port=443): Failed to resolve 'www.djangoproject.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.djangoproject.com/weblog/",
+        "summary": "django::Django Security Weblog::network::HTTPSConnectionPool(host='www.djangoproject.com', port=443): Max retries exceeded with url: /weblog/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.djangoproject.com', port=443): Failed to resolve 'www.djangoproject.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "django::OSV Django",
+      "system_id": "django",
+      "display_name": "Django",
+      "source_name": "OSV Django",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "django",
+        "display_name": "Django",
+        "source_name": "OSV Django",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "django::OSV Django::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "drupal::Drupal Security Advisories RSS",
+      "system_id": "drupal",
+      "display_name": "Drupal",
+      "source_name": "Drupal Security Advisories RSS",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "drupal",
+        "display_name": "Drupal",
+        "source_name": "Drupal Security Advisories RSS",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.drupal.org', port=443): Max retries exceeded with url: /security/rss.xml (Caused by NameResolutionError(\"HTTPSConnection(host='www.drupal.org', port=443): Failed to resolve 'www.drupal.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.drupal.org/security/rss.xml",
+        "summary": "drupal::Drupal Security Advisories RSS::network::HTTPSConnectionPool(host='www.drupal.org', port=443): Max retries exceeded with url: /security/rss.xml (Caused by NameResolutionError(\"HTTPSConnection(host='www.drupal.org', port=443): Failed to resolve 'www.drupal.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "drupal::OSV Drupal",
+      "system_id": "drupal",
+      "display_name": "Drupal",
+      "source_name": "OSV Drupal",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "drupal",
+        "display_name": "Drupal",
+        "source_name": "OSV Drupal",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "drupal::OSV Drupal::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "echo::OSV Echo",
+      "system_id": "echo",
+      "display_name": "Echo",
+      "source_name": "OSV Echo",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "echo",
+        "display_name": "Echo",
+        "source_name": "OSV Echo",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "echo::OSV Echo::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "esbuild::OSV esbuild",
+      "system_id": "esbuild",
+      "display_name": "esbuild",
+      "source_name": "OSV esbuild",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "esbuild",
+        "display_name": "esbuild",
+        "source_name": "OSV esbuild",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "esbuild::OSV esbuild::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "express::OSV Express",
+      "system_id": "express",
+      "display_name": "Express",
+      "source_name": "OSV Express",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "express",
+        "display_name": "Express",
+        "source_name": "OSV Express",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "express::OSV Express::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "fastify::OSV Fastify",
+      "system_id": "fastify",
+      "display_name": "Fastify",
+      "source_name": "OSV Fastify",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "fastify",
+        "display_name": "Fastify",
+        "source_name": "OSV Fastify",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "fastify::OSV Fastify::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "flask::OSV Flask",
+      "system_id": "flask",
+      "display_name": "Flask",
+      "source_name": "OSV Flask",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "flask",
+        "display_name": "Flask",
+        "source_name": "OSV Flask",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "flask::OSV Flask::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "ghost::Ghost GitHub Advisories",
+      "system_id": "ghost",
+      "display_name": "Ghost",
+      "source_name": "Ghost GitHub Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "ghost",
+        "display_name": "Ghost",
+        "source_name": "Ghost GitHub Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /TryGhost/Ghost/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/TryGhost/Ghost/security/advisories",
+        "summary": "ghost::Ghost GitHub Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /TryGhost/Ghost/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "ghost::OSV Ghost",
+      "system_id": "ghost",
+      "display_name": "Ghost",
+      "source_name": "OSV Ghost",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "ghost",
+        "display_name": "Ghost",
+        "source_name": "OSV Ghost",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "ghost::OSV Ghost::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "gin::OSV Gin",
+      "system_id": "gin",
+      "display_name": "Gin",
+      "source_name": "OSV Gin",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "gin",
+        "display_name": "Gin",
+        "source_name": "OSV Gin",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "gin::OSV Gin::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "gitea::OSV Gitea",
+      "system_id": "gitea",
+      "display_name": "Gitea",
+      "source_name": "OSV Gitea",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "gitea",
+        "display_name": "Gitea",
+        "source_name": "OSV Gitea",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "gitea::OSV Gitea::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "gitlab-ce::GitLab Advisory Database",
+      "system_id": "gitlab-ce",
+      "display_name": "GitLab CE",
+      "source_name": "GitLab Advisory Database",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "gitlab-ce",
+        "display_name": "GitLab CE",
+        "source_name": "GitLab Advisory Database",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='gitlab.com', port=443): Max retries exceeded with url: /gitlab-org/advisories-community (Caused by NameResolutionError(\"HTTPSConnection(host='gitlab.com', port=443): Failed to resolve 'gitlab.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://gitlab.com/gitlab-org/advisories-community",
+        "summary": "gitlab-ce::GitLab Advisory Database::network::HTTPSConnectionPool(host='gitlab.com', port=443): Max retries exceeded with url: /gitlab-org/advisories-community (Caused by NameResolutionError(\"HTTPSConnection(host='gitlab.com', port=443): Failed to resolve 'gitlab.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "gitlab-ce::GitLab Security Releases Atom",
+      "system_id": "gitlab-ce",
+      "display_name": "GitLab CE",
+      "source_name": "GitLab Security Releases Atom",
+      "source_kind": "atom-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "gitlab-ce",
+        "display_name": "GitLab CE",
+        "source_name": "GitLab Security Releases Atom",
+        "source_kind": "atom-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='about.gitlab.com', port=443): Max retries exceeded with url: /security-releases.xml (Caused by NameResolutionError(\"HTTPSConnection(host='about.gitlab.com', port=443): Failed to resolve 'about.gitlab.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://about.gitlab.com/security-releases.xml",
+        "summary": "gitlab-ce::GitLab Security Releases Atom::network::HTTPSConnectionPool(host='about.gitlab.com', port=443): Max retries exceeded with url: /security-releases.xml (Caused by NameResolutionError(\"HTTPSConnection(host='about.gitlab.com', port=443): Failed to resolve 'about.gitlab.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "grafana::CISA KEV Grafana",
+      "system_id": "grafana",
+      "display_name": "Grafana",
+      "source_name": "CISA KEV Grafana",
+      "source_kind": "kev-json",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "grafana",
+        "display_name": "Grafana",
+        "source_name": "CISA KEV Grafana",
+        "source_kind": "kev-json",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "summary": "grafana::CISA KEV Grafana::network::HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "grafana::Grafana Security Advisories",
+      "system_id": "grafana",
+      "display_name": "Grafana",
+      "source_name": "Grafana Security Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "grafana",
+        "display_name": "Grafana",
+        "source_name": "Grafana Security Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='grafana.com', port=443): Max retries exceeded with url: /security/security-advisories/ (Caused by NameResolutionError(\"HTTPSConnection(host='grafana.com', port=443): Failed to resolve 'grafana.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://grafana.com/security/security-advisories/",
+        "summary": "grafana::Grafana Security Advisories::network::HTTPSConnectionPool(host='grafana.com', port=443): Max retries exceeded with url: /security/security-advisories/ (Caused by NameResolutionError(\"HTTPSConnection(host='grafana.com', port=443): Failed to resolve 'grafana.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "hapi::OSV Hapi",
+      "system_id": "hapi",
+      "display_name": "Hapi",
+      "source_name": "OSV Hapi",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "hapi",
+        "display_name": "Hapi",
+        "source_name": "OSV Hapi",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "hapi::OSV Hapi::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "haproxy::HAProxy Blog Feed",
+      "system_id": "haproxy",
+      "display_name": "HAProxy",
+      "source_name": "HAProxy Blog Feed",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "haproxy",
+        "display_name": "HAProxy",
+        "source_name": "HAProxy Blog Feed",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.haproxy.com', port=443): Max retries exceeded with url: /feed/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.haproxy.com', port=443): Failed to resolve 'www.haproxy.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.haproxy.com/feed/",
+        "summary": "haproxy::HAProxy Blog Feed::network::HTTPSConnectionPool(host='www.haproxy.com', port=443): Max retries exceeded with url: /feed/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.haproxy.com', port=443): Failed to resolve 'www.haproxy.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "jenkins::Jenkins Security Advisories RSS",
+      "system_id": "jenkins",
+      "display_name": "Jenkins",
+      "source_name": "Jenkins Security Advisories RSS",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "jenkins",
+        "display_name": "Jenkins",
+        "source_name": "Jenkins Security Advisories RSS",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.jenkins.io', port=443): Max retries exceeded with url: /security/advisories/rss.xml (Caused by NameResolutionError(\"HTTPSConnection(host='www.jenkins.io', port=443): Failed to resolve 'www.jenkins.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.jenkins.io/security/advisories/rss.xml",
+        "summary": "jenkins::Jenkins Security Advisories RSS::network::HTTPSConnectionPool(host='www.jenkins.io', port=443): Max retries exceeded with url: /security/advisories/rss.xml (Caused by NameResolutionError(\"HTTPSConnection(host='www.jenkins.io', port=443): Failed to resolve 'www.jenkins.io' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "joomla::Joomla Security Centre",
+      "system_id": "joomla",
+      "display_name": "Joomla",
+      "source_name": "Joomla Security Centre",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "joomla",
+        "display_name": "Joomla",
+        "source_name": "Joomla Security Centre",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='developer.joomla.org', port=443): Max retries exceeded with url: /security-centre.html (Caused by NameResolutionError(\"HTTPSConnection(host='developer.joomla.org', port=443): Failed to resolve 'developer.joomla.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://developer.joomla.org/security-centre.html",
+        "summary": "joomla::Joomla Security Centre::network::HTTPSConnectionPool(host='developer.joomla.org', port=443): Max retries exceeded with url: /security-centre.html (Caused by NameResolutionError(\"HTTPSConnection(host='developer.joomla.org', port=443): Failed to resolve 'developer.joomla.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "joomla::OSV Joomla",
+      "system_id": "joomla",
+      "display_name": "Joomla",
+      "source_name": "OSV Joomla",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "joomla",
+        "display_name": "Joomla",
+        "source_name": "OSV Joomla",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "joomla::OSV Joomla::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "kibana::Elastic Security Announcements RSS",
+      "system_id": "kibana",
+      "display_name": "Kibana",
+      "source_name": "Elastic Security Announcements RSS",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:14:27+00:00",
+      "resolved_at": "2026-03-22T01:14:27+00:00",
+      "failure_streak": 2,
+      "last_category": "rate_limit",
+      "last_failure": {
+        "system_id": "kibana",
+        "display_name": "Kibana",
+        "source_name": "Elastic Security Announcements RSS",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "rate_limit",
+        "exception": "HTTPError",
+        "message": "429 Client Error: Too Many Requests for url: https://discuss.elastic.co/c/announcements/security-announcements/31.rss",
+        "status_code": 429,
+        "url": "https://discuss.elastic.co/c/announcements/security-announcements/31.rss",
+        "summary": "kibana::Elastic Security Announcements RSS::rate_limit::429 Client Error: Too Many Requests for url: https://discuss.elastic.co/c/announcements/security-announcements/31.rss",
+        "elapsed_seconds": 5.209
+      }
+    },
+    {
+      "alert_id": "koa::OSV Koa",
+      "system_id": "koa",
+      "display_name": "Koa",
+      "source_name": "OSV Koa",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "koa",
+        "display_name": "Koa",
+        "source_name": "OSV Koa",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "koa::OSV Koa::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "laravel::OSV Laravel",
+      "system_id": "laravel",
+      "display_name": "Laravel",
+      "source_name": "OSV Laravel",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "laravel",
+        "display_name": "Laravel",
+        "source_name": "OSV Laravel",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "laravel::OSV Laravel::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "magento-open-source::Magento GitHub Advisories",
+      "system_id": "magento-open-source",
+      "display_name": "Magento Open Source",
+      "source_name": "Magento GitHub Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "magento-open-source",
+        "display_name": "Magento Open Source",
+        "source_name": "Magento GitHub Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /magento/magento2/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/magento/magento2/security/advisories",
+        "summary": "magento-open-source::Magento GitHub Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /magento/magento2/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "magento-open-source::OSV Magento Open Source",
+      "system_id": "magento-open-source",
+      "display_name": "Magento Open Source",
+      "source_name": "OSV Magento Open Source",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "magento-open-source",
+        "display_name": "Magento Open Source",
+        "source_name": "OSV Magento Open Source",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "magento-open-source::OSV Magento Open Source::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "magento-open-source::Sansec Research",
+      "system_id": "magento-open-source",
+      "display_name": "Magento Open Source",
+      "source_name": "Sansec Research",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "magento-open-source",
+        "display_name": "Magento Open Source",
+        "source_name": "Sansec Research",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='sansec.io', port=443): Max retries exceeded with url: /research (Caused by NameResolutionError(\"HTTPSConnection(host='sansec.io', port=443): Failed to resolve 'sansec.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://sansec.io/research",
+        "summary": "magento-open-source::Sansec Research::network::HTTPSConnectionPool(host='sansec.io', port=443): Max retries exceeded with url: /research (Caused by NameResolutionError(\"HTTPSConnection(host='sansec.io', port=443): Failed to resolve 'sansec.io' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "mattermost::Mattermost Security Updates JSON",
+      "system_id": "mattermost",
+      "display_name": "Mattermost",
+      "source_name": "Mattermost Security Updates JSON",
+      "source_kind": "json-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "mattermost",
+        "display_name": "Mattermost",
+        "source_name": "Mattermost Security Updates JSON",
+        "source_kind": "json-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='securityupdates.mattermost.com', port=443): Max retries exceeded with url: /security_updates.json (Caused by NameResolutionError(\"HTTPSConnection(host='securityupdates.mattermost.com', port=443): Failed to resolve 'securityupdates.mattermost.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://securityupdates.mattermost.com/security_updates.json",
+        "summary": "mattermost::Mattermost Security Updates JSON::network::HTTPSConnectionPool(host='securityupdates.mattermost.com', port=443): Max retries exceeded with url: /security_updates.json (Caused by NameResolutionError(\"HTTPSConnection(host='securityupdates.mattermost.com', port=443): Failed to resolve 'securityupdates.mattermost.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "mattermost::OSV Mattermost",
+      "system_id": "mattermost",
+      "display_name": "Mattermost",
+      "source_name": "OSV Mattermost",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "mattermost",
+        "display_name": "Mattermost",
+        "source_name": "OSV Mattermost",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "mattermost::OSV Mattermost::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "mediawiki::MediaWiki Announce RSS",
+      "system_id": "mediawiki",
+      "display_name": "MediaWiki",
+      "source_name": "MediaWiki Announce RSS",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "mediawiki",
+        "display_name": "MediaWiki",
+        "source_name": "MediaWiki Announce RSS",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='lists.wikimedia.org', port=443): Max retries exceeded with url: /hyperkitty/list/mediawiki-announce@lists.wikimedia.org/feed/ (Caused by NameResolutionError(\"HTTPSConnection(host='lists.wikimedia.org', port=443): Failed to resolve 'lists.wikimedia.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/feed/",
+        "summary": "mediawiki::MediaWiki Announce RSS::network::HTTPSConnectionPool(host='lists.wikimedia.org', port=443): Max retries exceeded with url: /hyperkitty/list/mediawiki-announce@lists.wikimedia.org/feed/ (Caused by NameResolutionError(\"HTTPSConnection(host='lists.wikimedia.org', port=443): Failed to resolve 'lists.wikimedia.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "mediawiki::OSV MediaWiki",
+      "system_id": "mediawiki",
+      "display_name": "MediaWiki",
+      "source_name": "OSV MediaWiki",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "mediawiki",
+        "display_name": "MediaWiki",
+        "source_name": "OSV MediaWiki",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "mediawiki::OSV MediaWiki::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "medusa::OSV Medusa",
+      "system_id": "medusa",
+      "display_name": "Medusa",
+      "source_name": "OSV Medusa",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "medusa",
+        "display_name": "Medusa",
+        "source_name": "OSV Medusa",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "medusa::OSV Medusa::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "moodle::OSV Moodle",
+      "system_id": "moodle",
+      "display_name": "Moodle",
+      "source_name": "OSV Moodle",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "moodle",
+        "display_name": "Moodle",
+        "source_name": "OSV Moodle",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "moodle::OSV Moodle::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "nestjs::OSV NestJS",
+      "system_id": "nestjs",
+      "display_name": "NestJS",
+      "source_name": "OSV NestJS",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "nestjs",
+        "display_name": "NestJS",
+        "source_name": "OSV NestJS",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "nestjs::OSV NestJS::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "nextjs::OSV Next.js",
+      "system_id": "nextjs",
+      "display_name": "Next.js",
+      "source_name": "OSV Next.js",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "nextjs",
+        "display_name": "Next.js",
+        "source_name": "OSV Next.js",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "nextjs::OSV Next.js::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "nginx::CISA KEV NGINX",
+      "system_id": "nginx",
+      "display_name": "Nginx",
+      "source_name": "CISA KEV NGINX",
+      "source_kind": "kev-json",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "nginx",
+        "display_name": "Nginx",
+        "source_name": "CISA KEV NGINX",
+        "source_kind": "kev-json",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "summary": "nginx::CISA KEV NGINX::network::HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "nginx::NGINX Security Advisories",
+      "system_id": "nginx",
+      "display_name": "Nginx",
+      "source_name": "NGINX Security Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "nginx",
+        "display_name": "Nginx",
+        "source_name": "NGINX Security Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='nginx.org', port=443): Max retries exceeded with url: /en/security_advisories.html (Caused by NameResolutionError(\"HTTPSConnection(host='nginx.org', port=443): Failed to resolve 'nginx.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://nginx.org/en/security_advisories.html",
+        "summary": "nginx::NGINX Security Advisories::network::HTTPSConnectionPool(host='nginx.org', port=443): Max retries exceeded with url: /en/security_advisories.html (Caused by NameResolutionError(\"HTTPSConnection(host='nginx.org', port=443): Failed to resolve 'nginx.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "nodejs::CISA KEV Node.js",
+      "system_id": "nodejs",
+      "display_name": "Node.js",
+      "source_name": "CISA KEV Node.js",
+      "source_kind": "kev-json",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "nodejs",
+        "display_name": "Node.js",
+        "source_name": "CISA KEV Node.js",
+        "source_kind": "kev-json",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "summary": "nodejs::CISA KEV Node.js::network::HTTPSConnectionPool(host='www.cisa.gov', port=443): Max retries exceeded with url: /sites/default/files/feeds/known_exploited_vulnerabilities.json (Caused by NameResolutionError(\"HTTPSConnection(host='www.cisa.gov', port=443): Failed to resolve 'www.cisa.gov' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "nodejs::Node.js Security Releases",
+      "system_id": "nodejs",
+      "display_name": "Node.js",
+      "source_name": "Node.js Security Releases",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "nodejs",
+        "display_name": "Node.js",
+        "source_name": "Node.js Security Releases",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='nodejs.org', port=443): Max retries exceeded with url: /en/blog/vulnerability (Caused by NameResolutionError(\"HTTPSConnection(host='nodejs.org', port=443): Failed to resolve 'nodejs.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://nodejs.org/en/blog/vulnerability",
+        "summary": "nodejs::Node.js Security Releases::network::HTTPSConnectionPool(host='nodejs.org', port=443): Max retries exceeded with url: /en/blog/vulnerability (Caused by NameResolutionError(\"HTTPSConnection(host='nodejs.org', port=443): Failed to resolve 'nodejs.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "nuxt::OSV Nuxt",
+      "system_id": "nuxt",
+      "display_name": "Nuxt",
+      "source_name": "OSV Nuxt",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "nuxt",
+        "display_name": "Nuxt",
+        "source_name": "OSV Nuxt",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "nuxt::OSV Nuxt::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "opencart::OSV OpenCart",
+      "system_id": "opencart",
+      "display_name": "OpenCart",
+      "source_name": "OSV OpenCart",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "opencart",
+        "display_name": "OpenCart",
+        "source_name": "OSV OpenCart",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "opencart::OSV OpenCart::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "opencart::OpenCart Releases",
+      "system_id": "opencart",
+      "display_name": "OpenCart",
+      "source_name": "OpenCart Releases",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "opencart",
+        "display_name": "OpenCart",
+        "source_name": "OpenCart Releases",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /opencart/opencart/releases (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/opencart/opencart/releases",
+        "summary": "opencart::OpenCart Releases::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /opencart/opencart/releases (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "openmage::OSV OpenMage",
+      "system_id": "openmage",
+      "display_name": "OpenMage / Mage-OS",
+      "source_name": "OSV OpenMage",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "openmage",
+        "display_name": "OpenMage / Mage-OS",
+        "source_name": "OSV OpenMage",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "openmage::OSV OpenMage::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "openmage::OpenMage GitHub Advisories",
+      "system_id": "openmage",
+      "display_name": "OpenMage / Mage-OS",
+      "source_name": "OpenMage GitHub Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "openmage",
+        "display_name": "OpenMage / Mage-OS",
+        "source_name": "OpenMage GitHub Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /OpenMage/magento-lts/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/OpenMage/magento-lts/security/advisories",
+        "summary": "openmage::OpenMage GitHub Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /OpenMage/magento-lts/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "phpmyadmin::OSV phpMyAdmin",
+      "system_id": "phpmyadmin",
+      "display_name": "phpMyAdmin",
+      "source_name": "OSV phpMyAdmin",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "phpmyadmin",
+        "display_name": "phpMyAdmin",
+        "source_name": "OSV phpMyAdmin",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "phpmyadmin::OSV phpMyAdmin::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "phpmyadmin::phpMyAdmin Security Page",
+      "system_id": "phpmyadmin",
+      "display_name": "phpMyAdmin",
+      "source_name": "phpMyAdmin Security Page",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "phpmyadmin",
+        "display_name": "phpMyAdmin",
+        "source_name": "phpMyAdmin Security Page",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.phpmyadmin.net', port=443): Max retries exceeded with url: /security/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.phpmyadmin.net', port=443): Failed to resolve 'www.phpmyadmin.net' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.phpmyadmin.net/security/",
+        "summary": "phpmyadmin::phpMyAdmin Security Page::network::HTTPSConnectionPool(host='www.phpmyadmin.net', port=443): Max retries exceeded with url: /security/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.phpmyadmin.net', port=443): Failed to resolve 'www.phpmyadmin.net' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "prestashop::Friends Of Presta Security",
+      "system_id": "prestashop",
+      "display_name": "PrestaShop",
+      "source_name": "Friends Of Presta Security",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "prestashop",
+        "display_name": "PrestaShop",
+        "source_name": "Friends Of Presta Security",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='security.friendsofpresta.org', port=443): Max retries exceeded with url: / (Caused by NameResolutionError(\"HTTPSConnection(host='security.friendsofpresta.org', port=443): Failed to resolve 'security.friendsofpresta.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://security.friendsofpresta.org/",
+        "summary": "prestashop::Friends Of Presta Security::network::HTTPSConnectionPool(host='security.friendsofpresta.org', port=443): Max retries exceeded with url: / (Caused by NameResolutionError(\"HTTPSConnection(host='security.friendsofpresta.org', port=443): Failed to resolve 'security.friendsofpresta.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "prestashop::GitHub PrestaShop Advisories",
+      "system_id": "prestashop",
+      "display_name": "PrestaShop",
+      "source_name": "GitHub PrestaShop Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "prestashop",
+        "display_name": "PrestaShop",
+        "source_name": "GitHub PrestaShop Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /PrestaShop/PrestaShop/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/PrestaShop/PrestaShop/security/advisories",
+        "summary": "prestashop::GitHub PrestaShop Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /PrestaShop/PrestaShop/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "prestashop::OSV PrestaShop",
+      "system_id": "prestashop",
+      "display_name": "PrestaShop",
+      "source_name": "OSV PrestaShop",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "prestashop",
+        "display_name": "PrestaShop",
+        "source_name": "OSV PrestaShop",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "prestashop::OSV PrestaShop::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "prestashop::PrestaShop Security Page",
+      "system_id": "prestashop",
+      "display_name": "PrestaShop",
+      "source_name": "PrestaShop Security Page",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "prestashop",
+        "display_name": "PrestaShop",
+        "source_name": "PrestaShop Security Page",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='build.prestashop-project.org', port=443): Max retries exceeded with url: /news/ (Caused by NameResolutionError(\"HTTPSConnection(host='build.prestashop-project.org', port=443): Failed to resolve 'build.prestashop-project.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://build.prestashop-project.org/news/",
+        "summary": "prestashop::PrestaShop Security Page::network::HTTPSConnectionPool(host='build.prestashop-project.org', port=443): Max retries exceeded with url: /news/ (Caused by NameResolutionError(\"HTTPSConnection(host='build.prestashop-project.org', port=443): Failed to resolve 'build.prestashop-project.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "rails::OSV Rails",
+      "system_id": "rails",
+      "display_name": "Ruby on Rails",
+      "source_name": "OSV Rails",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "rails",
+        "display_name": "Ruby on Rails",
+        "source_name": "OSV Rails",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "rails::OSV Rails::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "react::OSV React",
+      "system_id": "react",
+      "display_name": "React",
+      "source_name": "OSV React",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "react",
+        "display_name": "React",
+        "source_name": "OSV React",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "react::OSV React::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "redmine::OSV Redmine",
+      "system_id": "redmine",
+      "display_name": "Redmine",
+      "source_name": "OSV Redmine",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "redmine",
+        "display_name": "Redmine",
+        "source_name": "OSV Redmine",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "redmine::OSV Redmine::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "redmine::Redmine Security Advisories",
+      "system_id": "redmine",
+      "display_name": "Redmine",
+      "source_name": "Redmine Security Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "redmine",
+        "display_name": "Redmine",
+        "source_name": "Redmine Security Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.redmine.org', port=443): Max retries exceeded with url: /projects/redmine/wiki/Security_Advisories (Caused by NameResolutionError(\"HTTPSConnection(host='www.redmine.org', port=443): Failed to resolve 'www.redmine.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.redmine.org/projects/redmine/wiki/Security_Advisories",
+        "summary": "redmine::Redmine Security Advisories::network::HTTPSConnectionPool(host='www.redmine.org', port=443): Max retries exceeded with url: /projects/redmine/wiki/Security_Advisories (Caused by NameResolutionError(\"HTTPSConnection(host='www.redmine.org', port=443): Failed to resolve 'www.redmine.org' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "saleor::GitHub Saleor Advisories",
+      "system_id": "saleor",
+      "display_name": "Saleor",
+      "source_name": "GitHub Saleor Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "saleor",
+        "display_name": "Saleor",
+        "source_name": "GitHub Saleor Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /saleor/saleor/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/saleor/saleor/security/advisories",
+        "summary": "saleor::GitHub Saleor Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /saleor/saleor/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "saleor::OSV Saleor",
+      "system_id": "saleor",
+      "display_name": "Saleor",
+      "source_name": "OSV Saleor",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "saleor",
+        "display_name": "Saleor",
+        "source_name": "OSV Saleor",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "saleor::OSV Saleor::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "shopware::OSV Shopware",
+      "system_id": "shopware",
+      "display_name": "Shopware",
+      "source_name": "OSV Shopware",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "shopware",
+        "display_name": "Shopware",
+        "source_name": "OSV Shopware",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "shopware::OSV Shopware::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "shopware::Shopware Security Advisories",
+      "system_id": "shopware",
+      "display_name": "Shopware",
+      "source_name": "Shopware Security Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-21T12:51:08+00:00",
+      "updated_at": "2026-03-22T01:06:45+00:00",
+      "resolved_at": "2026-03-22T01:06:45+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "shopware",
+        "display_name": "Shopware",
+        "source_name": "Shopware Security Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /shopware/shopware/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/shopware/shopware/security/advisories",
+        "summary": "shopware::Shopware Security Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /shopware/shopware/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))"
+      }
+    },
+    {
+      "alert_id": "spring-boot::OSV Spring Boot",
+      "system_id": "spring-boot",
+      "display_name": "Spring Boot",
+      "source_name": "OSV Spring Boot",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "spring-boot",
+        "display_name": "Spring Boot",
+        "source_name": "OSV Spring Boot",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "spring-boot::OSV Spring Boot::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 6.869
+      }
+    },
+    {
+      "alert_id": "spring-boot::Spring Security Advisories",
+      "system_id": "spring-boot",
+      "display_name": "Spring Boot",
+      "source_name": "Spring Security Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "spring-boot",
+        "display_name": "Spring Boot",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='spring.io', port=443): Max retries exceeded with url: /security (Caused by NameResolutionError(\"HTTPSConnection(host='spring.io', port=443): Failed to resolve 'spring.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://spring.io/security",
+        "summary": "spring-boot::Spring Security Advisories::network::HTTPSConnectionPool(host='spring.io', port=443): Max retries exceeded with url: /security (Caused by NameResolutionError(\"HTTPSConnection(host='spring.io', port=443): Failed to resolve 'spring.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 8.73
+      }
+    },
+    {
+      "alert_id": "spring-framework::OSV Spring Framework",
+      "system_id": "spring-framework",
+      "display_name": "Spring Framework",
+      "source_name": "OSV Spring Framework",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "spring-framework",
+        "display_name": "Spring Framework",
+        "source_name": "OSV Spring Framework",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "spring-framework::OSV Spring Framework::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 6.926
+      }
+    },
+    {
+      "alert_id": "spring-framework::Spring Security Advisories",
+      "system_id": "spring-framework",
+      "display_name": "Spring Framework",
+      "source_name": "Spring Security Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "spring-framework",
+        "display_name": "Spring Framework",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='spring.io', port=443): Max retries exceeded with url: /security (Caused by NameResolutionError(\"HTTPSConnection(host='spring.io', port=443): Failed to resolve 'spring.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://spring.io/security",
+        "summary": "spring-framework::Spring Security Advisories::network::HTTPSConnectionPool(host='spring.io', port=443): Max retries exceeded with url: /security (Caused by NameResolutionError(\"HTTPSConnection(host='spring.io', port=443): Failed to resolve 'spring.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 6.922
+      }
+    },
+    {
+      "alert_id": "spring-security::OSV Spring Security",
+      "system_id": "spring-security",
+      "display_name": "Spring Security",
+      "source_name": "OSV Spring Security",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "spring-security",
+        "display_name": "Spring Security",
+        "source_name": "OSV Spring Security",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "spring-security::OSV Spring Security::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 6.934
+      }
+    },
+    {
+      "alert_id": "spring-security::Spring Security Advisories",
+      "system_id": "spring-security",
+      "display_name": "Spring Security",
+      "source_name": "Spring Security Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "spring-security",
+        "display_name": "Spring Security",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='spring.io', port=443): Max retries exceeded with url: /security (Caused by NameResolutionError(\"HTTPSConnection(host='spring.io', port=443): Failed to resolve 'spring.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://spring.io/security",
+        "summary": "spring-security::Spring Security Advisories::network::HTTPSConnectionPool(host='spring.io', port=443): Max retries exceeded with url: /security (Caused by NameResolutionError(\"HTTPSConnection(host='spring.io', port=443): Failed to resolve 'spring.io' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 8.705
+      }
+    },
+    {
+      "alert_id": "strapi::OSV Strapi",
+      "system_id": "strapi",
+      "display_name": "Strapi",
+      "source_name": "OSV Strapi",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "strapi",
+        "display_name": "Strapi",
+        "source_name": "OSV Strapi",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "strapi::OSV Strapi::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 1.724
+      }
+    },
+    {
+      "alert_id": "strapi::Strapi GitHub Advisories",
+      "system_id": "strapi",
+      "display_name": "Strapi",
+      "source_name": "Strapi GitHub Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "strapi",
+        "display_name": "Strapi",
+        "source_name": "Strapi GitHub Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /strapi/strapi/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/strapi/strapi/security/advisories",
+        "summary": "strapi::Strapi GitHub Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /strapi/strapi/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 1.701
+      }
+    },
+    {
+      "alert_id": "sveltekit::OSV SvelteKit",
+      "system_id": "sveltekit",
+      "display_name": "SvelteKit",
+      "source_name": "OSV SvelteKit",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "sveltekit",
+        "display_name": "SvelteKit",
+        "source_name": "OSV SvelteKit",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "sveltekit::OSV SvelteKit::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 5.23
+      }
+    },
+    {
+      "alert_id": "symfony::OSV Symfony",
+      "system_id": "symfony",
+      "display_name": "Symfony",
+      "source_name": "OSV Symfony",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "symfony",
+        "display_name": "Symfony",
+        "source_name": "OSV Symfony",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "symfony::OSV Symfony::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 6.981
+      }
+    },
+    {
+      "alert_id": "traefik::OSV Traefik",
+      "system_id": "traefik",
+      "display_name": "Traefik",
+      "source_name": "OSV Traefik",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "traefik",
+        "display_name": "Traefik",
+        "source_name": "OSV Traefik",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "traefik::OSV Traefik::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 8.693
+      }
+    },
+    {
+      "alert_id": "undici::OSV Undici",
+      "system_id": "undici",
+      "display_name": "Undici",
+      "source_name": "OSV Undici",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "undici",
+        "display_name": "Undici",
+        "source_name": "OSV Undici",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "undici::OSV Undici::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 5.174
+      }
+    },
+    {
+      "alert_id": "vite::OSV Vite",
+      "system_id": "vite",
+      "display_name": "Vite",
+      "source_name": "OSV Vite",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "vite",
+        "display_name": "Vite",
+        "source_name": "OSV Vite",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "vite::OSV Vite::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 5.23
+      }
+    },
+    {
+      "alert_id": "vue::OSV Vue",
+      "system_id": "vue",
+      "display_name": "Vue",
+      "source_name": "OSV Vue",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "vue",
+        "display_name": "Vue",
+        "source_name": "OSV Vue",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "vue::OSV Vue::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 5.225
+      }
+    },
+    {
+      "alert_id": "webpack::OSV webpack",
+      "system_id": "webpack",
+      "display_name": "webpack",
+      "source_name": "OSV webpack",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "webpack",
+        "display_name": "webpack",
+        "source_name": "OSV webpack",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "webpack::OSV webpack::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 5.225
+      }
+    },
+    {
+      "alert_id": "werkzeug::OSV Werkzeug",
+      "system_id": "werkzeug",
+      "display_name": "Werkzeug",
+      "source_name": "OSV Werkzeug",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "werkzeug",
+        "display_name": "Werkzeug",
+        "source_name": "OSV Werkzeug",
+        "source_kind": "osv-batch",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "werkzeug::OSV Werkzeug::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 7.016
+      }
+    },
+    {
+      "alert_id": "woocommerce::GitHub WooCommerce Advisories",
+      "system_id": "woocommerce",
+      "display_name": "WooCommerce",
+      "source_name": "GitHub WooCommerce Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "source_name": "GitHub WooCommerce Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /woocommerce/woocommerce/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://github.com/woocommerce/woocommerce/security/advisories",
+        "summary": "woocommerce::GitHub WooCommerce Advisories::network::HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /woocommerce/woocommerce/security/advisories (Caused by NameResolutionError(\"HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 3.463
+      }
+    },
+    {
+      "alert_id": "woocommerce::OSV WooCommerce",
+      "system_id": "woocommerce",
+      "display_name": "WooCommerce",
+      "source_name": "OSV WooCommerce",
+      "source_kind": "osv-batch",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "source_name": "OSV WooCommerce",
+        "source_kind": "osv-batch",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "",
+        "summary": "woocommerce::OSV WooCommerce::network::HTTPSConnectionPool(host='api.osv.dev', port=443): Max retries exceeded with url: /v1/querybatch (Caused by NameResolutionError(\"HTTPSConnection(host='api.osv.dev', port=443): Failed to resolve 'api.osv.dev' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 3.463
+      }
+    },
+    {
+      "alert_id": "woocommerce::Patchstack Database",
+      "system_id": "woocommerce",
+      "display_name": "WooCommerce",
+      "source_name": "Patchstack Database",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "source_name": "Patchstack Database",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='patchstack.com', port=443): Max retries exceeded with url: /database/ (Caused by NameResolutionError(\"HTTPSConnection(host='patchstack.com', port=443): Failed to resolve 'patchstack.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://patchstack.com/database/",
+        "summary": "woocommerce::Patchstack Database::network::HTTPSConnectionPool(host='patchstack.com', port=443): Max retries exceeded with url: /database/ (Caused by NameResolutionError(\"HTTPSConnection(host='patchstack.com', port=443): Failed to resolve 'patchstack.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 3.481
+      }
+    },
+    {
+      "alert_id": "woocommerce::Woo Developer Advisories",
+      "system_id": "woocommerce",
+      "display_name": "WooCommerce",
+      "source_name": "Woo Developer Advisories",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "source_name": "Woo Developer Advisories",
+        "source_kind": "html-links",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='developer.woocommerce.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError(\"HTTPSConnection(host='developer.woocommerce.com', port=443): Failed to resolve 'developer.woocommerce.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://developer.woocommerce.com/",
+        "summary": "woocommerce::Woo Developer Advisories::network::HTTPSConnectionPool(host='developer.woocommerce.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError(\"HTTPSConnection(host='developer.woocommerce.com', port=443): Failed to resolve 'developer.woocommerce.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 3.481
+      }
+    },
+    {
+      "alert_id": "woocommerce::Wordfence Vulnerability Database",
+      "system_id": "woocommerce",
+      "display_name": "WooCommerce",
+      "source_name": "Wordfence Vulnerability Database",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "woocommerce",
+        "display_name": "WooCommerce",
+        "source_name": "Wordfence Vulnerability Database",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.wordfence.com', port=443): Max retries exceeded with url: /threat-intel/vulnerabilities/wordpress-plugins/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.wordfence.com', port=443): Failed to resolve 'www.wordfence.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/",
+        "summary": "woocommerce::Wordfence Vulnerability Database::network::HTTPSConnectionPool(host='www.wordfence.com', port=443): Max retries exceeded with url: /threat-intel/vulnerabilities/wordpress-plugins/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.wordfence.com', port=443): Failed to resolve 'www.wordfence.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 3.411
+      }
+    },
+    {
+      "alert_id": "wordpress::Patchstack Database",
+      "system_id": "wordpress",
+      "display_name": "WordPress",
+      "source_name": "Patchstack Database",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "source_name": "Patchstack Database",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='patchstack.com', port=443): Max retries exceeded with url: /database/ (Caused by NameResolutionError(\"HTTPSConnection(host='patchstack.com', port=443): Failed to resolve 'patchstack.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://patchstack.com/database/",
+        "summary": "wordpress::Patchstack Database::network::HTTPSConnectionPool(host='patchstack.com', port=443): Max retries exceeded with url: /database/ (Caused by NameResolutionError(\"HTTPSConnection(host='patchstack.com', port=443): Failed to resolve 'patchstack.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 1.736
+      }
+    },
+    {
+      "alert_id": "wordpress::PortSwigger Research",
+      "system_id": "wordpress",
+      "display_name": "WordPress",
+      "source_name": "PortSwigger Research",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "source_name": "PortSwigger Research",
+        "source_kind": "html-links",
+        "source_bucket": "research_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='portswigger.net', port=443): Max retries exceeded with url: /research (Caused by NameResolutionError(\"HTTPSConnection(host='portswigger.net', port=443): Failed to resolve 'portswigger.net' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://portswigger.net/research",
+        "summary": "wordpress::PortSwigger Research::network::HTTPSConnectionPool(host='portswigger.net', port=443): Max retries exceeded with url: /research (Caused by NameResolutionError(\"HTTPSConnection(host='portswigger.net', port=443): Failed to resolve 'portswigger.net' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 1.669
+      }
+    },
+    {
+      "alert_id": "wordpress::WPScan Vulnerability Database",
+      "system_id": "wordpress",
+      "display_name": "WordPress",
+      "source_name": "WPScan Vulnerability Database",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "source_name": "WPScan Vulnerability Database",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='wpscan.com', port=443): Max retries exceeded with url: /blog/ (Caused by NameResolutionError(\"HTTPSConnection(host='wpscan.com', port=443): Failed to resolve 'wpscan.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://wpscan.com/blog/",
+        "summary": "wordpress::WPScan Vulnerability Database::network::HTTPSConnectionPool(host='wpscan.com', port=443): Max retries exceeded with url: /blog/ (Caused by NameResolutionError(\"HTTPSConnection(host='wpscan.com', port=443): Failed to resolve 'wpscan.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 1.702
+      }
+    },
+    {
+      "alert_id": "wordpress::WordPress Security News RSS",
+      "system_id": "wordpress",
+      "display_name": "WordPress",
+      "source_name": "WordPress Security News RSS",
+      "source_kind": "rss-feed",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "source_name": "WordPress Security News RSS",
+        "source_kind": "rss-feed",
+        "source_bucket": "official_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='wordpress.org', port=443): Max retries exceeded with url: /news/category/security/feed/ (Caused by NameResolutionError(\"HTTPSConnection(host='wordpress.org', port=443): Failed to resolve 'wordpress.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://wordpress.org/news/category/security/feed/",
+        "summary": "wordpress::WordPress Security News RSS::network::HTTPSConnectionPool(host='wordpress.org', port=443): Max retries exceeded with url: /news/category/security/feed/ (Caused by NameResolutionError(\"HTTPSConnection(host='wordpress.org', port=443): Failed to resolve 'wordpress.org' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 1.728
+      }
+    },
+    {
+      "alert_id": "wordpress::Wordfence Vulnerability Database",
+      "system_id": "wordpress",
+      "display_name": "WordPress",
+      "source_name": "Wordfence Vulnerability Database",
+      "source_kind": "html-links",
+      "status": "resolved",
+      "opened_at": "2026-03-20T13:41:26+00:00",
+      "updated_at": "2026-03-20T15:45:58+00:00",
+      "resolved_at": "2026-03-20T15:45:58+00:00",
+      "failure_streak": 1,
+      "last_category": "network",
+      "last_failure": {
+        "system_id": "wordpress",
+        "display_name": "WordPress",
+        "source_name": "Wordfence Vulnerability Database",
+        "source_kind": "html-links",
+        "source_bucket": "ecosystem_sources",
+        "category": "network",
+        "exception": "ConnectionError",
+        "message": "HTTPSConnectionPool(host='www.wordfence.com', port=443): Max retries exceeded with url: /threat-intel/vulnerabilities/wordpress-plugins/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.wordfence.com', port=443): Failed to resolve 'www.wordfence.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "status_code": null,
+        "url": "https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/",
+        "summary": "wordpress::Wordfence Vulnerability Database::network::HTTPSConnectionPool(host='www.wordfence.com', port=443): Max retries exceeded with url: /threat-intel/vulnerabilities/wordpress-plugins/ (Caused by NameResolutionError(\"HTTPSConnection(host='www.wordfence.com', port=443): Failed to resolve 'www.wordfence.com' ([Errno 8] nodename nor servname provided, or not known)\"))",
+        "elapsed_seconds": 1.672
+      }
+    }
+  ],
+  "version_backlog": {
+    "generated_at": "2026-03-29T10:50:55+00:00",
+    "source_gap_entities": [
+      {
+        "entity_id": "adminer",
+        "display_name": "Adminer",
+        "root_system_id": "adminer",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "adobe-commerce",
+        "display_name": "Adobe Commerce",
+        "root_system_id": "adobe-commerce",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "aspnet-core",
+        "display_name": "ASP.NET Core",
+        "root_system_id": "aspnet-core",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "express",
+        "display_name": "Express",
+        "root_system_id": "express",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "gitea",
+        "display_name": "Gitea",
+        "root_system_id": "gitea",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "grafana",
+        "display_name": "Grafana",
+        "root_system_id": "grafana",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "jenkins",
+        "display_name": "Jenkins",
+        "root_system_id": "jenkins",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "kibana",
+        "display_name": "Kibana",
+        "root_system_id": "kibana",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "medusa",
+        "display_name": "Medusa",
+        "root_system_id": "medusa",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "moodle",
+        "display_name": "Moodle",
+        "root_system_id": "moodle",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "nestjs",
+        "display_name": "NestJS",
+        "root_system_id": "nestjs",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "nginx",
+        "display_name": "Nginx",
+        "root_system_id": "nginx",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "nodejs",
+        "display_name": "Node.js",
+        "root_system_id": "nodejs",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "spring-framework",
+        "display_name": "Spring Framework",
+        "root_system_id": "spring-framework",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      },
+      {
+        "entity_id": "webpack",
+        "display_name": "webpack",
+        "root_system_id": "webpack",
+        "entity_type": "system",
+        "latest_version": "",
+        "repo_url": "",
+        "package_registry": "",
+        "marketplace_url": ""
+      }
+    ],
+    "unresolved_advisories": [
+      {
+        "canonical_id": "adminer--CVE-2026-25878",
+        "system_id": "adminer",
+        "title": "CVE-2026-25878",
+        "official_source_url": "https://github.com/FriendsOfShopware/FroshPlatformAdminer/commit/c4dd6c3462af178b3a7d146d3c651c2c253e902b",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adminer--CVE-2026-25892",
+        "system_id": "adminer",
+        "title": "CVE-2026-25892",
+        "official_source_url": "https://github.com/vrana/adminer/commit/21d3a3150388677b18647d68aec93b7850e457d3",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--047932676d",
+        "system_id": "adobe-commerce",
+        "title": "APSB26-05 \u00a0: Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb26-05.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--0a62931b31",
+        "system_id": "adobe-commerce",
+        "title": "APSB21-86 \u00a0Security\u202fupdates available\u202ffor Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb21-86.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--0eb3765231",
+        "system_id": "adobe-commerce",
+        "title": "APSB20-22 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb20-22.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--1040fafca2",
+        "system_id": "adobe-commerce",
+        "title": "APSB20-41 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb20-41.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--1255668bf0",
+        "system_id": "adobe-commerce",
+        "title": "APSB24-61 \u00a0: Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-61.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--12ae93f161",
+        "system_id": "adobe-commerce",
+        "title": "APSB25-88 :  Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb25-88.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--3f204ca99f",
+        "system_id": "adobe-commerce",
+        "title": "APSB22-38\u00a0 :\u00a0Security update available for Adobe\u00a0Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--4db71027f6",
+        "system_id": "adobe-commerce",
+        "title": "APSB23-42 \u00a0: Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-42.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--5451447fe7",
+        "system_id": "adobe-commerce",
+        "title": "APSB21-30 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb21-30.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--54dc24517c",
+        "system_id": "adobe-commerce",
+        "title": "APSB25-26\u00a0 : Security update available for Adobe\u00a0Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb25-26.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--5cb7420cf3",
+        "system_id": "adobe-commerce",
+        "title": "Back to top",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--8c1e29399c",
+        "system_id": "adobe-commerce",
+        "title": "APSB24-73\u00a0 :\u00a0Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-73.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--8ecb2a63a5",
+        "system_id": "adobe-commerce",
+        "title": "APSB23-17\u00a0 : Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-17.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--933ad16ad5",
+        "system_id": "adobe-commerce",
+        "title": "APSB24-18 \u00a0: Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-18.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--934b38c7e3",
+        "system_id": "adobe-commerce",
+        "title": "APSB23-50 \u00a0: Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--979640da01",
+        "system_id": "adobe-commerce",
+        "title": "APSB23-35 \u00a0:\u00a0Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2021-36035",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2021-36035",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb21-64.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2021-39864",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2021-39864",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb21-86.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-24086",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-24086",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-12.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-24093",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-24093",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-13.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-34253",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-34253",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-34254",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-34254",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-34255",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-34255",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-34256",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-34256",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-34257",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-34257",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-34258",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-34258",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-34259",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-34259",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-35689",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-35689",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-48.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-35692",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-35692",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-35698",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-35698",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-48.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2022-42344",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2022-42344",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-38.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-22247",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-22247",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-17.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-22248",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-22248",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-22249",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-22249",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-17.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-22250",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-22250",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-17.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-22251",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-22251",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-17.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-26366",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-26366",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-26367",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-26367",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29287",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29287",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29288",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29288",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29289",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29289",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29290",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29290",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29291",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29291",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29292",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29292",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29293",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29293",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29294",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29294",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29295",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29295",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29296",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29296",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-29297",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-29297",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-35.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38207",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38207",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-42.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38208",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38208",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-42.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38209",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38209",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-42.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38218",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38218",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38219",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38219",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38220",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38220",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38221",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38221",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38249",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38249",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38250",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38250",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2023-38251",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2023-38251",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb23-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2024-20716",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2024-20716",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-03.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2024-20717",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2024-20717",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-03.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2024-20718",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2024-20718",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-03.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2024-20719",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2024-20719",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-03.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2024-20720",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2024-20720",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-03.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2024-20758",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2024-20758",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-18.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--CVE-2024-20759",
+        "system_id": "adobe-commerce",
+        "title": "CVE-2024-20759",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-18.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--a0a29ab7eb",
+        "system_id": "adobe-commerce",
+        "title": "APSB25-71\u00a0 : Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb25-71.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--a5f12e77b4",
+        "system_id": "adobe-commerce",
+        "title": "APSB22-12 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-12.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--a7b623e0d8",
+        "system_id": "adobe-commerce",
+        "title": "APSB21-08 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb21-08.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--ac73b00a05",
+        "system_id": "adobe-commerce",
+        "title": "APSB24-40 \u00a0:\u00a0Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-40.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--c1c61771df",
+        "system_id": "adobe-commerce",
+        "title": "APSB24-90  :\u00a0Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-90.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--ce8484a7ed",
+        "system_id": "adobe-commerce",
+        "title": "APSB25-08\u00a0 : Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb25-08.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--d3476d6b14",
+        "system_id": "adobe-commerce",
+        "title": "APSB25-94\u00a0 : Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb25-94.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--d4e4aff8b8",
+        "system_id": "adobe-commerce",
+        "title": "APSB22-48 : Security updates available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-48.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--d688572a39",
+        "system_id": "adobe-commerce",
+        "title": "APSB20-02 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb20-02.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--d88dbef013",
+        "system_id": "adobe-commerce",
+        "title": "APSB20-59 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb20-59.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--da91b15885",
+        "system_id": "adobe-commerce",
+        "title": "APSB22-13 \u00a0:\u00a0Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb22-13.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--ef1f4e7ed5",
+        "system_id": "adobe-commerce",
+        "title": "APSB21-64 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb21-64.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--f2ffd83268",
+        "system_id": "adobe-commerce",
+        "title": "APSB25-50\u00a0:  Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb25-50.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--f35cbfee30",
+        "system_id": "adobe-commerce",
+        "title": "APSB24-03 \u00a0: Security update available for Adobe Commerce",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb24-03.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "adobe-commerce--fc2e2dc6d1",
+        "system_id": "adobe-commerce",
+        "title": "APSB20-47 \u00a0Security\u202fupdates available\u202ffor Magento",
+        "official_source_url": "https://helpx.adobe.com/security/products/magento/apsb20-47.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--02cba8895c",
+        "system_id": "apache-httpd",
+        "title": "libapreq",
+        "official_source_url": "https://httpd.apache.org/apreq/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--05cc1afdb1",
+        "system_id": "apache-httpd",
+        "title": "Trunk",
+        "official_source_url": "https://svn.apache.org/viewvc/httpd/httpd/trunk/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--07805b501b",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-59775",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-59775",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--0a6be3d9f9",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-28330",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-28330",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--0bc105963e",
+        "system_id": "apache-httpd",
+        "title": "Documentation",
+        "official_source_url": "https://httpd.apache.org/docs/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--0ca4c19a23",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-38473",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-38473",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--0dbcc731e3",
+        "system_id": "apache-httpd",
+        "title": "Flood",
+        "official_source_url": "https://httpd.apache.org/test/flood/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--0e5b8af55a",
+        "system_id": "apache-httpd",
+        "title": "Mailing Lists",
+        "official_source_url": "https://httpd.apache.org/lists.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--101f2d16a4",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-40725",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-40725",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--1110a7f1d2",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-38472",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-38472",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--172cdd59be",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-66200",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-66200",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--1afb0f2b13",
+        "system_id": "apache-httpd",
+        "title": "Wiki",
+        "official_source_url": "https://wiki.apache.org/httpd/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--1c11edba84",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-54090",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-54090",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--1e9218e776",
+        "system_id": "apache-httpd",
+        "title": "impact rating",
+        "official_source_url": "https://httpd.apache.org/security/impact_levels.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--20376e1d55",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-47252",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-47252",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--203c36ee66",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-23048",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-23048",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--219b6d2e94",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-55753",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-55753",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--22307e5b33",
+        "system_id": "apache-httpd",
+        "title": "Sponsorship",
+        "official_source_url": "https://www.apache.org/foundation/sponsorship.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--22e8d8544b",
+        "system_id": "apache-httpd",
+        "title": "FAQ",
+        "official_source_url": "https://wiki.apache.org/httpd/FAQ",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--23cd71d5dd",
+        "system_id": "apache-httpd",
+        "title": "mod_fcgid",
+        "official_source_url": "https://httpd.apache.org/mod_fcgid/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--276abef65c",
+        "system_id": "apache-httpd",
+        "title": "Miscellaneous",
+        "official_source_url": "https://httpd.apache.org/info/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--2ba0a72733",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-43204",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-43204",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--2bc69387c4",
+        "system_id": "apache-httpd",
+        "title": "Download!",
+        "official_source_url": "https://httpd.apache.org/download.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--2bf906b1f1",
+        "system_id": "apache-httpd",
+        "title": "Apache Traffic Control",
+        "official_source_url": "https://trafficcontrol.apache.org/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--2d0d84c490",
+        "system_id": "apache-httpd",
+        "title": "User Support",
+        "official_source_url": "https://httpd.apache.org/support.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--2d92c01d3d",
+        "system_id": "apache-httpd",
+        "title": "Trunk (dev)",
+        "official_source_url": "https://httpd.apache.org/docs/trunk/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--2f5a1a9d6e",
+        "system_id": "apache-httpd",
+        "title": "APR",
+        "official_source_url": "https://apr.apache.org/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--331bc084fd",
+        "system_id": "apache-httpd",
+        "title": "Contributors",
+        "official_source_url": "https://httpd.apache.org/contributors/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--34efd686fd",
+        "system_id": "apache-httpd",
+        "title": "CVE-2023-27522",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2023-27522",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--39b0a97f1b",
+        "system_id": "apache-httpd",
+        "title": "CVE-2023-43622",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2023-43622",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--3abbe322bc",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-42516",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-42516",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--414d53727b",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-40898",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-40898",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--4c276fa297",
+        "system_id": "apache-httpd",
+        "title": "Version 2.4",
+        "official_source_url": "https://httpd.apache.org/docs/2.4/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--4f2f2006f0",
+        "system_id": "apache-httpd",
+        "title": "CVE-2023-25690",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2023-25690",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--53ed5e694b",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-20001",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2006-20001",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--54f4c83f62",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-24795",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-24795",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--597e01ff2b",
+        "system_id": "apache-httpd",
+        "title": "mod_perl",
+        "official_source_url": "https://perl.apache.org/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--62f6b74275",
+        "system_id": "apache-httpd",
+        "title": "Tomcat",
+        "official_source_url": "https://tomcat.apache.org/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--63991a76ba",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-53020",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-53020",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--66951029b9",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-27316",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-27316",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--67f45a8c73",
+        "system_id": "apache-httpd",
+        "title": "Security Reports",
+        "official_source_url": "https://httpd.apache.org/security_report.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--7235782431",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-65082",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-65082",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--72c286c42f",
+        "system_id": "apache-httpd",
+        "title": "CVE-2023-38709",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2023-38709",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--72d0a9488a",
+        "system_id": "apache-httpd",
+        "title": "Apache Traffic Server",
+        "official_source_url": "https://trafficserver.apache.org/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--743aad06f7",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-39573",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-39573",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--77dc43b9bd",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-30556",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-30556",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--7ebb8cbaf7",
+        "system_id": "apache-httpd",
+        "title": "Test",
+        "official_source_url": "https://httpd.apache.org/test/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--8021fd91fe",
+        "system_id": "apache-httpd",
+        "title": "General Information",
+        "official_source_url": "https://httpd.apache.org/dev/devnotes.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--865fc55d60",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-49630",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-49630",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--89048ff274",
+        "system_id": "apache-httpd",
+        "title": "mod_ftp",
+        "official_source_url": "https://httpd.apache.org/mod_ftp/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--8c1c4a9f69",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-36760",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-36760",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--8cb5b0c11c",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-58098",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-58098",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--933f3c3296",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-43394",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-43394",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--9351ed6cb8",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-36387",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-36387",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--9374eed004",
+        "system_id": "apache-httpd",
+        "title": "CVE-2023-31122",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2023-31122",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--9b89d11a37",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-26377",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-26377",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--9c906c368b",
+        "system_id": "apache-httpd",
+        "title": "Thanks!",
+        "official_source_url": "https://www.apache.org/foundation/thanks.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-1999-1412",
+        "system_id": "apache-httpd",
+        "title": "CVE-1999-1412",
+        "official_source_url": "http://www.securityfocus.com/archive/1/14215",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2000-0505",
+        "system_id": "apache-httpd",
+        "title": "CVE-2000-0505",
+        "official_source_url": "http://www.securityfocus.com/bid/1284",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2000-1168",
+        "system_id": "apache-httpd",
+        "title": "CVE-2000-1168",
+        "official_source_url": "http://marc.info/?l=bugtraq&m=97502498610979&w=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2001-1556",
+        "system_id": "apache-httpd",
+        "title": "CVE-2001-1556",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2001-10/0231.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2002-0240",
+        "system_id": "apache-httpd",
+        "title": "CVE-2002-0240",
+        "official_source_url": "http://marc.info/?l=bugtraq&m=101311746611160&w=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2002-1157",
+        "system_id": "apache-httpd",
+        "title": "CVE-2002-1157",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2002-10/0374.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2002-1793",
+        "system_id": "apache-httpd",
+        "title": "CVE-2002-1793",
+        "official_source_url": "http://online.securityfocus.com/advisories/4502",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2002-2007",
+        "system_id": "apache-httpd",
+        "title": "CVE-2002-2007",
+        "official_source_url": "http://cert.uni-stuttgart.de/archive/bugtraq/2002/05/msg00272.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2003-0249",
+        "system_id": "apache-httpd",
+        "title": "CVE-2003-0249",
+        "official_source_url": "http://www.idefense.com/intelligence/vulnerabilities/display.php?id=97",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2003-1307",
+        "system_id": "apache-httpd",
+        "title": "CVE-2003-1307",
+        "official_source_url": "http://bugs.php.net/38915",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2003-1418",
+        "system_id": "apache-httpd",
+        "title": "CVE-2003-1418",
+        "official_source_url": "http://www.openbsd.org/errata32.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2004-0113",
+        "system_id": "apache-httpd",
+        "title": "CVE-2004-0113",
+        "official_source_url": "http://distro.conectiva.com.br/atualizacoes/?id=a&anuncio=000839",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2004-0646",
+        "system_id": "apache-httpd",
+        "title": "CVE-2004-0646",
+        "official_source_url": "http://secunia.com/advisories/12647/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2004-2115",
+        "system_id": "apache-httpd",
+        "title": "CVE-2004-2115",
+        "official_source_url": "http://marc.info/?l=bugtraq&m=107496560106967&w=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2004-2343",
+        "system_id": "apache-httpd",
+        "title": "CVE-2004-2343",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2004-02/0043.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2005-2088",
+        "system_id": "apache-httpd",
+        "title": "CVE-2005-2088",
+        "official_source_url": "http://docs.info.apple.com/article.html?artnum=302847",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2005-3630",
+        "system_id": "apache-httpd",
+        "title": "CVE-2005-3630",
+        "official_source_url": "http://directory.fedora.redhat.com/wiki/FDS10Announcement",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2005-4814",
+        "system_id": "apache-httpd",
+        "title": "CVE-2005-4814",
+        "official_source_url": "http://sourceforge.net/project/shownotes.php?release_id=456920&group_id=82171",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-2330",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-2330",
+        "official_source_url": "http://secunia.com/advisories/19992",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-3918",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-3918",
+        "official_source_url": "ftp://patches.sgi.com/support/free/security/advisories/20060801-01-P",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-4004",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-4004",
+        "official_source_url": "http://secunia.com/advisories/21287",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-4191",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-4191",
+        "official_source_url": "http://retrogod.altervista.org/xmb_196_sql.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-4558",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-4558",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2006-05/0318.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-4625",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-4625",
+        "official_source_url": "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=c01056506",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-4636",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-4636",
+        "official_source_url": "http://secunia.com/advisories/21753",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-5263",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-5263",
+        "official_source_url": "http://secunia.com/advisories/22346",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-5733",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-5733",
+        "official_source_url": "http://community.postnuke.com/Article2787.htm",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-5894",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-5894",
+        "official_source_url": "http://secunia.com/advisories/22847",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-6047",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-6047",
+        "official_source_url": "http://secunia.com/advisories/22885",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-6390",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-6390",
+        "official_source_url": "http://secunia.com/advisories/23168",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-6445",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-6445",
+        "official_source_url": "http://www.securityfocus.com/bid/21413",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-6613",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-6613",
+        "official_source_url": "http://www.securityfocus.com/bid/21519",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-6869",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-6869",
+        "official_source_url": "http://www.securityfocus.com/bid/21837",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2006-7098",
+        "system_id": "apache-httpd",
+        "title": "CVE-2006-7098",
+        "official_source_url": "http://archives.neohapsis.com/archives/fulldisclosure/2007-02/0579.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-0086",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-0086",
+        "official_source_url": "http://osvdb.org/33456",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-0098",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-0098",
+        "official_source_url": "http://osvdb.org/32352",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-0173",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-0173",
+        "official_source_url": "http://osvdb.org/35914",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-0419",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-0419",
+        "official_source_url": "http://dev2dev.bea.com/pub/advisory/213",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-0450",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-0450",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-0637",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-0637",
+        "official_source_url": "http://osvdb.org/33033",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1524",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1524",
+        "official_source_url": "http://secunia.com/advisories/24520",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1577",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1577",
+        "official_source_url": "http://www.osvdb.org/33776",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1633",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1633",
+        "official_source_url": "http://osvdb.org/38599",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1720",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1720",
+        "official_source_url": "http://osvdb.org/36572",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1741",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1741",
+        "official_source_url": "http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=511",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1742",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1742",
+        "official_source_url": "http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=511",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1743",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1743",
+        "official_source_url": "http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=511",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1801",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1801",
+        "official_source_url": "http://osvdb.org/35458",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1842",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1842",
+        "official_source_url": "http://kldp.net/plugins/scmcvs/cvsweb.php/jsboard-2/login.php.diff?r1=1.8%3Br2=1.9%3Bcvsroot=jsboard",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2007-1860",
+        "system_id": "apache-httpd",
+        "title": "CVE-2007-1860",
+        "official_source_url": "http://docs.info.apple.com/article.html?artnum=306172",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2019-0211",
+        "system_id": "apache-httpd",
+        "title": "Apache HTTP Server Privilege Escalation Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2021-40438",
+        "system_id": "apache-httpd",
+        "title": "Apache HTTP Server-Side Request Forgery (SSRF)",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2021-41773",
+        "system_id": "apache-httpd",
+        "title": "Apache HTTP Server Path Traversal Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2021-42013",
+        "system_id": "apache-httpd",
+        "title": "Apache HTTP Server Path Traversal Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--CVE-2024-38475",
+        "system_id": "apache-httpd",
+        "title": "Apache HTTP Server Improper Escaping of Output Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--a17785142a",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-28615",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-28615",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--a45c30ecd9",
+        "system_id": "apache-httpd",
+        "title": "License",
+        "official_source_url": "https://www.apache.org/licenses/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--a621acb133",
+        "system_id": "apache-httpd",
+        "title": "Docs",
+        "official_source_url": "https://httpd.apache.org/docs-project/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--a8a1854523",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-38474",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-38474",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--aacfaa6a80",
+        "system_id": "apache-httpd",
+        "title": "Developer Info",
+        "official_source_url": "https://httpd.apache.org/dev/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--aca919348b",
+        "system_id": "apache-httpd",
+        "title": "Bug Reports",
+        "official_source_url": "https://httpd.apache.org/bug_report.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--b61c783667",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-38477",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-38477",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--c63da36498",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-29404",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-29404",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--c6691454bc",
+        "system_id": "apache-httpd",
+        "title": "Apache httpd 2.2 vulnerabilities list",
+        "official_source_url": "https://httpd.apache.org/security/vulnerabilities_22.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--d0e22d65d1",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-37436",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-37436",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--d64723cb44",
+        "system_id": "apache-httpd",
+        "title": "Get Involved",
+        "official_source_url": "https://httpd.apache.org/contribute/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--daa9023ed5",
+        "system_id": "apache-httpd",
+        "title": "\u00b6",
+        "official_source_url": "https://httpd.apache.org/security/vulnerabilities_24.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--dd0bd113b7",
+        "system_id": "apache-httpd",
+        "title": "CVE-2023-45802",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2023-45802",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--de25fcbe49",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-38476",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-38476",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--e18cad1aed",
+        "system_id": "apache-httpd",
+        "title": "2.4",
+        "official_source_url": "https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--e3be78f3ce",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-39884",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-39884",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--e4fc049559",
+        "system_id": "apache-httpd",
+        "title": "Privacy",
+        "official_source_url": "https://www.apache.org/foundation/policies/privacy.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--eb473e3585",
+        "system_id": "apache-httpd",
+        "title": "About",
+        "official_source_url": "https://httpd.apache.org/ABOUT_APACHE.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--f0745e0763",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-28614",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-28614",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--f7a4b946cb",
+        "system_id": "apache-httpd",
+        "title": "Modules",
+        "official_source_url": "https://httpd.apache.org/modules",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--f8fa380112",
+        "system_id": "apache-httpd",
+        "title": "CVE-2024-38475",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2024-38475",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--fb4f0f6f89",
+        "system_id": "apache-httpd",
+        "title": "CVE-2022-30522",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2022-30522",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-httpd--fe666b8dc0",
+        "system_id": "apache-httpd",
+        "title": "CVE-2025-49812",
+        "official_source_url": "https://www.cve.org/CVERecord?id=CVE-2025-49812",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--011725d3b7",
+        "system_id": "apache-tomcat",
+        "title": "5053fa82",
+        "official_source_url": "https://github.com/apache/tomcat/commit/5053fa82a1b2b52756810601227984a8b71888a4",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--049b7d0382",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-48989",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-48989",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--0a3c261703",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-48988",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-48988",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--0ca9da9c59",
+        "system_id": "apache-tomcat",
+        "title": "Taglibs",
+        "official_source_url": "https://tomcat.apache.org/taglibs.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--118d55a36a",
+        "system_id": "apache-tomcat",
+        "title": "238d2aa5",
+        "official_source_url": "https://github.com/apache/tomcat/commit/238d2aa54b99f91d1111467e2237d2244c64e558",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--13118e2458",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat 9",
+        "official_source_url": "https://tomcat.apache.org/download-90.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--149d716532",
+        "system_id": "apache-tomcat",
+        "title": "af6e9181",
+        "official_source_url": "https://github.com/apache/tomcat/commit/af6e9181620304c0d818121c29c074e1330610d0",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--1ca9fd2888",
+        "system_id": "apache-tomcat",
+        "title": "2aa62612",
+        "official_source_url": "https://github.com/apache/tomcat/commit/2aa6261276ebe50b99276953591e3a2be7898bdb",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--1f1e953630",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat 9.0",
+        "official_source_url": "https://tomcat.apache.org/tomcat-9.0-doc/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--207b10584e",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2026-24734",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-24734",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--242cf7a166",
+        "system_id": "apache-tomcat",
+        "title": "Presentations",
+        "official_source_url": "https://tomcat.apache.org/presentations.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--2ffc2aa787",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2026-24733",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-24733",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--32ce70ac24",
+        "system_id": "apache-tomcat",
+        "title": "130d36d8",
+        "official_source_url": "https://github.com/apache/tomcat/commit/130d36d8492ef9e4eb22952c17c92423cb35fd06",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--33b187389a",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat 10.1",
+        "official_source_url": "https://tomcat.apache.org/tomcat-10.1-doc/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--3467b45391",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat Native",
+        "official_source_url": "https://tomcat.apache.org/download-native.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--35abb36510",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat Native 2",
+        "official_source_url": "https://tomcat.apache.org/native-doc/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--3fc96befd0",
+        "system_id": "apache-tomcat",
+        "title": "building.html",
+        "official_source_url": "https://tomcat.apache.org/tomcat-10.0-doc/building.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--41118a6375",
+        "system_id": "apache-tomcat",
+        "title": "667ddd76",
+        "official_source_url": "https://github.com/apache/tomcat/commit/667ddd76e2a0e762f3a784d86f0d25e7fd7cdb86",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--4d22e4456b",
+        "system_id": "apache-tomcat",
+        "title": "8621e4c6",
+        "official_source_url": "https://github.com/apache/tomcat/commit/8621e4c6ba2c916a41eb34cb0f781171ead33fb6",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--524fcf3503",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat Connectors",
+        "official_source_url": "https://tomcat.apache.org/connectors-doc/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--55e780c0ef",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-52520",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-52520",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--57d32a8906",
+        "system_id": "apache-tomcat",
+        "title": "Which version?",
+        "official_source_url": "https://tomcat.apache.org/whichversion.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--583e0f80f0",
+        "system_id": "apache-tomcat",
+        "title": "Tools",
+        "official_source_url": "https://tomcat.apache.org/tools.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--5bcb504893",
+        "system_id": "apache-tomcat",
+        "title": "Mailing Lists",
+        "official_source_url": "https://tomcat.apache.org/lists.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--5de2d17648",
+        "system_id": "apache-tomcat",
+        "title": "73c04a10",
+        "official_source_url": "https://github.com/apache/tomcat/commit/73c04a10395774bda71a0b37802cf983662ce255",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--5e02bf0896",
+        "system_id": "apache-tomcat",
+        "title": "Who We Are",
+        "official_source_url": "https://tomcat.apache.org/whoweare.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--5e7ef9af14",
+        "system_id": "apache-tomcat",
+        "title": "Bug Database",
+        "official_source_url": "https://tomcat.apache.org/bugreport.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--62347916c4",
+        "system_id": "apache-tomcat",
+        "title": "Maven Plugin",
+        "official_source_url": "https://tomcat.apache.org/maven-plugin.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--656b24de26",
+        "system_id": "apache-tomcat",
+        "title": "Legal",
+        "official_source_url": "https://tomcat.apache.org/legal.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--66500f6f9d",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-61795",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-61795",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--69f233a427",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-49125",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-49125",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--6cb0b97c81",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat Connectors",
+        "official_source_url": "https://tomcat.apache.org/download-connectors.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--7362e5d6ec",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-48976",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-48976",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--743c78dd96",
+        "system_id": "apache-tomcat",
+        "title": "Security Considerations",
+        "official_source_url": "https://tomcat.apache.org/tomcat-10.0-doc/security-howto.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--745679753c",
+        "system_id": "apache-tomcat",
+        "title": "972f9a5e",
+        "official_source_url": "https://github.com/apache/tomcat/commit/972f9a5e2a07674d92610c478aac1b205d60724e",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--7714a24368",
+        "system_id": "apache-tomcat",
+        "title": "138d7f5c",
+        "official_source_url": "https://github.com/apache/tomcat/commit/138d7f5cfaae683078948303333c080e6faa75d2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--7d8dd36663",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat Native 1.3",
+        "official_source_url": "https://tomcat.apache.org/native-1.3-doc/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--85a3b9b4c9",
+        "system_id": "apache-tomcat",
+        "title": "security impact rating",
+        "official_source_url": "https://tomcat.apache.org/security-impact.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--86b167c195",
+        "system_id": "apache-tomcat",
+        "title": "Contact",
+        "official_source_url": "https://tomcat.apache.org/contact.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--8cf8505808",
+        "system_id": "apache-tomcat",
+        "title": "Home",
+        "official_source_url": "https://tomcat.apache.org/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--8f448afa4f",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-55754",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-55754",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--91d886494d",
+        "system_id": "apache-tomcat",
+        "title": "Blog",
+        "official_source_url": "https://blogs.apache.org/tomcat/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--99779e97b3",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-31651",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-31651",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--9d2a8987e8",
+        "system_id": "apache-tomcat",
+        "title": "066bf6b6",
+        "official_source_url": "https://github.com/apache/tomcat/commit/066bf6b6a15a4e7e0941d4acf096841165b97098",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2000-0759",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2000-0759",
+        "official_source_url": "http://www.iss.net/security_center/static/4967.php",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2000-0760",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2000-0760",
+        "official_source_url": "http://www.securityfocus.com/bid/1532",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2000-1210",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2000-1210",
+        "official_source_url": "http://marc.info/?l=bugtraq&m=95371672300045&w=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2001-0590",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2001-0590",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2001-04/0031.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2001-0829",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2001-0829",
+        "official_source_url": "http://archive.cert.uni-stuttgart.de/archive/bugtraq/2001/07/msg00021.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-0493",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-0493",
+        "official_source_url": "http://marc.info/?l=bugtraq&m=101709002410365&w=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-0682",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-0682",
+        "official_source_url": "http://archives.neohapsis.com/archives/vulnwatch/2002-q3/0014.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-0935",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-0935",
+        "official_source_url": "http://archives.neohapsis.com/archives/vulnwatch/2002-q2/0120.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-1394",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-1394",
+        "official_source_url": "http://issues.apache.org/bugzilla/show_bug.cgi?id=13365",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-1567",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-1567",
+        "official_source_url": "http://archives.neohapsis.com/archives/vuln-dev/2002-q3/0482.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-1895",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-1895",
+        "official_source_url": "http://archives.neohapsis.com/archives/vulnwatch/2002-q4/0020.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-2006",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-2006",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2002-04/0311.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-2007",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-2007",
+        "official_source_url": "http://cert.uni-stuttgart.de/archive/bugtraq/2002/05/msg00272.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-2008",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-2008",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2002-06/0225.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-2009",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-2009",
+        "official_source_url": "http://tomcat.apache.org/security-4.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2002-2272",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2002-2272",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2002-12/0045.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2005-0808",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2005-0808",
+        "official_source_url": "http://www.hitachi-support.com/security_e/vuls_e/HS05-006_e/index-e.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2005-1753",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2005-1753",
+        "official_source_url": "http://marc.info/?l=bugtraq&m=111697083812367&w=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2005-1754",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2005-1754",
+        "official_source_url": "http://marc.info/?l=bugtraq&m=111697083812367&w=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2005-3164",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2005-3164",
+        "official_source_url": "http://jvn.jp/jp/JVN%2379314822/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2005-3510",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2005-3510",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2005-4703",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2005-4703",
+        "official_source_url": "http://osvdb.org/ref/20/20033-tomcat-dos-path_disclosure.txt",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2005-4836",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2005-4836",
+        "official_source_url": "http://tomcat.apache.org/security-4.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2006-3835",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2006-3835",
+        "official_source_url": "http://archives.neohapsis.com/archives/fulldisclosure/2006-07/0467.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2006-7195",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2006-7195",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2006-7196",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2006-7196",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2006-7197",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2006-7197",
+        "official_source_url": "http://issues.apache.org/bugzilla/show_bug.cgi?id=38859",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-0450",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-0450",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-0774",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-0774",
+        "official_source_url": "http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01178795",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-1358",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-1358",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-1491",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-1491",
+        "official_source_url": "http://secunia.com/advisories/24434",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-1858",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-1858",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-1860",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-1860",
+        "official_source_url": "http://docs.info.apple.com/article.html?artnum=306172",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-2449",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-2449",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-2450",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-2450",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-3382",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-3382",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-3383",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-3383",
+        "official_source_url": "http://lists.apple.com/archives/security-announce/2008//Jun/msg00002.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-3384",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-3384",
+        "official_source_url": "http://osvdb.org/39035",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-3385",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-3385",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-3386",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-3386",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-4724",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-4724",
+        "official_source_url": "http://archives.neohapsis.com/archives/bugtraq/2007-09/0040.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-5333",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-5333",
+        "official_source_url": "http://jvn.jp/jp/JVN%2309470767/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-5342",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-5342",
+        "official_source_url": "http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-5461",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-5461",
+        "official_source_url": "http://geronimo.apache.org/2007/10/18/potential-vulnerability-in-apache-tomcat-webdav-servlet.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2007-6286",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2007-6286",
+        "official_source_url": "http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2008-0002",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2008-0002",
+        "official_source_url": "http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2008-0128",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2008-0128",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/01/23.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2008-0457",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2008-0457",
+        "official_source_url": "http://secunia.com/advisories/28787",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2008-1232",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2008-1232",
+        "official_source_url": "http://community.ca.com/blogs/casecurityresponseblog/archive/2009/06/15/ca20090615-02-ca-service-desk-tomcat-cross-site-scripting-vulnerability.aspx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2008-1947",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2008-1947",
+        "official_source_url": "http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2016-8735",
+        "system_id": "apache-tomcat",
+        "title": "Apache Tomcat Remote Code Execution Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2017-12615",
+        "system_id": "apache-tomcat",
+        "title": "Apache Tomcat on Windows Remote Code Execution Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2017-12617",
+        "system_id": "apache-tomcat",
+        "title": "Apache Tomcat Remote Code Execution Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2020-1938",
+        "system_id": "apache-tomcat",
+        "title": "Apache Tomcat Improper Privilege Management Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2021-1498",
+        "system_id": "apache-tomcat",
+        "title": "Cisco HyperFlex HX Data Platform Command Injection Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--CVE-2025-24813",
+        "system_id": "apache-tomcat",
+        "title": "Apache Tomcat Path Equivalence Vulnerability",
+        "official_source_url": "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--a2590dc47b",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-66614",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66614",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--ac3714eb57",
+        "system_id": "apache-tomcat",
+        "title": "Migration Guide",
+        "official_source_url": "https://tomcat.apache.org/migration.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--aea19824c2",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat 11.0",
+        "official_source_url": "https://tomcat.apache.org/tomcat-11.0-doc/index.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--af3c91be5c",
+        "system_id": "apache-tomcat",
+        "title": "BUILDING.txt",
+        "official_source_url": "https://tomcat.apache.org/tomcat-10.0-doc/BUILDING.txt",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--b23c5e35c9",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-55752",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-55752",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--b55bb1b121",
+        "system_id": "apache-tomcat",
+        "title": "Heritage",
+        "official_source_url": "https://tomcat.apache.org/heritage.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--b744a50549",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-55668",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-55668",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--b7ac0eae42",
+        "system_id": "apache-tomcat",
+        "title": "Overview",
+        "official_source_url": "https://tomcat.apache.org/getinvolved.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--ba168e654b",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat 10",
+        "official_source_url": "https://tomcat.apache.org/download-10.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--bc806658b3",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat 11",
+        "official_source_url": "https://tomcat.apache.org/download-11.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--bdde1865a6",
+        "system_id": "apache-tomcat",
+        "title": "Security Reports",
+        "official_source_url": "https://tomcat.apache.org/security.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--c10a63610c",
+        "system_id": "apache-tomcat",
+        "title": "end of life",
+        "official_source_url": "https://tomcat.apache.org/tomcat-10.0-eol.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--c24871aac5",
+        "system_id": "apache-tomcat",
+        "title": "Twitter",
+        "official_source_url": "https://twitter.com/theapachetomcat",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--c470f39b6f",
+        "system_id": "apache-tomcat",
+        "title": "Fixed in Apache Tomcat 10.1.52",
+        "official_source_url": "https://tomcat.apache.org/security-10.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--c8a2e47ea5",
+        "system_id": "apache-tomcat",
+        "title": "Wiki",
+        "official_source_url": "https://cwiki.apache.org/confluence/display/TOMCAT",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--cc1565901e",
+        "system_id": "apache-tomcat",
+        "title": "YouTube",
+        "official_source_url": "https://www.youtube.com/c/ApacheTomcatOfficial",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--ce6ff70ffe",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-31650",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-31650",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--cf335ad174",
+        "system_id": "apache-tomcat",
+        "title": "cdde8e65",
+        "official_source_url": "https://github.com/apache/tomcat/commit/cdde8e655bc1c5c60a07efd216251d77c52fd7f6",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--d33b4cbf62",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-46701",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-46701",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--d3ce0dca4e",
+        "system_id": "apache-tomcat",
+        "title": "Buildbot",
+        "official_source_url": "https://tomcat.apache.org/ci.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--d9121f9c30",
+        "system_id": "apache-tomcat",
+        "title": "Source code",
+        "official_source_url": "https://tomcat.apache.org/source.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--d9eef50097",
+        "system_id": "apache-tomcat",
+        "title": "2c680011",
+        "official_source_url": "https://github.com/apache/tomcat/commit/2c6800111e7d8d8d5403c07978ea9bff3db5a5a5",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--dc60148766",
+        "system_id": "apache-tomcat",
+        "title": "Taglibs",
+        "official_source_url": "https://tomcat.apache.org/download-taglibs.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--e0fd2f8d0a",
+        "system_id": "apache-tomcat",
+        "title": "Resources",
+        "official_source_url": "https://tomcat.apache.org/resources.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--e112505b22",
+        "system_id": "apache-tomcat",
+        "title": "7617b9c2",
+        "official_source_url": "https://github.com/apache/tomcat/commit/7617b9c247bc77ed0444dd69adcd8aa48777886c",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--e36bb1c6d7",
+        "system_id": "apache-tomcat",
+        "title": "Upgrading",
+        "official_source_url": "https://tomcat.apache.org/upgrading.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--e4c4769574",
+        "system_id": "apache-tomcat",
+        "title": "Find help",
+        "official_source_url": "https://tomcat.apache.org/findhelp.html",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--e5e80c0a91",
+        "system_id": "apache-tomcat",
+        "title": "e0e07812",
+        "official_source_url": "https://github.com/apache/tomcat/commit/e0e07812224d327a321babb554f5a5758d30cc49",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--e9bbe07c29",
+        "system_id": "apache-tomcat",
+        "title": "fc42bbcc",
+        "official_source_url": "https://github.com/apache/tomcat/commit/fc42bbccb9041fafd194fbfdf3eab1d44cb5c45c",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--eaa9f7ab66",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-49124",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-49124",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--ec10641321",
+        "system_id": "apache-tomcat",
+        "title": "FAQ",
+        "official_source_url": "https://cwiki.apache.org/confluence/display/TOMCAT/FAQ",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--f182e5bf64",
+        "system_id": "apache-tomcat",
+        "title": "711b465c",
+        "official_source_url": "https://github.com/apache/tomcat/commit/711b465cf22684a1acf0cb43501cdbbce9b6c5f4",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--f38adeb312",
+        "system_id": "apache-tomcat",
+        "title": "Archives",
+        "official_source_url": "https://archive.apache.org/dist/tomcat/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--f64ec916fb",
+        "system_id": "apache-tomcat",
+        "title": "Tomcat Migration Tool for Jakarta EE",
+        "official_source_url": "https://tomcat.apache.org/download-migration.cgi",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--fc53c949b0",
+        "system_id": "apache-tomcat",
+        "title": "Swag",
+        "official_source_url": "https://www.redbubble.com/people/comdev/works/30885254-apache-tomcat",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "apache-tomcat--ff9ba8aa3b",
+        "system_id": "apache-tomcat",
+        "title": "CVE-2025-53506",
+        "official_source_url": "http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-53506",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "aspnet-core--CVE-2020-1045",
+        "system_id": "aspnet-core",
+        "title": "CVE-2020-1045",
+        "official_source_url": "https://access.redhat.com/errata/RHSA-2020:3699",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "aspnet-core--CVE-2020-1597",
+        "system_id": "aspnet-core",
+        "title": "CVE-2020-1597",
+        "official_source_url": "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/WH5FQ5VT3JGHXFXOETHCTBWJUIAPGHHT/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "aspnet-core--CVE-2026-26130",
+        "system_id": "aspnet-core",
+        "title": "CVE-2026-26130",
+        "official_source_url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-26130",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--0158a8ddd8",
+        "system_id": "caddy",
+        "title": "Caddy: MatchHost becomes case-sensitive for large host lists (>100), enabling host-based route/auth bypass",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-x76f-jf84-rqj8",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--0921003cc6",
+        "system_id": "caddy",
+        "title": "Notifications",
+        "official_source_url": "https://github.com/login?return_to=%2Fcaddyserver%2Fcaddy",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--146569d56a",
+        "system_id": "caddy",
+        "title": "mTLS client authentication silently fails open when CA certificate file is missing or malformed",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-hffm-g8v7-wrv7",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--3b182d7701",
+        "system_id": "caddy",
+        "title": "Sign up",
+        "official_source_url": "https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Frepos%2Fadvisories%2Findex&source=header-repo&source_repo=caddyserver%2Fcaddy",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--44cbfe52c8",
+        "system_id": "caddy",
+        "title": "caddy",
+        "official_source_url": "https://github.com/caddyserver/caddy",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--54eb0db436",
+        "system_id": "caddy",
+        "title": "caddyserver",
+        "official_source_url": "https://github.com/caddyserver",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--6fb600a3f4",
+        "system_id": "caddy",
+        "title": "Improper sanitization of glob characters in file matcher may lead to bypassing security protections",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-4xrr-hq4w-6vf4",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--745ad1485a",
+        "system_id": "caddy",
+        "title": "Issues \n           201",
+        "official_source_url": "https://github.com/caddyserver/caddy/issues",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--752be55ec0",
+        "system_id": "caddy",
+        "title": "Security \n           8",
+        "official_source_url": "https://github.com/caddyserver/caddy/security",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--7c57bb87cf",
+        "system_id": "caddy",
+        "title": "Actions",
+        "official_source_url": "https://github.com/caddyserver/caddy/actions",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--85a3ff1f30",
+        "system_id": "caddy",
+        "title": "vars_regexp double-expands user input, leaking env vars and files",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-m2w3-8f23-hxxf",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--883104fe6c",
+        "system_id": "caddy",
+        "title": "Sign in",
+        "official_source_url": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fcaddyserver%2Fcaddy%2Fsecurity%2Fadvisories",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--921b808417",
+        "system_id": "caddy",
+        "title": "Caddy: MatchPath %xx (escaped-path) branch skips case normalization, enabling path-based route/auth bypass",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-g7pc-pc7g-h8jh",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--ade36bbb20",
+        "system_id": "caddy",
+        "title": "cross-origin config application via local admin API /load (caddy)",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-879p-475x-rqh2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--c52981f5e2",
+        "system_id": "caddy",
+        "title": "Unicode case-folding length expansion causes incorrect split_path index (SCRIPT_NAME/PATH_INFO confusion) in FastCGI transport",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-5r3v-vc8m-m96g",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--cf9582f72a",
+        "system_id": "caddy",
+        "title": "Skip to content",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--e598b86910",
+        "system_id": "caddy",
+        "title": "Insights",
+        "official_source_url": "https://github.com/caddyserver/caddy/pulse",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--e89796c7cf",
+        "system_id": "caddy",
+        "title": "Policy",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/policy",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--f0734ced73",
+        "system_id": "caddy",
+        "title": "Pull requests \n           46",
+        "official_source_url": "https://github.com/caddyserver/caddy/pulls",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--f5135e4d5d",
+        "system_id": "caddy",
+        "title": "Caddy forward_auth copy_headers Does Not Strip Client-Supplied Headers, Allowing Identity Injection and Privilege Escalation",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/GHSA-7r4p-vjf4-gxv4",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "caddy--fedac463f1",
+        "system_id": "caddy",
+        "title": "Report a vulnerability",
+        "official_source_url": "https://github.com/caddyserver/caddy/security/advisories/new",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--05a97ef95a",
+        "system_id": "directus",
+        "title": "Insights",
+        "official_source_url": "https://github.com/directus/directus/pulse",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--0f0b39c9f0",
+        "system_id": "directus",
+        "title": "Open redirect in SAML",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-3573-4c68-g8cc",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--27bdf5ad98",
+        "system_id": "directus",
+        "title": "directus",
+        "official_source_url": "https://github.com/directus",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--2af6171363",
+        "system_id": "directus",
+        "title": "Skip to content",
+        "official_source_url": "https://github.com/directus/directus/security/advisories",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--371ca874bf",
+        "system_id": "directus",
+        "title": "Actions",
+        "official_source_url": "https://github.com/directus/directus/actions",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--42698ca19c",
+        "system_id": "directus",
+        "title": "Improper Permission Handling on Deleted Fields in Directus",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-9x5g-62gj-wqf2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--4894f4700e",
+        "system_id": "directus",
+        "title": "5",
+        "official_source_url": "https://github.com/directus/directus/security/advisories?page=5",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--6171b57605",
+        "system_id": "directus",
+        "title": "Projects",
+        "official_source_url": "https://github.com/directus/directus/projects",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--683f41088d",
+        "system_id": "directus",
+        "title": "Conceal fields are searchable if read permissions enabled",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-8jpw-gpr4-8cmh",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--699c51e2fd",
+        "system_id": "directus",
+        "title": "Information Leakage: Existing Collections",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-cph6-524f-3hgr",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--6bb5a641ff",
+        "system_id": "directus",
+        "title": "User Enumeration via Password Reset Timing Attack",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-jr94-gj3h-c8rf",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--6e0381fffb",
+        "system_id": "directus",
+        "title": "3",
+        "official_source_url": "https://github.com/directus/directus/security/advisories?page=3",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--780d166a7c",
+        "system_id": "directus",
+        "title": "Issues \n           344",
+        "official_source_url": "https://github.com/directus/directus/issues",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--838e2a1aa3",
+        "system_id": "directus",
+        "title": "Security \n           46",
+        "official_source_url": "https://github.com/directus/directus/security",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--8545270cc0",
+        "system_id": "directus",
+        "title": "Store XSS",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-vv2v-pw69-8crf",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--8a6ee374c5",
+        "system_id": "directus",
+        "title": "Missing permission checks for manual trigger Flows",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-7cvf-pxgp-42fc",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--928c5c25d6",
+        "system_id": "directus",
+        "title": "Pull requests \n           40",
+        "official_source_url": "https://github.com/directus/directus/pulls",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--9ec35d1559",
+        "system_id": "directus",
+        "title": "2",
+        "official_source_url": "https://github.com/directus/directus/security/advisories?page=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--ae275563c7",
+        "system_id": "directus",
+        "title": "directus",
+        "official_source_url": "https://github.com/directus/directus",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--ae534d9502",
+        "system_id": "directus",
+        "title": "Notifications",
+        "official_source_url": "https://github.com/login?return_to=%2Fdirectus%2Fdirectus",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--c792942c56",
+        "system_id": "directus",
+        "title": "Discussions",
+        "official_source_url": "https://github.com/directus/directus/discussions",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--c95f7731b4",
+        "system_id": "directus",
+        "title": "Unauthenticated file upload and file modification due to lacking input sanitization",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-mv33-9f6j-pfmc",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--cc08335ec9",
+        "system_id": "directus",
+        "title": "4",
+        "official_source_url": "https://github.com/directus/directus/security/advisories?page=4",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--ce991ada6e",
+        "system_id": "directus",
+        "title": "Sign up",
+        "official_source_url": "https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Frepos%2Fadvisories%2Findex&source=header-repo&source_repo=directus%2Fdirectus",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--dbeb181232",
+        "system_id": "directus",
+        "title": "S3 assets become unavailable after a burst of malformed transformations",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-j8xj-7jff-46mx",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--ef120db8c2",
+        "system_id": "directus",
+        "title": "Report a vulnerability",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/new",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--f0befb3e4d",
+        "system_id": "directus",
+        "title": "Policy",
+        "official_source_url": "https://github.com/directus/directus/security/policy",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--f2d76edbde",
+        "system_id": "directus",
+        "title": "Sign in",
+        "official_source_url": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdirectus%2Fdirectus%2Fsecurity%2Fadvisories",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "directus--f9abf30989",
+        "system_id": "directus",
+        "title": "Directus version number disclosure",
+        "official_source_url": "https://github.com/directus/directus/security/advisories/GHSA-rmjh-cf9q-pv7q",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--0a6de28d35",
+        "system_id": "discourse",
+        "title": "3.5.0.beta7: Smart link editing, better invite tracking, unique icons, and fixing name management",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta7-smart-link-editing-better-invite-tracking-unique-icons-and-fixing-name-management/370633",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--111e9b52a2",
+        "system_id": "discourse",
+        "title": "3.5.0.beta9: Improving color management, core welcome banner, and staff action log filters",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta9-improving-color-management-core-welcome-banner-and-staff-action-log-filters/379217",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--124fce0a46",
+        "system_id": "discourse",
+        "title": "3.5.0.beta4 Security fix release",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta4-security-fix-release/364850",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--20c3aec988",
+        "system_id": "discourse",
+        "title": "3.5.0: Major release",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-major-release/379212",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--321c09b9ad",
+        "system_id": "discourse",
+        "title": "January 2026 Releases",
+        "official_source_url": "https://meta.discourse.org/t/january-2026-releases/393903",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--3b96456013",
+        "system_id": "discourse",
+        "title": "3.4.0.beta3: Check for updates on What\u2019s New page, filter by user in the review queue, threading in Chat DMs and group chats, and more",
+        "official_source_url": "https://meta.discourse.org/t/3-4-0-beta3-check-for-updates-on-what-s-new-page-filter-by-user-in-the-review-queue-threading-in-chat-dms-and-group-chats-and-more/343237",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--4222d879a1",
+        "system_id": "discourse",
+        "title": "3.4.2: Security and bug fix release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-2-security-and-bug-fix-release/358152",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--451d4d9871",
+        "system_id": "discourse",
+        "title": "3.5.0.beta1: Dark/light mode selector, better flagging info, and encouraging more valuable conversations",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta1-dark-light-mode-selector-better-flagging-info-and-encouraging-more-valuable-conversations/353246",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--4dbfe76896",
+        "system_id": "discourse",
+        "title": "3.5.0.beta6 Security fixes release",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta6-security-fixes-release/369346",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--5d3cafdece",
+        "system_id": "discourse",
+        "title": "Release v2025.11.0: AI translations improvements, chat search, new review queue, and improvements for posts with images",
+        "official_source_url": "https://meta.discourse.org/t/release-v2025-11-0-ai-translations-improvements-chat-search-new-review-queue-and-improvements-for-posts-with-images/389615",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--615bee56ae",
+        "system_id": "discourse",
+        "title": "3.4.4: Bug fix and UX release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-4-bug-fix-and-ux-release/367301",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--6216e2732b",
+        "system_id": "discourse",
+        "title": "3.5.2: Security and maintenance release",
+        "official_source_url": "https://meta.discourse.org/t/3-5-2-security-and-maintenance-release/386388",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--68e2bb93e1",
+        "system_id": "discourse",
+        "title": "3.5.0.beta5: Improved admin search, AI forum research, easier site appearance configuration, and simpler plugin development",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta5-improved-admin-search-ai-forum-research-easier-site-appearance-configuration-and-simpler-plugin-development/367300",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--703d073816",
+        "system_id": "discourse",
+        "title": "3.5.0.beta2: Review Queue, Welcome Banner, Admin Interface, and more",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta2-review-queue-welcome-banner-admin-interface-and-more/358151",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--734b2c6337",
+        "system_id": "discourse",
+        "title": "3.4.6: Security fix release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-6-security-fix-release/370631",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--76d1008283",
+        "system_id": "discourse",
+        "title": "Release v2025.11.1: Security and maintenance release",
+        "official_source_url": "https://meta.discourse.org/t/release-v2025-11-1-security-and-maintenance-release/392356",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--79ee74932d",
+        "system_id": "discourse",
+        "title": "3.4.3: Bug fix and UX release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-3-bug-fix-and-ux-release/362895",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--7dafb7d908",
+        "system_id": "discourse",
+        "title": "3.4.0.beta4: Redesigned emojis, exporting user data, flagging illegal content and more",
+        "official_source_url": "https://meta.discourse.org/t/3-4-0-beta4-redesigned-emojis-exporting-user-data-flagging-illegal-content-and-more/349299",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--88ede35504",
+        "system_id": "discourse",
+        "title": "3.4.1: Bug fix and UX release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-1-bug-fix-and-ux-release/353247",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--8c344d4912",
+        "system_id": "discourse",
+        "title": "Release v3.5.3: Security and maintenance release",
+        "official_source_url": "https://meta.discourse.org/t/release-v3-5-3-security-and-maintenance-release/392357",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--9052caf22d",
+        "system_id": "discourse",
+        "title": "3.6.0.beta1: Color palette editing, user fields on sign up, themeable site setting discovery, images with Google AI, and reliable drafts",
+        "official_source_url": "https://meta.discourse.org/t/3-6-0-beta1-color-palette-editing-user-fields-on-sign-up-themeable-site-setting-discovery-images-with-google-ai-and-reliable-drafts/383509",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--9812e0316d",
+        "system_id": "discourse",
+        "title": "3.5.1: Security and maintenance release",
+        "official_source_url": "https://meta.discourse.org/t/3-5-1-security-and-maintenance-release/383511",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--b0b7e41525",
+        "system_id": "discourse",
+        "title": "3.4.7: Security and maintenance release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-7-security-and-maintenance-release/375747",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--b1f0515c49",
+        "system_id": "discourse",
+        "title": "3.3.4: Security and maintenance release",
+        "official_source_url": "https://meta.discourse.org/t/3-3-4-security-and-maintenance-release/349301",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--b5351f62de",
+        "system_id": "discourse",
+        "title": "3.5.0beta3: Full admin search, better font selection, more robust site search, category personalization, and easier configuration management",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0beta3-full-admin-search-better-font-selection-more-robust-site-search-category-personalization-and-easier-configuration-management/362894",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--be91796fd3",
+        "system_id": "discourse",
+        "title": "3.4.5 Security fixes release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-5-security-fixes-release/369347",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--c407380775",
+        "system_id": "discourse",
+        "title": "3.6.0.beta2: Built-in palette editing, live AI translation progress, and better wiki tracking",
+        "official_source_url": "https://meta.discourse.org/t/3-6-0-beta2-built-in-palette-editing-live-ai-translation-progress-and-better-wiki-tracking/386389",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--c9760a2b16",
+        "system_id": "discourse",
+        "title": "Release v2025.12.0: Discourse Rewind, new review queue and UI to create tags, Chat channel customisation, and live PR statuses",
+        "official_source_url": "https://meta.discourse.org/t/release-v2025-12-0-discourse-rewind-new-review-queue-and-ui-to-create-tags-chat-channel-customisation-and-live-pr-statuses/392314",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--dc3c665a74",
+        "system_id": "discourse",
+        "title": "3.5.0.beta8: Bundled plugins, a new theme, better color management, powerful filtering, and advanced image controls",
+        "official_source_url": "https://meta.discourse.org/t/3-5-0-beta8-bundled-plugins-a-new-theme-better-color-management-powerful-filtering-and-advanced-image-controls/375746",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "discourse--feb2fecd8e",
+        "system_id": "discourse",
+        "title": "3.4.0: Major Release",
+        "official_source_url": "https://meta.discourse.org/t/3-4-0-major-release/349303",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--039dc7ddc9",
+        "system_id": "django",
+        "title": "March 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/mar/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--04b01f915c",
+        "system_id": "django",
+        "title": "May 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/may/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--09baedefbe",
+        "system_id": "django",
+        "title": "April 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/apr/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--0aab906a01",
+        "system_id": "django",
+        "title": "Google Summer of Code 2026 with Django",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/feb/24/google-summer-of-code-2026-with-django/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--0b0d3e8528",
+        "system_id": "django",
+        "title": "June 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/jun/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--0d2f5bfda9",
+        "system_id": "django",
+        "title": "2026",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--0de38e6fb7",
+        "system_id": "django",
+        "title": "5.2",
+        "official_source_url": "https://docs.djangoproject.com/en/5.2/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--0e66e85b69",
+        "system_id": "django",
+        "title": "Next",
+        "official_source_url": "https://www.djangoproject.com/weblog/?page=2",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--119d0d44f0",
+        "system_id": "django",
+        "title": "5.1",
+        "official_source_url": "https://docs.djangoproject.com/en/5.1/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--12d8627bfa",
+        "system_id": "django",
+        "title": "December 2022",
+        "official_source_url": "https://www.djangoproject.com/weblog/2022/dec/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--1596250124",
+        "system_id": "django",
+        "title": "September 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/sep/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--163aa85f65",
+        "system_id": "django",
+        "title": "Plan to Adopt Contributor Covenant 3 as Django\u2019s New Code of Conduct",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/feb/19/2026-coc-update-phase-2/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--1b9318835e",
+        "system_id": "django",
+        "title": "5.0",
+        "official_source_url": "https://docs.djangoproject.com/en/5.0/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--24b638c263",
+        "system_id": "django",
+        "title": "Djangonaut Space - Session 6 Accepting Applications",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/jan/21/djangonaut-space-session-6-accepting-applications/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--254015d606",
+        "system_id": "django",
+        "title": "Django Steering Council 2025 Year in Review",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/feb/11/steering-council-2025-year-in-review/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--29d47a1fa6",
+        "system_id": "django",
+        "title": "February 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/feb/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--2a2a9aae5c",
+        "system_id": "django",
+        "title": "2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--309f1c9e59",
+        "system_id": "django",
+        "title": "May 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/may/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--3215595b39",
+        "system_id": "django",
+        "title": "December 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/dec/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--3d449deb1a",
+        "system_id": "django",
+        "title": "4.2",
+        "official_source_url": "https://docs.djangoproject.com/en/4.2/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--4081c9ffc7",
+        "system_id": "django",
+        "title": "2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--40fd3207dc",
+        "system_id": "django",
+        "title": "September 2022",
+        "official_source_url": "https://www.djangoproject.com/weblog/2022/sep/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--42826bad6f",
+        "system_id": "django",
+        "title": "September 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/sep/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--4664cc7401",
+        "system_id": "django",
+        "title": "November 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/nov/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--48994827de",
+        "system_id": "django",
+        "title": "2.0",
+        "official_source_url": "https://docs.djangoproject.com/en/2.0/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--4c2cb798dd",
+        "system_id": "django",
+        "title": "March 2026",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/mar/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--51863f2eee",
+        "system_id": "django",
+        "title": "April 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/apr/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--5251fd783b",
+        "system_id": "django",
+        "title": "February 2026",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/feb/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--54c04190fc",
+        "system_id": "django",
+        "title": "February 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/feb/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--5799bb4ab0",
+        "system_id": "django",
+        "title": "2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--59cca01c55",
+        "system_id": "django",
+        "title": "DSF member of the month -  Baptiste Mispelon",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/feb/21/dsf-member-of-the-month-baptiste-mispelon/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--5c72de7281",
+        "system_id": "django",
+        "title": "October 2022",
+        "official_source_url": "https://www.djangoproject.com/weblog/2022/oct/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--6550a47df6",
+        "system_id": "django",
+        "title": "1.10",
+        "official_source_url": "https://docs.djangoproject.com/en/1.10/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--6ae5586701",
+        "system_id": "django",
+        "title": "March 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/mar/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--6db958e7e6",
+        "system_id": "django",
+        "title": "October 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/oct/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--70feb242af",
+        "system_id": "django",
+        "title": "September 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/sep/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--71dee0d572",
+        "system_id": "django",
+        "title": "June 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/jun/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--758119a235",
+        "system_id": "django",
+        "title": "Django security releases issued: 6.0.3, 5.2.12, and 4.2.29",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/mar/03/security-releases/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--76e1c5f91b",
+        "system_id": "django",
+        "title": "3.2",
+        "official_source_url": "https://docs.djangoproject.com/en/3.2/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--7a24d6ab99",
+        "system_id": "django",
+        "title": "August 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/aug/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--7fd9d0710a",
+        "system_id": "django",
+        "title": "April 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/apr/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--809f77ff6c",
+        "system_id": "django",
+        "title": "May 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/may/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--86345b7646",
+        "system_id": "django",
+        "title": "6.0",
+        "official_source_url": "https://docs.djangoproject.com/en/6.0/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--89b37a409b",
+        "system_id": "django",
+        "title": "January 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/jan/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--8d2e24a3e2",
+        "system_id": "django",
+        "title": "January 2026",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/jan/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--8deb186b5c",
+        "system_id": "django",
+        "title": "2.1",
+        "official_source_url": "https://docs.djangoproject.com/en/2.1/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--8f1d5b2184",
+        "system_id": "django",
+        "title": "December 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/dec/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--928c980a74",
+        "system_id": "django",
+        "title": "October 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/oct/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--9b63010325",
+        "system_id": "django",
+        "title": "July 2023",
+        "official_source_url": "https://www.djangoproject.com/weblog/2023/jul/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--9eea409102",
+        "system_id": "django",
+        "title": "August 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/aug/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--a654414489",
+        "system_id": "django",
+        "title": "DSF member of the month -  Theresa Seyram Agbenyegah",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/mar/08/dsf-member-of-the-month-theresa-seyram-agbenyegah/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--a74cec3cef",
+        "system_id": "django",
+        "title": "November 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/nov/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--a879747124",
+        "system_id": "django",
+        "title": "3.1",
+        "official_source_url": "https://docs.djangoproject.com/en/3.1/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--ab84c56040",
+        "system_id": "django",
+        "title": "June 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/jun/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--abc897f0c7",
+        "system_id": "django",
+        "title": "4.0",
+        "official_source_url": "https://docs.djangoproject.com/en/4.0/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--ad28ca10f9",
+        "system_id": "django",
+        "title": "2.2",
+        "official_source_url": "https://docs.djangoproject.com/en/2.2/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--ae8246f865",
+        "system_id": "django",
+        "title": "July 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/jul/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--aec284a220",
+        "system_id": "django",
+        "title": "4.1",
+        "official_source_url": "https://docs.djangoproject.com/en/4.1/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--b1898bd10a",
+        "system_id": "django",
+        "title": "March 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/mar/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--ba34c0875e",
+        "system_id": "django",
+        "title": "November 2025",
+        "official_source_url": "https://www.djangoproject.com/weblog/2025/nov/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--be47316ecb",
+        "system_id": "django",
+        "title": "3.0",
+        "official_source_url": "https://docs.djangoproject.com/en/3.0/releases/security/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--c0e395334c",
+        "system_id": "django",
+        "title": "February 2024",
+        "official_source_url": "https://www.djangoproject.com/weblog/2024/feb/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      },
+      {
+        "canonical_id": "django--c1c8aebaa5",
+        "system_id": "django",
+        "title": "Recent trends in the work of the Django Security Team",
+        "official_source_url": "https://www.djangoproject.com/weblog/2026/feb/04/recent-trends-security-team/",
+        "version_gap_reason": "official bulletin or aggregated source did not expose explicit affected/fixed versions"
+      }
+    ],
+    "lab_pending": [],
+    "auto_promoted_entities": [
+      {
+        "entity_id": "directus--repo--directus-directus",
+        "display_name": "directus  /  directus",
+        "root_system_id": "directus",
+        "entity_type": "repo",
+        "catalog_source": "Directus GitHub Advisories"
+      },
+      {
+        "entity_id": "ghost--repo--tryghost-ghost",
+        "display_name": "TryGhost  /  Ghost",
+        "root_system_id": "ghost",
+        "entity_type": "repo",
+        "catalog_source": "Ghost GitHub Advisories"
+      },
+      {
+        "entity_id": "magento-open-source--repo--magento-magento2",
+        "display_name": "magento  /  magento2",
+        "root_system_id": "magento-open-source",
+        "entity_type": "repo",
+        "catalog_source": "Magento GitHub Advisories"
+      },
+      {
+        "entity_id": "opencart--repo--opencart-opencart",
+        "display_name": "opencart  /  opencart",
+        "root_system_id": "opencart",
+        "entity_type": "repo",
+        "catalog_source": "OpenCart Releases"
+      },
+      {
+        "entity_id": "openmage--repo--openmage-magento-lts",
+        "display_name": "OpenMage  /  magento-lts",
+        "root_system_id": "openmage",
+        "entity_type": "repo",
+        "catalog_source": "OpenMage GitHub Advisories"
+      },
+      {
+        "entity_id": "prestashop--repo--prestashop-prestashop",
+        "display_name": "PrestaShop  /  PrestaShop",
+        "root_system_id": "prestashop",
+        "entity_type": "repo",
+        "catalog_source": "GitHub PrestaShop Advisories"
+      },
+      {
+        "entity_id": "saleor--repo--saleor-saleor",
+        "display_name": "saleor  /  saleor",
+        "root_system_id": "saleor",
+        "entity_type": "repo",
+        "catalog_source": "GitHub Saleor Advisories"
+      },
+      {
+        "entity_id": "shopware--repo--shopware-shopware",
+        "display_name": "shopware  /  shopware",
+        "root_system_id": "shopware",
+        "entity_type": "repo",
+        "catalog_source": "Shopware Security Advisories"
+      },
+      {
+        "entity_id": "strapi--repo--strapi-strapi",
+        "display_name": "strapi  /  strapi",
+        "root_system_id": "strapi",
+        "entity_type": "repo",
+        "catalog_source": "Strapi GitHub Advisories"
+      },
+      {
+        "entity_id": "woocommerce--repo--woocommerce-woocommerce",
+        "display_name": "woocommerce  /  woocommerce",
+        "root_system_id": "woocommerce",
+        "entity_type": "repo",
+        "catalog_source": "GitHub WooCommerce Advisories"
+      }
+    ]
+  },
+  "monitor_summary": {
+    "generated_at": "2026-03-29T10:50:39+00:00",
+    "active_source_count": 102,
+    "green_source_count": 102,
+    "source_failure_count": 0,
+    "open_alert_count": 0,
+    "resolved_alert_count": 101,
+    "last_fully_green_run": "2026-03-29T10:50:39+00:00",
+    "source_catalog": {
+      "system_count": 62,
+      "source_count": 179,
+      "retired_source_count": 77
+    },
+    "ingest": {
+      "new_count": 0,
+      "updated_count": 0,
+      "failure_count": 0,
+      "systems_touched": []
+    },
+    "validation": {
+      "passed": true,
+      "error_count": 0,
+      "errors": []
+    },
+    "entity_coverage": {
+      "cataloged_entity_total": 110,
+      "candidate_entity_total": 7,
+      "history_full_complete_count": 41,
+      "workflow_complete_count": 100,
+      "version_mapped_count": 52,
+      "official_source_covered_count": 100
+    },
+    "version_coverage": {
+      "cataloged_entity_total": 110,
+      "latest_version_synced_count": 95,
+      "source_gap_count": 15,
+      "security_version_total": 6314,
+      "security_version_entity_count": 83,
+      "auto_promoted_entity_count": 10,
+      "lab_enqueued_count": 0
+    },
+    "lab_enqueue": {
+      "enqueued": 0,
+      "queue_total": 2380,
+      "pending_count": 0
+    }
+  }
+}
diff --git a/docs/testing-completeness-report.md b/docs/testing-completeness-report.md
index 38a7c3ca..be1fd740 100644
--- a/docs/testing-completeness-report.md
+++ b/docs/testing-completeness-report.md
@@ -1,6 +1,6 @@
 # 全库 Advisory 完整度报告
 
-- 生成时间: `2026-03-28T09:18:24+00:00`
+- 生成时间: `2026-03-29T10:50:56+00:00`
 - 最新 advisory 完整度: `89/89` `verified-real`
 - 合成验证数量: `0`
 - 阻塞数量: `0`
@@ -8,7 +8,7 @@
 - 完整度百分比: `100.0%`
 - active source 全绿: `102/102`
 - source open alerts: `0`
-- 最近一次 source 全绿: `2026-03-28T09:18:08+00:00`
+- 最近一次 source 全绿: `2026-03-29T10:50:39+00:00`
 - 已编目实体: `110`
 - 待编目 backlog: `7`