From 9c8cc7ec8a83920f5260379bc68ef9728966d685 Mon Sep 17 00:00:00 2001 From: hao Date: Sun, 22 Mar 2026 02:19:03 -0700 Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E6=8E=A7=E6=9B=B4=E6=96=B0:=202026-03?= =?UTF-8?q?-22=2002:17:04?= 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 | 2 +- .../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 | 10 +- .../dashboard/data/entity-completeness.json | 2 +- .../dashboard/data/entity-queues.json | 2 +- .../dashboard/data/lab-enqueue-summary.json | 2 +- .../dashboard/data/monitor-summary.json | 4 +- .../dashboard/data/release-index.json | 2 +- .../dashboard/data/source-catalog-audit.json | 2 +- .../dashboard/data/source-health.json | 282 +- .../dashboard/data/version-backlog.json | 2 +- .../dashboard/data/version-completeness.json | 2 +- .../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 | 2 +- .../generated/dashboard/entities.json | 218 +- .../generated/dashboard/summary.json | 132 +- .../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 | 2 +- 08-threat-intel/generated/latest-ingest.md | 2 +- .../generated/monitor-summary.json | 4 +- 08-threat-intel/generated/release-index.json | 2 +- 08-threat-intel/generated/run-summary.json | 2 +- .../generated/source-catalog-audit.json | 2 +- .../generated/source-catalog-audit.md | 2 +- 08-threat-intel/generated/source-health.json | 282 +- .../generated/version-backlog.json | 2 +- .../generated/version-completeness.json | 2 +- .../generated/version-sync-report.md | 2 +- .../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 +- ...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-22T09-18-32+00-00.json | 10257 ++++++++++++++++ docs/testing-completeness-report.md | 4 +- 208 files changed, 10988 insertions(+), 731 deletions(-) create mode 100644 08-threat-intel/registry/monitoring/2026-03-22T09-18-32+00-00.json diff --git a/07-framework-security/cms/directus/INDEX.md b/07-framework-security/cms/directus/INDEX.md index a370f43a..ab5f7ac4 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/discourse/INDEX.md b/07-framework-security/cms/discourse/INDEX.md index e2951b91..4bf3e159 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/drupal/INDEX.md b/07-framework-security/cms/drupal/INDEX.md index f56c1cd8..398f17f7 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/ghost/INDEX.md b/07-framework-security/cms/ghost/INDEX.md index f413edff..eee12e5a 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/joomla/INDEX.md b/07-framework-security/cms/joomla/INDEX.md index e2745412..cd17e117 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/mediawiki/INDEX.md b/07-framework-security/cms/mediawiki/INDEX.md index 538d96ea..1c4154ee 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/moodle/INDEX.md b/07-framework-security/cms/moodle/INDEX.md index d04d6f4c..72bd1c55 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/strapi/INDEX.md b/07-framework-security/cms/strapi/INDEX.md index 2dbc6e15..b0d2a7bb 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/cms/wordpress/INDEX.md b/07-framework-security/cms/wordpress/INDEX.md index dbe62088..48517601 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/adobe-commerce/INDEX.md b/07-framework-security/ecommerce/adobe-commerce/INDEX.md index 5f119806..427f8e87 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+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 2b20e92b..6b4b7b12 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/medusa/INDEX.md b/07-framework-security/ecommerce/medusa/INDEX.md index e90900a2..96dcba13 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/opencart/INDEX.md b/07-framework-security/ecommerce/opencart/INDEX.md index b74239e1..9b7d481e 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/openmage/INDEX.md b/07-framework-security/ecommerce/openmage/INDEX.md index df82d41e..f03a5540 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/prestashop/INDEX.md b/07-framework-security/ecommerce/prestashop/INDEX.md index 725ee4d6..0aed4e6c 100644 --- a/07-framework-security/ecommerce/prestashop/INDEX.md +++ b/07-framework-security/ecommerce/prestashop/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `112` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/saleor/INDEX.md b/07-framework-security/ecommerce/saleor/INDEX.md index 30200ea8..aa01ca53 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/shopware/INDEX.md b/07-framework-security/ecommerce/shopware/INDEX.md index b0e18bf2..13db6d0f 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/woocommerce/INDEX.md b/07-framework-security/ecommerce/woocommerce/INDEX.md index f2b8c634..b7fa858d 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/angular/INDEX.md b/07-framework-security/frameworks/angular/INDEX.md index 77d9922e..e7980594 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/aspnet-core/INDEX.md b/07-framework-security/frameworks/aspnet-core/INDEX.md index 626c6142..01ff8670 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/astro/INDEX.md b/07-framework-security/frameworks/astro/INDEX.md index 92f10632..afa2fd22 100644 --- a/07-framework-security/frameworks/astro/INDEX.md +++ b/07-framework-security/frameworks/astro/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `14` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/django/INDEX.md b/07-framework-security/frameworks/django/INDEX.md index 93f3f37f..ef756040 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/echo/INDEX.md b/07-framework-security/frameworks/echo/INDEX.md index 80320c83..b44f9873 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/esbuild/INDEX.md b/07-framework-security/frameworks/esbuild/INDEX.md index a552a6e0..325ead5f 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/express/INDEX.md b/07-framework-security/frameworks/express/INDEX.md index d616e982..c2c9a54c 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/fastify/INDEX.md b/07-framework-security/frameworks/fastify/INDEX.md index 3710927c..40165706 100644 --- a/07-framework-security/frameworks/fastify/INDEX.md +++ b/07-framework-security/frameworks/fastify/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/flask/INDEX.md b/07-framework-security/frameworks/flask/INDEX.md index 1fa977d9..dc305622 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/gin/INDEX.md b/07-framework-security/frameworks/gin/INDEX.md index 36c1105b..8a34d3a3 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/hapi/INDEX.md b/07-framework-security/frameworks/hapi/INDEX.md index c73abc7c..26fef86a 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/koa/INDEX.md b/07-framework-security/frameworks/koa/INDEX.md index 024d6981..1ab93f31 100644 --- a/07-framework-security/frameworks/koa/INDEX.md +++ b/07-framework-security/frameworks/koa/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `1` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/laravel/INDEX.md b/07-framework-security/frameworks/laravel/INDEX.md index c8b57842..d9fe84f5 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nestjs/INDEX.md b/07-framework-security/frameworks/nestjs/INDEX.md index 7435cff5..804f270d 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nextjs/INDEX.md b/07-framework-security/frameworks/nextjs/INDEX.md index b1017338..140457a7 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nodejs/INDEX.md b/07-framework-security/frameworks/nodejs/INDEX.md index c176b83f..ee24cd20 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nuxt/INDEX.md b/07-framework-security/frameworks/nuxt/INDEX.md index b3651e1f..997f5fed 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/rails/INDEX.md b/07-framework-security/frameworks/rails/INDEX.md index 338f9fbb..eb401563 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/react/INDEX.md b/07-framework-security/frameworks/react/INDEX.md index 51995c6b..f049e37a 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-boot/INDEX.md b/07-framework-security/frameworks/spring-boot/INDEX.md index eee1513e..9dda90f7 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-framework/INDEX.md b/07-framework-security/frameworks/spring-framework/INDEX.md index 5b1d54e3..33afde3b 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-security/INDEX.md b/07-framework-security/frameworks/spring-security/INDEX.md index 530104b4..0ec4aa54 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/sveltekit/INDEX.md b/07-framework-security/frameworks/sveltekit/INDEX.md index 9b0e5f29..fb80b309 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/symfony/INDEX.md b/07-framework-security/frameworks/symfony/INDEX.md index f8423c73..e4f87a62 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/undici/INDEX.md b/07-framework-security/frameworks/undici/INDEX.md index 3a110c67..aaed7a64 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vite/INDEX.md b/07-framework-security/frameworks/vite/INDEX.md index b26b2425..4a4eb072 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vue/INDEX.md b/07-framework-security/frameworks/vue/INDEX.md index 2b343fe8..857c960d 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/webpack/INDEX.md b/07-framework-security/frameworks/webpack/INDEX.md index ef766a89..a86b92dc 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/werkzeug/INDEX.md b/07-framework-security/frameworks/werkzeug/INDEX.md index 09c3d6ac..753c437f 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/adminer/INDEX.md b/07-framework-security/platforms/adminer/INDEX.md index 9d069fdb..fa06b649 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitea/INDEX.md b/07-framework-security/platforms/gitea/INDEX.md index 0c4caaf4..f2804f88 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitlab-ce/INDEX.md b/07-framework-security/platforms/gitlab-ce/INDEX.md index 55bd80d9..0282413d 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` - 待人工/缺浏览器证据: `55` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/grafana/INDEX.md b/07-framework-security/platforms/grafana/INDEX.md index d876ccbd..d104bb38 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/jenkins/INDEX.md b/07-framework-security/platforms/jenkins/INDEX.md index fa00902c..3afe72f2 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/kibana/INDEX.md b/07-framework-security/platforms/kibana/INDEX.md index 356a14ed..646a6ba4 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/mattermost/INDEX.md b/07-framework-security/platforms/mattermost/INDEX.md index 68a3ce17..50b811f5 100644 --- a/07-framework-security/platforms/mattermost/INDEX.md +++ b/07-framework-security/platforms/mattermost/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `21` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/phpmyadmin/INDEX.md b/07-framework-security/platforms/phpmyadmin/INDEX.md index e4136e6a..39c2bd37 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/redmine/INDEX.md b/07-framework-security/platforms/redmine/INDEX.md index abb1ec87..a5449bd9 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-httpd/INDEX.md b/07-framework-security/servers/apache-httpd/INDEX.md index 019ab7ea..104524da 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-tomcat/INDEX.md b/07-framework-security/servers/apache-tomcat/INDEX.md index 0c650b62..a90e46f2 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/servers/caddy/INDEX.md b/07-framework-security/servers/caddy/INDEX.md index 7304839b..6c1a12f9 100644 --- a/07-framework-security/servers/caddy/INDEX.md +++ b/07-framework-security/servers/caddy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `27` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/servers/haproxy/INDEX.md b/07-framework-security/servers/haproxy/INDEX.md index c19ac508..2f2a511e 100644 --- a/07-framework-security/servers/haproxy/INDEX.md +++ b/07-framework-security/servers/haproxy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `6` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/servers/nginx/INDEX.md b/07-framework-security/servers/nginx/INDEX.md index c0f36e2f..a97be551 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-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/07-framework-security/servers/traefik/INDEX.md b/07-framework-security/servers/traefik/INDEX.md index 7d2636d9..b81524b0 100644 --- a/07-framework-security/servers/traefik/INDEX.md +++ b/07-framework-security/servers/traefik/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `45` -- 最近渲染时间: `2026-03-22T01:17:37+00:00` +- 最近渲染时间: `2026-03-22T09:18:57+00:00` ## 目标约束 diff --git a/08-threat-intel/generated/dashboard/architecture.json b/08-threat-intel/generated/dashboard/architecture.json index 8ac81f47..ccda3959 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-22T01:17:39+00:00", + "generated_at": "2026-03-22T09:19:01+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-22T01:17:39+00:00" + "value": "2026-03-22T09:19:01+00:00" } ], "links": [ diff --git a/08-threat-intel/generated/dashboard/data/completeness.json b/08-threat-intel/generated/dashboard/data/completeness.json index cbb28fd3..ba745b8b 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-22T01:17:39+00:00", + "generated_at": "2026-03-22T09:19:01+00:00", "advisory_total": 89, "registry_advisory_total": 2402, "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-22T01:17:22+00:00", + "last_fully_green_run": "2026-03-22T09:18:32+00:00", "open_alert_count": 0, "resolved_alert_count": 101 }, "entity_coverage": { - "generated_at": "2026-03-22T01:17:37+00:00", + "generated_at": "2026-03-22T09:18:57+00:00", "cataloged_entity_total": 109, "candidate_entity_total": 7, "history_full_complete_count": 40, @@ -1945,13 +1945,13 @@ } }, "monitor_summary": { - "generated_at": "2026-03-22T01:17:22+00:00", + "generated_at": "2026-03-22T09:18:32+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-22T01:17:22+00:00", + "last_fully_green_run": "2026-03-22T09:18:32+00:00", "source_catalog": { "system_count": 62, "source_count": 179, diff --git a/08-threat-intel/generated/dashboard/data/entity-completeness.json b/08-threat-intel/generated/dashboard/data/entity-completeness.json index 52e7fa0a..8817b7e8 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-22T01:17:37+00:00", + "generated_at": "2026-03-22T09:18:57+00:00", "cataloged_entity_total": 109, "candidate_entity_total": 7, "history_full_complete_count": 40, diff --git a/08-threat-intel/generated/dashboard/data/entity-queues.json b/08-threat-intel/generated/dashboard/data/entity-queues.json index 64f705ee..64167108 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-22T01:17:37+00:00", + "generated_at": "2026-03-22T09:18:57+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 d91433ce..b6edf132 100644 --- a/08-threat-intel/generated/dashboard/data/lab-enqueue-summary.json +++ b/08-threat-intel/generated/dashboard/data/lab-enqueue-summary.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-22T01:17:31+00:00", + "generated_at": "2026-03-22T09:18:44+00:00", "enqueued": 0, "queue_total": 2358, "items": [ diff --git a/08-threat-intel/generated/dashboard/data/monitor-summary.json b/08-threat-intel/generated/dashboard/data/monitor-summary.json index f58ebd32..89d1e7f1 100644 --- a/08-threat-intel/generated/dashboard/data/monitor-summary.json +++ b/08-threat-intel/generated/dashboard/data/monitor-summary.json @@ -1,11 +1,11 @@ { - "generated_at": "2026-03-22T01:17:22+00:00", + "generated_at": "2026-03-22T09:18:32+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-22T01:17:22+00:00", + "last_fully_green_run": "2026-03-22T09:18:32+00:00", "source_catalog": { "system_count": 62, "source_count": 179, diff --git a/08-threat-intel/generated/dashboard/data/release-index.json b/08-threat-intel/generated/dashboard/data/release-index.json index e3ff7fa1..0b5b6f1a 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-22T01:17:38+00:00", + "generated_at": "2026-03-22T09:18:59+00:00", "version_count": 6183, "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 a367b52f..a2e603ca 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-22T01:17:13+00:00", + "generated_at": "2026-03-22T09:17:05+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 e268fa48..2886997c 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-22T01:17:22+00:00", + "generated_at": "2026-03-22T09:18:32+00:00", "active_source_count": 102, "green_source_count": 102, "failure_count": 0, "all_green": true, - "last_fully_green_run": "2026-03-22T01:17:22+00:00", + "last_fully_green_run": "2026-03-22T09:18:32+00:00", "retries_performed": 0, "probes": [ { "system_id": "adminer", "source_name": "OSV Adminer", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 4.875, "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.048, + "elapsed_seconds": 0.071, "kind": "vendor-index", "items_seen": 46 }, @@ -27,7 +27,7 @@ "system_id": "angular", "source_name": "OSV Angular", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 3.236, "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": 0.002, + "elapsed_seconds": 3.5, "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": 0.053, + "elapsed_seconds": 4.42, "kind": "kev-json", "items_seen": 1551 }, @@ -51,7 +51,7 @@ "system_id": "apache-tomcat", "source_name": "Apache Tomcat Security", "source_kind": "html-links", - "elapsed_seconds": 0.002, + "elapsed_seconds": 3.534, "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": 0.04, + "elapsed_seconds": 4.42, "kind": "kev-json", "items_seen": 1551 }, @@ -67,7 +67,7 @@ "system_id": "aspnet-core", "source_name": "OSV ASP.NET Core", "source_kind": "osv-batch", - "elapsed_seconds": 0.04, + "elapsed_seconds": 4.325, "kind": "osv-batch", "items_seen": 1 }, @@ -75,7 +75,7 @@ "system_id": "astro", "source_name": "OSV Astro", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 3.238, "kind": "osv-batch", "items_seen": 1 }, @@ -83,7 +83,7 @@ "system_id": "caddy", "source_name": "OSV Caddy", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 4.785, "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.051, + "elapsed_seconds": 0.079, "kind": "html-links", "items_seen": 127 }, @@ -99,7 +99,7 @@ "system_id": "directus", "source_name": "OSV Directus", "source_kind": "osv-batch", - "elapsed_seconds": 0.05, + "elapsed_seconds": 2.734, "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.048, + "elapsed_seconds": 0.072, "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.048, + "elapsed_seconds": 0.072, "kind": "rss-feed", "items_seen": 3 }, @@ -123,7 +123,7 @@ "system_id": "discourse", "source_name": "OSV Discourse", "source_kind": "osv-batch", - "elapsed_seconds": 0.048, + "elapsed_seconds": 2.203, "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": 0.0, + "elapsed_seconds": 3.232, "kind": "vendor-index", "items_seen": 1276 }, @@ -139,7 +139,7 @@ "system_id": "django", "source_name": "Django Security Weblog", "source_kind": "vendor-index", - "elapsed_seconds": 0.024, + "elapsed_seconds": 3.202, "kind": "vendor-index", "items_seen": 332 }, @@ -147,7 +147,7 @@ "system_id": "django", "source_name": "OSV Django", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 5.804, "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.053, + "elapsed_seconds": 0.085, "kind": "rss-feed", "items_seen": 20 }, @@ -163,7 +163,7 @@ "system_id": "drupal", "source_name": "OSV Drupal", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 3.794, "kind": "osv-batch", "items_seen": 1 }, @@ -171,7 +171,7 @@ "system_id": "echo", "source_name": "OSV Echo", "source_kind": "osv-batch", - "elapsed_seconds": 0.04, + "elapsed_seconds": 4.316, "kind": "osv-batch", "items_seen": 1 }, @@ -179,7 +179,7 @@ "system_id": "esbuild", "source_name": "OSV esbuild", "source_kind": "osv-batch", - "elapsed_seconds": 0.026, + "elapsed_seconds": 3.602, "kind": "osv-batch", "items_seen": 1 }, @@ -187,7 +187,7 @@ "system_id": "express", "source_name": "OSV Express", "source_kind": "osv-batch", - "elapsed_seconds": 0.029, + "elapsed_seconds": 3.203, "kind": "osv-batch", "items_seen": 1 }, @@ -195,7 +195,7 @@ "system_id": "fastify", "source_name": "OSV Fastify", "source_kind": "osv-batch", - "elapsed_seconds": 0.029, + "elapsed_seconds": 3.442, "kind": "osv-batch", "items_seen": 1 }, @@ -203,7 +203,7 @@ "system_id": "flask", "source_name": "OSV Flask", "source_kind": "osv-batch", - "elapsed_seconds": 0.002, + "elapsed_seconds": 4.329, "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.052, + "elapsed_seconds": 0.084, "kind": "html-links", "items_seen": 119 }, @@ -219,7 +219,7 @@ "system_id": "ghost", "source_name": "OSV Ghost", "source_kind": "osv-batch", - "elapsed_seconds": 0.051, + "elapsed_seconds": 2.634, "kind": "osv-batch", "items_seen": 1 }, @@ -227,7 +227,7 @@ "system_id": "gin", "source_name": "OSV Gin", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 4.321, "kind": "osv-batch", "items_seen": 1 }, @@ -235,7 +235,7 @@ "system_id": "gitea", "source_name": "OSV Gitea", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 5.06, "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": 0.04, + "elapsed_seconds": 3.878, "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": 0.047, + "elapsed_seconds": 3.878, "kind": "atom-feed", "items_seen": 186 }, @@ -259,7 +259,7 @@ "system_id": "grafana", "source_name": "CISA KEV Grafana", "source_kind": "kev-json", - "elapsed_seconds": 0.04, + "elapsed_seconds": 4.42, "kind": "kev-json", "items_seen": 1551 }, @@ -267,7 +267,7 @@ "system_id": "grafana", "source_name": "Grafana Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.04, + "elapsed_seconds": 3.878, "kind": "html-links", "items_seen": 159 }, @@ -275,7 +275,7 @@ "system_id": "hapi", "source_name": "OSV Hapi", "source_kind": "osv-batch", - "elapsed_seconds": 0.029, + "elapsed_seconds": 3.5, "kind": "osv-batch", "items_seen": 1 }, @@ -283,7 +283,7 @@ "system_id": "haproxy", "source_name": "HAProxy Blog Feed", "source_kind": "rss-feed", - "elapsed_seconds": 0.04, + "elapsed_seconds": 3.708, "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": 0.04, + "elapsed_seconds": 3.878, "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.053, + "elapsed_seconds": 0.085, "kind": "html-links", "items_seen": 139 }, @@ -307,7 +307,7 @@ "system_id": "joomla", "source_name": "OSV Joomla", "source_kind": "osv-batch", - "elapsed_seconds": 0.052, + "elapsed_seconds": 2.249, "kind": "osv-batch", "items_seen": 1 }, @@ -315,7 +315,7 @@ "system_id": "kibana", "source_name": "Elastic Product Security", "source_kind": "html-links", - "elapsed_seconds": 0.04, + "elapsed_seconds": 4.042, "kind": "html-links", "items_seen": 66 }, @@ -323,7 +323,7 @@ "system_id": "kibana", "source_name": "NVD Kibana", "source_kind": "nvd-search", - "elapsed_seconds": 0.053, + "elapsed_seconds": 5.848, "kind": "nvd-search", "items_seen": 1 }, @@ -331,7 +331,7 @@ "system_id": "koa", "source_name": "OSV Koa", "source_kind": "osv-batch", - "elapsed_seconds": 0.031, + "elapsed_seconds": 3.241, "kind": "osv-batch", "items_seen": 1 }, @@ -339,7 +339,7 @@ "system_id": "laravel", "source_name": "OSV Laravel", "source_kind": "osv-batch", - "elapsed_seconds": 0.026, + "elapsed_seconds": 4.042, "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.041, + "elapsed_seconds": 0.057, "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": 0.041, + "elapsed_seconds": 2.33, "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.041, + "elapsed_seconds": 0.047, "kind": "html-links", "items_seen": 134 }, @@ -371,7 +371,7 @@ "system_id": "mattermost", "source_name": "Mattermost Security Updates JSON", "source_kind": "json-feed", - "elapsed_seconds": 0.04, + "elapsed_seconds": 4.316, "kind": "json-feed", "items_seen": 594 }, @@ -379,7 +379,7 @@ "system_id": "mattermost", "source_name": "OSV Mattermost", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 6.876, "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.05, + "elapsed_seconds": 0.077, "kind": "rss-feed", "items_seen": 30 }, @@ -395,7 +395,7 @@ "system_id": "mediawiki", "source_name": "OSV MediaWiki", "source_kind": "osv-batch", - "elapsed_seconds": 0.049, + "elapsed_seconds": 2.548, "kind": "osv-batch", "items_seen": 1 }, @@ -403,7 +403,7 @@ "system_id": "medusa", "source_name": "OSV Medusa", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 2.144, "kind": "osv-batch", "items_seen": 1 }, @@ -411,7 +411,7 @@ "system_id": "moodle", "source_name": "OSV Moodle", "source_kind": "osv-batch", - "elapsed_seconds": 0.049, + "elapsed_seconds": 5.403, "kind": "osv-batch", "items_seen": 1 }, @@ -419,7 +419,7 @@ "system_id": "nestjs", "source_name": "OSV NestJS", "source_kind": "osv-batch", - "elapsed_seconds": 0.029, + "elapsed_seconds": 3.238, "kind": "osv-batch", "items_seen": 1 }, @@ -427,7 +427,7 @@ "system_id": "nextjs", "source_name": "OSV Next.js", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 2.326, "kind": "osv-batch", "items_seen": 1 }, @@ -435,7 +435,7 @@ "system_id": "nginx", "source_name": "CISA KEV NGINX", "source_kind": "kev-json", - "elapsed_seconds": 0.047, + "elapsed_seconds": 4.399, "kind": "kev-json", "items_seen": 1551 }, @@ -443,7 +443,7 @@ "system_id": "nginx", "source_name": "NGINX Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.002, + "elapsed_seconds": 3.442, "kind": "html-links", "items_seen": 138 }, @@ -451,7 +451,7 @@ "system_id": "nodejs", "source_name": "CISA KEV Node.js", "source_kind": "kev-json", - "elapsed_seconds": 0.075, + "elapsed_seconds": 4.42, "kind": "kev-json", "items_seen": 1551 }, @@ -459,7 +459,7 @@ "system_id": "nodejs", "source_name": "Node.js Security Releases", "source_kind": "html-links", - "elapsed_seconds": 0.029, + "elapsed_seconds": 2.308, "kind": "html-links", "items_seen": 74 }, @@ -467,7 +467,7 @@ "system_id": "nuxt", "source_name": "OSV Nuxt", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 2.49, "kind": "osv-batch", "items_seen": 1 }, @@ -475,7 +475,7 @@ "system_id": "opencart", "source_name": "OSV OpenCart", "source_kind": "osv-batch", - "elapsed_seconds": 0.036, + "elapsed_seconds": 2.324, "kind": "osv-batch", "items_seen": 1 }, @@ -483,7 +483,7 @@ "system_id": "opencart", "source_name": "OpenCart Releases", "source_kind": "html-links", - "elapsed_seconds": 0.036, + "elapsed_seconds": 0.025, "kind": "html-links", "items_seen": 1500 }, @@ -491,7 +491,7 @@ "system_id": "openmage", "source_name": "OSV OpenMage", "source_kind": "osv-batch", - "elapsed_seconds": 0.041, + "elapsed_seconds": 2.55, "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.041, + "elapsed_seconds": 0.047, "kind": "html-links", "items_seen": 125 }, @@ -507,7 +507,7 @@ "system_id": "phpmyadmin", "source_name": "OSV phpMyAdmin", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 5.177, "kind": "osv-batch", "items_seen": 1 }, @@ -515,7 +515,7 @@ "system_id": "phpmyadmin", "source_name": "phpMyAdmin Security Page", "source_kind": "html-links", - "elapsed_seconds": 0.04, + "elapsed_seconds": 3.708, "kind": "html-links", "items_seen": 262 }, @@ -523,7 +523,7 @@ "system_id": "prestashop", "source_name": "Friends Of Presta Security", "source_kind": "html-links", - "elapsed_seconds": 0.036, + "elapsed_seconds": 0.029, "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.036, + "elapsed_seconds": 0.029, "kind": "html-links", "items_seen": 127 }, @@ -539,7 +539,7 @@ "system_id": "prestashop", "source_name": "OSV PrestaShop", "source_kind": "osv-batch", - "elapsed_seconds": 0.036, + "elapsed_seconds": 2.302, "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.036, + "elapsed_seconds": 0.029, "kind": "html-links", "items_seen": 60 }, @@ -555,7 +555,7 @@ "system_id": "rails", "source_name": "OSV Rails", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 4.756, "kind": "osv-batch", "items_seen": 1 }, @@ -563,7 +563,7 @@ "system_id": "react", "source_name": "OSV React", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 2.143, "kind": "osv-batch", "items_seen": 1 }, @@ -571,7 +571,7 @@ "system_id": "redmine", "source_name": "OSV Redmine", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 5.474, "kind": "osv-batch", "items_seen": 1 }, @@ -579,7 +579,7 @@ "system_id": "redmine", "source_name": "Redmine Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 0.047, + "elapsed_seconds": 4.321, "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.03, + "elapsed_seconds": 0.017, "kind": "html-links", "items_seen": 120 }, @@ -595,7 +595,7 @@ "system_id": "saleor", "source_name": "OSV Saleor", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 2.173, "kind": "osv-batch", "items_seen": 1 }, @@ -603,7 +603,7 @@ "system_id": "shopware", "source_name": "OSV Shopware", "source_kind": "osv-batch", - "elapsed_seconds": 0.036, + "elapsed_seconds": 2.822, "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.036, + "elapsed_seconds": 0.023, "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": 0.063, + "elapsed_seconds": 3.871, "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": 0.024, + "elapsed_seconds": 2.553, "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": 0.026, + "elapsed_seconds": 3.709, "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": 0.026, + "elapsed_seconds": 2.49, "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": 0.026, + "elapsed_seconds": 3.767, "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": 0.026, + "elapsed_seconds": 2.51, "kind": "html-links", "items_seen": 118 }, @@ -667,7 +667,7 @@ "system_id": "strapi", "source_name": "OSV Strapi", "source_kind": "osv-batch", - "elapsed_seconds": 0.051, + "elapsed_seconds": 2.225, "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.051, + "elapsed_seconds": 0.082, "kind": "html-links", "items_seen": 124 }, @@ -683,7 +683,7 @@ "system_id": "sveltekit", "source_name": "OSV SvelteKit", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 3.24, "kind": "osv-batch", "items_seen": 1 }, @@ -691,7 +691,7 @@ "system_id": "symfony", "source_name": "OSV Symfony", "source_kind": "osv-batch", - "elapsed_seconds": 0.026, + "elapsed_seconds": 4.61, "kind": "osv-batch", "items_seen": 1 }, @@ -699,7 +699,7 @@ "system_id": "traefik", "source_name": "OSV Traefik", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 4.948, "kind": "osv-batch", "items_seen": 1 }, @@ -707,7 +707,7 @@ "system_id": "undici", "source_name": "OSV Undici", "source_kind": "osv-batch", - "elapsed_seconds": 0.029, + "elapsed_seconds": 3.535, "kind": "osv-batch", "items_seen": 1 }, @@ -715,7 +715,7 @@ "system_id": "vite", "source_name": "OSV Vite", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 3.246, "kind": "osv-batch", "items_seen": 1 }, @@ -723,7 +723,7 @@ "system_id": "vue", "source_name": "OSV Vue", "source_kind": "osv-batch", - "elapsed_seconds": 0.03, + "elapsed_seconds": 2.151, "kind": "osv-batch", "items_seen": 1 }, @@ -731,7 +731,7 @@ "system_id": "webpack", "source_name": "OSV webpack", "source_kind": "osv-batch", - "elapsed_seconds": 0.026, + "elapsed_seconds": 3.709, "kind": "osv-batch", "items_seen": 1 }, @@ -739,7 +739,7 @@ "system_id": "werkzeug", "source_name": "OSV Werkzeug", "source_kind": "osv-batch", - "elapsed_seconds": 0.04, + "elapsed_seconds": 4.341, "kind": "osv-batch", "items_seen": 1 }, @@ -755,7 +755,7 @@ "system_id": "woocommerce", "source_name": "OSV WooCommerce", "source_kind": "osv-batch", - "elapsed_seconds": 0.041, + "elapsed_seconds": 2.461, "kind": "osv-batch", "items_seen": 1 }, @@ -763,7 +763,7 @@ "system_id": "woocommerce", "source_name": "Patchstack Database", "source_kind": "html-links", - "elapsed_seconds": 0.041, + "elapsed_seconds": 0.035, "kind": "html-links", "items_seen": 193 }, @@ -779,7 +779,7 @@ "system_id": "woocommerce", "source_name": "Wordfence Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 0.036, + "elapsed_seconds": 0.035, "kind": "html-links", "items_seen": 0 }, @@ -787,7 +787,7 @@ "system_id": "wordpress", "source_name": "Patchstack Database", "source_kind": "html-links", - "elapsed_seconds": 0.054, + "elapsed_seconds": 0.088, "kind": "html-links", "items_seen": 193 }, @@ -795,7 +795,7 @@ "system_id": "wordpress", "source_name": "PortSwigger Research", "source_kind": "html-links", - "elapsed_seconds": 0.054, + "elapsed_seconds": 1.461, "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.054, + "elapsed_seconds": 0.088, "kind": "html-links", "items_seen": 75 }, @@ -811,7 +811,7 @@ "system_id": "wordpress", "source_name": "WordPress Security News RSS", "source_kind": "rss-feed", - "elapsed_seconds": 0.056, + "elapsed_seconds": 0.092, "kind": "rss-feed", "items_seen": 10 }, @@ -819,7 +819,7 @@ "system_id": "wordpress", "source_name": "Wordfence Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 0.056, + "elapsed_seconds": 0.092, "kind": "html-links", "items_seen": 0 } @@ -827,73 +827,73 @@ "failures": [], "slow_sources": [ { - "system_id": "nodejs", - "source_name": "CISA KEV Node.js", - "source_kind": "kev-json", - "elapsed_seconds": 0.075, - "status": "ok" - }, - { - "system_id": "spring-boot", - "source_name": "OSV Spring Boot", + "system_id": "mattermost", + "source_name": "OSV Mattermost", "source_kind": "osv-batch", - "elapsed_seconds": 0.063, + "elapsed_seconds": 6.876, "status": "ok" }, { - "system_id": "wordpress", - "source_name": "WordPress Security News RSS", - "source_kind": "rss-feed", - "elapsed_seconds": 0.056, + "system_id": "kibana", + "source_name": "NVD Kibana", + "source_kind": "nvd-search", + "elapsed_seconds": 5.848, "status": "ok" }, { - "system_id": "wordpress", - "source_name": "Wordfence Vulnerability Database", - "source_kind": "html-links", - "elapsed_seconds": 0.056, + "system_id": "django", + "source_name": "OSV Django", + "source_kind": "osv-batch", + "elapsed_seconds": 5.804, "status": "ok" }, { - "system_id": "wordpress", - "source_name": "Patchstack Database", - "source_kind": "html-links", - "elapsed_seconds": 0.054, + "system_id": "redmine", + "source_name": "OSV Redmine", + "source_kind": "osv-batch", + "elapsed_seconds": 5.474, "status": "ok" }, { - "system_id": "wordpress", - "source_name": "PortSwigger Research", - "source_kind": "html-links", - "elapsed_seconds": 0.054, + "system_id": "moodle", + "source_name": "OSV Moodle", + "source_kind": "osv-batch", + "elapsed_seconds": 5.403, "status": "ok" }, { - "system_id": "wordpress", - "source_name": "WPScan Vulnerability Database", - "source_kind": "html-links", - "elapsed_seconds": 0.054, + "system_id": "phpmyadmin", + "source_name": "OSV phpMyAdmin", + "source_kind": "osv-batch", + "elapsed_seconds": 5.177, + "status": "ok" + }, + { + "system_id": "gitea", + "source_name": "OSV Gitea", + "source_kind": "osv-batch", + "elapsed_seconds": 5.06, + "status": "ok" + }, + { + "system_id": "traefik", + "source_name": "OSV Traefik", + "source_kind": "osv-batch", + "elapsed_seconds": 4.948, "status": "ok" }, { "system_id": "adminer", "source_name": "OSV Adminer", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, - "status": "ok" - }, - { - "system_id": "apache-httpd", - "source_name": "CISA KEV Apache HTTPD", - "source_kind": "kev-json", - "elapsed_seconds": 0.053, + "elapsed_seconds": 4.875, "status": "ok" }, { "system_id": "caddy", "source_name": "OSV Caddy", "source_kind": "osv-batch", - "elapsed_seconds": 0.053, + "elapsed_seconds": 4.785, "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 f5b6b1d6..15be6597 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-22T01:17:38+00:00", + "generated_at": "2026-03-22T09:18:59+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 62cefbb7..001cc887 100644 --- a/08-threat-intel/generated/dashboard/data/version-completeness.json +++ b/08-threat-intel/generated/dashboard/data/version-completeness.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-22T01:17:38+00:00", + "generated_at": "2026-03-22T09:18:59+00:00", "cataloged_entity_total": 109, "latest_version_synced_count": 94, "source_gap_count": 15, diff --git a/08-threat-intel/generated/dashboard/docs/architecture-library.html b/08-threat-intel/generated/dashboard/docs/architecture-library.html index d58ccc5e..dd1dc83a 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-22T01:17:39+00:00",
+  "generated_at": "2026-03-22T09:19:01+00:00",
   "title": "当前架构库",
   "summary": "工作台、控制面、数据层、授权边界与系统覆盖的当前真值视图。",
   "sections": [
@@ -145,7 +145,7 @@
         },
         {
           "label": "生成时间",
-          "value": "2026-03-22T01:17:39+00:00"
+          "value": "2026-03-22T09:19:01+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 a9dd5520..1697aac1 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-22T01:17:37+00:00`
+- 生成时间: `2026-03-22T09:18:57+00:00`
 - 已编目实体: `109`
 - 待编目 backlog: `7`
 - history-full 已完成: `40`
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 70e0fc56..5ccf63d5 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-22T01:17:37+00:00`
+- 生成时间: `2026-03-22T09:18:57+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 81e9ec75..03b37f4d 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-22T01:17:13+00:00`
+- generated_at: `2026-03-22T09:17:05+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 be7049f3..921c74f6 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-22T01:17:39+00:00`
+- 生成时间: `2026-03-22T09:19:01+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-22T01:17:22+00:00`
+- 最近一次 source 全绿: `2026-03-22T09:18:32+00:00`
 - 已编目实体: `109`
 - 待编目 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 c8c53408..735d8c01 100644
--- a/08-threat-intel/generated/dashboard/docs/version-sync-report.html
+++ b/08-threat-intel/generated/dashboard/docs/version-sync-report.html
@@ -88,7 +88,7 @@
       
工作台内置镜像页:安全相关版本历史、source-gap 与版本驱动 lab enqueue 摘要。
# 安全相关版本同步报告
 
-- 生成时间: `2026-03-22T01:17:38+00:00`
+- 生成时间: `2026-03-22T09:18:59+00:00`
 - 已编目实体: `109`
 - 最新版本已同步: `94`
 - 版本 source-gap: `15`
diff --git a/08-threat-intel/generated/dashboard/entities.json b/08-threat-intel/generated/dashboard/entities.json
index fde6e701..d372f84c 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-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+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-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+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-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/angular/angular/security/advisories/GHSA-prjf-86w9-mfqv",
@@ -291,7 +291,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 18,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -353,7 +353,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 1,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Apache HTTPD Security"
     ],
@@ -559,7 +559,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Apache Tomcat Security"
     ],
@@ -762,7 +762,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -826,7 +826,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/withastro/astro/security/advisories/GHSA-wrwg-2hg8-v723",
@@ -884,7 +884,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 26,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/withastro/astro/security/advisories/GHSA-c4pw-33h3-35xw",
@@ -948,7 +948,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 30,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -1022,7 +1022,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/caddyserver/caddy/security/advisories/GHSA-5r3v-vc8m-m96g"
@@ -1069,7 +1069,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/caddyserver/caddy/security/advisories/GHSA-4xrr-hq4w-6vf4"
@@ -1117,7 +1117,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -1204,7 +1204,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 1,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Directus GitHub Advisories"
@@ -1257,7 +1257,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 1,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Directus GitHub Advisories"
     ],
@@ -1357,7 +1357,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 78,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Discourse Release Notes RSS",
       "Discourse Security RSS"
@@ -1474,7 +1474,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 160,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2019-11358"
@@ -1541,7 +1541,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 160,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Django Security Weblog",
       "Django Security Releases Archive"
@@ -1707,7 +1707,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 74,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Drupal Security Advisories RSS"
     ],
@@ -1848,7 +1848,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/labstack/echo/pull/1718",
@@ -1894,7 +1894,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -1948,7 +1948,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99"
@@ -1992,7 +1992,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2058,7 +2058,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2127,7 +2127,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/fastify/fastify/security/advisories/GHSA-573f-x89g-hqp9"
@@ -2171,7 +2171,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2232,7 +2232,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726"
@@ -2276,7 +2276,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2336,7 +2336,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitHub Releases API"
     ],
@@ -2388,7 +2388,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Ghost GitHub Advisories"
     ],
@@ -2481,7 +2481,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://nvd.nist.gov/vuln/detail/CVE-2020-28483"
@@ -2525,7 +2525,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2575,7 +2575,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2647,7 +2647,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 614,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitLab Security Releases Atom"
     ],
@@ -2777,7 +2777,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -2897,7 +2897,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://www.npmjs.com/advisories/1482"
@@ -2941,7 +2941,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3001,7 +3001,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 1,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "HAProxy Blog Feed"
     ],
@@ -3074,7 +3074,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3205,7 +3205,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 5,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Joomla Security Centre"
     ],
@@ -3372,7 +3372,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3495,7 +3495,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/koajs/koa/security/advisories/GHSA-7gcc-r8m5-44qm"
@@ -3539,7 +3539,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3600,7 +3600,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 103,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Packagist p2",
       "https://github.com/laravel/framework/security/advisories/GHSA-66hf-2p6w-jqfw"
@@ -3645,7 +3645,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 103,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -3709,7 +3709,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Sansec Research"
@@ -3765,7 +3765,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Sansec Research"
     ],
@@ -3931,7 +3931,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 759,
-    "last_version_synced_at": "2026-03-22T01:17:25+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:38+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON",
       "https://securityupdates.mattermost.com/security_updates.json"
@@ -3981,7 +3981,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 756,
-    "last_version_synced_at": "2026-03-22T01:17:27+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:40+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON",
       "https://securityupdates.mattermost.com/security_updates.json"
@@ -4027,7 +4027,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 765,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON"
     ],
@@ -4087,7 +4087,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 761,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://nvd.nist.gov/vuln/detail/CVE-2026-22545",
@@ -4134,7 +4134,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3041,
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "latest_version_evidence": [
       "Mattermost Security Updates JSON"
     ],
@@ -4239,7 +4239,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 254,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "MediaWiki Announce RSS"
     ],
@@ -4384,7 +4384,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4456,7 +4456,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4561,7 +4561,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4644,7 +4644,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 168,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vercel/next.js",
@@ -4741,7 +4741,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 168,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -4872,7 +4872,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5047,7 +5047,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5119,7 +5119,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 11,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/nuxt/nuxt/security/advisories/GHSA-vf6r-87q4-2vjf",
@@ -5171,7 +5171,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 11,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5268,7 +5268,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "OpenCart Releases"
@@ -5322,7 +5322,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "OpenCart Releases"
     ],
@@ -5491,7 +5491,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub Releases API"
     ],
@@ -5541,7 +5541,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -5635,7 +5635,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "phpMyAdmin Security Page"
     ],
@@ -5759,7 +5759,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 9,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Friends Of Presta Security",
@@ -5818,7 +5818,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 9,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub PrestaShop Advisories",
       "Friends Of Presta Security",
@@ -6022,7 +6022,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 102,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2007-5379",
@@ -6079,7 +6079,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 102,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -6189,7 +6189,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 12,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2018-6341"
@@ -6237,7 +6237,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 6,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/facebook/react",
@@ -6283,7 +6283,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 18,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -6371,7 +6371,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "Redmine Security Advisories"
     ],
@@ -6490,7 +6490,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub Releases API"
     ],
@@ -6542,7 +6542,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub Saleor Advisories"
     ],
@@ -6635,7 +6635,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "GitHub Releases API"
     ],
@@ -6687,7 +6687,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [
       "Shopware Security Advisories"
     ],
@@ -6827,7 +6827,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-22T01:17:30+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:42+00:00",
     "latest_version_evidence": [
       "advisory-fixed-version",
       "https://github.com/JLLeitschuh/security-research/security/advisories/GHSA-cm59-pr5q-cw85"
@@ -6871,7 +6871,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -6938,7 +6938,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:30+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:42+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7016,7 +7016,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 92,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "advisory-fixed-version",
       "https://nvd.nist.gov/vuln/detail/CVE-2026-22732"
@@ -7060,7 +7060,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 92,
-    "last_version_synced_at": "2026-03-22T01:17:30+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:42+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7131,7 +7131,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "GitHub Releases API"
     ],
@@ -7183,7 +7183,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "Strapi GitHub Advisories"
     ],
@@ -7272,7 +7272,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/sveltejs/kit/security/advisories/GHSA-88qp-p4qg-rqm6",
@@ -7319,7 +7319,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7382,7 +7382,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 220,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "Packagist p2",
       "https://github.com/symfony/symfony/security/advisories/GHSA-5pv8-ppvj-4h68"
@@ -7434,7 +7434,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 220,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7503,7 +7503,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 7,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/traefik/traefik/security/advisories/GHSA-wvvq-wgcr-9q48"
@@ -7562,7 +7562,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 56,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "https://github.com/traefik/traefik/security/advisories/GHSA-gxrv-wf35-62w9",
@@ -7634,7 +7634,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 63,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7739,7 +7739,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 4,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/nodejs/undici/security/advisories/GHSA-vrm6-8vpv-qv8q"
@@ -7797,7 +7797,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 21,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/nodejs/undici/security/advisories/GHSA-3cvr-822r-rqcc",
@@ -7863,7 +7863,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 25,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -7947,7 +7947,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 8,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vitejs/vite/security/advisories/GHSA-jqfw-vq24-v9c3"
@@ -7994,7 +7994,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 12,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vitejs/vite/security/advisories/GHSA-64vr-g452-qvp3"
@@ -8043,7 +8043,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 23,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6",
@@ -8104,7 +8104,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 107,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2022-35204",
@@ -8168,7 +8168,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 150,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8278,7 +8278,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://nvd.nist.gov/vuln/detail/CVE-2024-9506"
@@ -8322,7 +8322,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 2,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8402,7 +8402,7 @@
     "version_source_refs": [],
     "version_sync_status": "source-gap",
     "security_version_count": 0,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8471,7 +8471,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "npm latest",
       "https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x"
@@ -8515,7 +8515,7 @@
     "version_source_refs": [],
     "version_sync_status": "green",
     "security_version_count": 22,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [],
     "catalog_source": "",
     "catalog_reason": "",
@@ -8577,7 +8577,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "GitHub Releases API",
       "Patchstack Database",
@@ -8633,7 +8633,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 3,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "latest_version_evidence": [
       "Woo Developer Advisories",
       "Patchstack Database"
@@ -8848,7 +8848,7 @@
     ],
     "version_sync_status": "green",
     "security_version_count": 55,
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+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 b25a1340..3fa36d96 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-22T01:17:39+00:00",
+  "generated_at": "2026-03-22T09:19:01+00:00",
   "advisory_count": 2402,
   "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-22T01:17:22+00:00"
+    "last_fully_green_run": "2026-03-22T09:18:32+00:00"
   },
   "entity_coverage": {
-    "generated_at": "2026-03-22T01:17:37+00:00",
+    "generated_at": "2026-03-22T09:18:57+00:00",
     "cataloged_entity_total": 109,
     "candidate_entity_total": 7,
     "history_full_complete_count": 40,
@@ -1926,7 +1926,7 @@
     }
   },
   "version_coverage": {
-    "generated_at": "2026-03-22T01:17:38+00:00",
+    "generated_at": "2026-03-22T09:18:59+00:00",
     "cataloged_entity_total": 109,
     "latest_version_synced_count": 94,
     "source_gap_count": 15,
@@ -3426,7 +3426,7 @@
         "system": 1
       },
       "latest_version": "7.9",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 54
     },
@@ -3535,7 +3535,7 @@
         "system": 1
       },
       "latest_version": "11.0-doc",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -3632,7 +3632,7 @@
         "system": 1
       },
       "latest_version": "2.4.x",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 1
     },
@@ -3751,7 +3751,7 @@
         "repo": 1
       },
       "latest_version": "9.0.3",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 18
     },
@@ -3852,7 +3852,7 @@
         "repo": 1
       },
       "latest_version": "10.6.1",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 6
     },
@@ -3928,7 +3928,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -4001,7 +4001,7 @@
         "system": 1
       },
       "latest_version": "1017-20260102-core-xss-vector-in-the-pagebreak-plugin.html",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 5
     },
@@ -4132,7 +4132,7 @@
         "repo": 1
       },
       "latest_version": "3.0.5.0",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -4257,7 +4257,7 @@
         "repo": 1
       },
       "latest_version": "2.4.9-beta1",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 6
     },
@@ -4358,7 +4358,7 @@
         "project": 1
       },
       "latest_version": "1.0.0",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 182
     },
@@ -4422,7 +4422,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -4553,7 +4553,7 @@
         "repo": 1
       },
       "latest_version": "6.7.8.2",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -4626,7 +4626,7 @@
         "system": 1
       },
       "latest_version": "11.2.8",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 74
     },
@@ -4699,7 +4699,7 @@
         "system": 1
       },
       "latest_version": "28-10-2025",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 252
     },
@@ -4844,7 +4844,7 @@
         "project": 1
       },
       "latest_version": "16.2.1",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 168
     },
@@ -4908,7 +4908,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -4972,7 +4972,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5045,7 +5045,7 @@
         "system": 1
       },
       "latest_version": "2026-3848---improper-neutralization-of-crlf-sequences-issue-impacts-gitlab-ceee",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 612
     },
@@ -5147,7 +5147,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5220,7 +5220,7 @@
         "system": 1
       },
       "latest_version": "5.2.3-all-languages.zip",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -5293,7 +5293,7 @@
         "system": 1
       },
       "latest_version": "6.1.2",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -5357,7 +5357,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5502,7 +5502,7 @@
         "extension": 1
       },
       "latest_version": "3.7.0-ea.2",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 63
     },
@@ -5603,7 +5603,7 @@
         "project": 1
       },
       "latest_version": "4.1.0-beta",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 102
     },
@@ -5802,7 +5802,7 @@
         "extension": 1
       },
       "latest_version": "8.0.1",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 150
     },
@@ -5866,7 +5866,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -5939,7 +5939,7 @@
         "system": 1
       },
       "latest_version": "2502-05-2023-143713-1.zip",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 78
     },
@@ -6058,7 +6058,7 @@
         "repo": 1
       },
       "latest_version": "11.16.1",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -6179,7 +6179,7 @@
         "project": 1
       },
       "latest_version": "4.4.2",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 11
     },
@@ -6318,7 +6318,7 @@
         "extension": 1
       },
       "latest_version": "2.11.2",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -6425,7 +6425,7 @@
         "repo": 1
       },
       "latest_version": "20.16.0",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -6532,7 +6532,7 @@
         "repo": 1
       },
       "latest_version": "5.40.0",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -6645,7 +6645,7 @@
         "repo": 1
       },
       "latest_version": "3.22.43",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -6746,7 +6746,7 @@
         "repo": 1
       },
       "latest_version": "6.22.1",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 0
     },
@@ -6879,7 +6879,7 @@
         "extension": 1
       },
       "latest_version": "7.24.5",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 25
     },
@@ -7056,7 +7056,7 @@
         "plugin": 1
       },
       "latest_version": "26.2.1",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 3792
     },
@@ -7195,7 +7195,7 @@
         "project": 2
       },
       "latest_version": "19.2.4",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 18
     },
@@ -7273,7 +7273,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -7388,7 +7388,7 @@
         "project": 1
       },
       "latest_version": "3.5.30",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -7539,7 +7539,7 @@
         "project": 1
       },
       "latest_version": "6.0.8",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 30
     },
@@ -7615,7 +7615,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:30+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:42+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -7716,7 +7716,7 @@
         "package": 1
       },
       "latest_version": "8.0.7",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 220
     },
@@ -7780,7 +7780,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -7853,7 +7853,7 @@
         "system": 1
       },
       "latest_version": "2.0",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 1
     },
@@ -7960,7 +7960,7 @@
         "project": 1
       },
       "latest_version": "7.0.4",
-      "last_version_synced_at": "2026-03-22T01:17:30+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:42+00:00",
       "version_sync_status": "green",
       "security_version_count": 92
     },
@@ -8024,7 +8024,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -8125,7 +8125,7 @@
         "package": 1
       },
       "latest_version": "2.55.0",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -8189,7 +8189,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -8290,7 +8290,7 @@
         "package": 1
       },
       "latest_version": "21.2.5",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 18
     },
@@ -8397,7 +8397,7 @@
         "repo": 1
       },
       "latest_version": "5.0.4",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -8498,7 +8498,7 @@
         "package": 1
       },
       "latest_version": "13.1.1",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 103
     },
@@ -8562,7 +8562,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -8669,7 +8669,7 @@
         "project": 1
       },
       "latest_version": "2.2.11.RELEASE",
-      "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:41+00:00",
       "version_sync_status": "green",
       "security_version_count": 22
     },
@@ -8770,7 +8770,7 @@
         "project": 1
       },
       "latest_version": "0.27.4",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -8834,7 +8834,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -8935,7 +8935,7 @@
         "project": 1
       },
       "latest_version": "5.8.2",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -9036,7 +9036,7 @@
         "project": 1
       },
       "latest_version": "0.2.10",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 22
     },
@@ -9137,7 +9137,7 @@
         "repo": 1
       },
       "latest_version": "1.12.0",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 2
     },
@@ -9238,7 +9238,7 @@
         "package": 1
       },
       "latest_version": "21.4.7",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -9339,7 +9339,7 @@
         "project": 1
       },
       "latest_version": "3.1.2",
-      "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:37+00:00",
       "version_sync_status": "green",
       "security_version_count": 4
     },
@@ -9403,7 +9403,7 @@
         "system": 1
       },
       "latest_version": "",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "source-gap",
       "security_version_count": 0
     },
@@ -9504,7 +9504,7 @@
         "project": 1
       },
       "latest_version": "0.0.15",
-      "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+      "last_version_synced_at": "2026-03-22T09:18:44+00:00",
       "version_sync_status": "green",
       "security_version_count": 22
     }
diff --git a/08-threat-intel/generated/dashboard/systems.json b/08-threat-intel/generated/dashboard/systems.json
index a82073ad..1bab40b6 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": "7.9",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+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-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+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-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 1
   },
@@ -393,7 +393,7 @@
       "repo": 1
     },
     "latest_version": "9.0.3",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 18
   },
@@ -494,7 +494,7 @@
       "repo": 1
     },
     "latest_version": "10.6.1",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 6
   },
@@ -570,7 +570,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -643,7 +643,7 @@
       "system": 1
     },
     "latest_version": "1017-20260102-core-xss-vector-in-the-pagebreak-plugin.html",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 5
   },
@@ -774,7 +774,7 @@
       "repo": 1
     },
     "latest_version": "3.0.5.0",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -899,7 +899,7 @@
       "repo": 1
     },
     "latest_version": "2.4.9-beta1",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 6
   },
@@ -1000,7 +1000,7 @@
       "project": 1
     },
     "latest_version": "1.0.0",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 182
   },
@@ -1064,7 +1064,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1195,7 +1195,7 @@
       "repo": 1
     },
     "latest_version": "6.7.8.2",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -1268,7 +1268,7 @@
       "system": 1
     },
     "latest_version": "11.2.8",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 74
   },
@@ -1341,7 +1341,7 @@
       "system": 1
     },
     "latest_version": "28-10-2025",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 252
   },
@@ -1486,7 +1486,7 @@
       "project": 1
     },
     "latest_version": "16.2.1",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 168
   },
@@ -1550,7 +1550,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1614,7 +1614,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1687,7 +1687,7 @@
       "system": 1
     },
     "latest_version": "2026-3848---improper-neutralization-of-crlf-sequences-issue-impacts-gitlab-ceee",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 612
   },
@@ -1789,7 +1789,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -1862,7 +1862,7 @@
       "system": 1
     },
     "latest_version": "5.2.3-all-languages.zip",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -1935,7 +1935,7 @@
       "system": 1
     },
     "latest_version": "6.1.2",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -1999,7 +1999,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -2144,7 +2144,7 @@
       "extension": 1
     },
     "latest_version": "3.7.0-ea.2",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 63
   },
@@ -2245,7 +2245,7 @@
       "project": 1
     },
     "latest_version": "4.1.0-beta",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 102
   },
@@ -2444,7 +2444,7 @@
       "extension": 1
     },
     "latest_version": "8.0.1",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 150
   },
@@ -2508,7 +2508,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -2581,7 +2581,7 @@
       "system": 1
     },
     "latest_version": "2502-05-2023-143713-1.zip",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 78
   },
@@ -2700,7 +2700,7 @@
       "repo": 1
     },
     "latest_version": "11.16.1",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -2821,7 +2821,7 @@
       "project": 1
     },
     "latest_version": "4.4.2",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 11
   },
@@ -2960,7 +2960,7 @@
       "extension": 1
     },
     "latest_version": "2.11.2",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -3067,7 +3067,7 @@
       "repo": 1
     },
     "latest_version": "20.16.0",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3174,7 +3174,7 @@
       "repo": 1
     },
     "latest_version": "5.40.0",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3287,7 +3287,7 @@
       "repo": 1
     },
     "latest_version": "3.22.43",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3388,7 +3388,7 @@
       "repo": 1
     },
     "latest_version": "6.22.1",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 0
   },
@@ -3521,7 +3521,7 @@
       "extension": 1
     },
     "latest_version": "7.24.5",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 25
   },
@@ -3698,7 +3698,7 @@
       "plugin": 1
     },
     "latest_version": "26.2.1",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 3792
   },
@@ -3837,7 +3837,7 @@
       "project": 2
     },
     "latest_version": "19.2.4",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 18
   },
@@ -3915,7 +3915,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4030,7 +4030,7 @@
       "project": 1
     },
     "latest_version": "3.5.30",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -4181,7 +4181,7 @@
       "project": 1
     },
     "latest_version": "6.0.8",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 30
   },
@@ -4257,7 +4257,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:30+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:42+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4358,7 +4358,7 @@
       "package": 1
     },
     "latest_version": "8.0.7",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 220
   },
@@ -4422,7 +4422,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4495,7 +4495,7 @@
       "system": 1
     },
     "latest_version": "2.0",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 1
   },
@@ -4602,7 +4602,7 @@
       "project": 1
     },
     "latest_version": "7.0.4",
-    "last_version_synced_at": "2026-03-22T01:17:30+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:42+00:00",
     "version_sync_status": "green",
     "security_version_count": 92
   },
@@ -4666,7 +4666,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4767,7 +4767,7 @@
       "package": 1
     },
     "latest_version": "2.55.0",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -4831,7 +4831,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -4932,7 +4932,7 @@
       "package": 1
     },
     "latest_version": "21.2.5",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 18
   },
@@ -5039,7 +5039,7 @@
       "repo": 1
     },
     "latest_version": "5.0.4",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -5140,7 +5140,7 @@
       "package": 1
     },
     "latest_version": "13.1.1",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 103
   },
@@ -5204,7 +5204,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -5311,7 +5311,7 @@
       "project": 1
     },
     "latest_version": "2.2.11.RELEASE",
-    "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:41+00:00",
     "version_sync_status": "green",
     "security_version_count": 22
   },
@@ -5412,7 +5412,7 @@
       "project": 1
     },
     "latest_version": "0.27.4",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -5476,7 +5476,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -5577,7 +5577,7 @@
       "project": 1
     },
     "latest_version": "5.8.2",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -5678,7 +5678,7 @@
       "project": 1
     },
     "latest_version": "0.2.10",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 22
   },
@@ -5779,7 +5779,7 @@
       "repo": 1
     },
     "latest_version": "1.12.0",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 2
   },
@@ -5880,7 +5880,7 @@
       "package": 1
     },
     "latest_version": "21.4.7",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -5981,7 +5981,7 @@
       "project": 1
     },
     "latest_version": "3.1.2",
-    "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:37+00:00",
     "version_sync_status": "green",
     "security_version_count": 4
   },
@@ -6045,7 +6045,7 @@
       "system": 1
     },
     "latest_version": "",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+00:00",
     "version_sync_status": "source-gap",
     "security_version_count": 0
   },
@@ -6146,7 +6146,7 @@
       "project": 1
     },
     "latest_version": "0.0.15",
-    "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+    "last_version_synced_at": "2026-03-22T09:18:44+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 1c8187c3..41b08c2e 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-22T01:17:37+00:00`
+- 生成时间: `2026-03-22T09:18:57+00:00`
 - 已编目实体: `109`
 - 待编目 backlog: `7`
 - history-full 已完成: `40`
diff --git a/08-threat-intel/generated/entity-completeness.json b/08-threat-intel/generated/entity-completeness.json
index 52e7fa0a..8817b7e8 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-22T01:17:37+00:00",
+  "generated_at": "2026-03-22T09:18:57+00:00",
   "cataloged_entity_total": 109,
   "candidate_entity_total": 7,
   "history_full_complete_count": 40,
diff --git a/08-threat-intel/generated/entity-discovery-backlog.md b/08-threat-intel/generated/entity-discovery-backlog.md
index 43756c77..d30914c4 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-22T01:17:37+00:00`
+- 生成时间: `2026-03-22T09:18:57+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 64f705ee..64167108 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-22T01:17:37+00:00",
+  "generated_at": "2026-03-22T09:18:57+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 d91433ce..b6edf132 100644
--- a/08-threat-intel/generated/lab-enqueue-summary.json
+++ b/08-threat-intel/generated/lab-enqueue-summary.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-22T01:17:31+00:00",
+  "generated_at": "2026-03-22T09:18:44+00:00",
   "enqueued": 0,
   "queue_total": 2358,
   "items": [
diff --git a/08-threat-intel/generated/latest-ingest.md b/08-threat-intel/generated/latest-ingest.md
index 68d6085c..e3532483 100644
--- a/08-threat-intel/generated/latest-ingest.md
+++ b/08-threat-intel/generated/latest-ingest.md
@@ -1,6 +1,6 @@
 # 最新同步摘要
 
-- 渲染时间: `2026-03-22T01:17:38+00:00`
+- 渲染时间: `2026-03-22T09:18:59+00:00`
 - 系统数量: `62`
 - Advisory 数量: `2358`
 - 已编目实体数量: `109`
diff --git a/08-threat-intel/generated/monitor-summary.json b/08-threat-intel/generated/monitor-summary.json
index f58ebd32..89d1e7f1 100644
--- a/08-threat-intel/generated/monitor-summary.json
+++ b/08-threat-intel/generated/monitor-summary.json
@@ -1,11 +1,11 @@
 {
-  "generated_at": "2026-03-22T01:17:22+00:00",
+  "generated_at": "2026-03-22T09:18:32+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-22T01:17:22+00:00",
+  "last_fully_green_run": "2026-03-22T09:18:32+00:00",
   "source_catalog": {
     "system_count": 62,
     "source_count": 179,
diff --git a/08-threat-intel/generated/release-index.json b/08-threat-intel/generated/release-index.json
index e3ff7fa1..0b5b6f1a 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-22T01:17:38+00:00",
+  "generated_at": "2026-03-22T09:18:59+00:00",
   "version_count": 6183,
   "versions": [
     {
diff --git a/08-threat-intel/generated/run-summary.json b/08-threat-intel/generated/run-summary.json
index 39fee869..24eb6760 100644
--- a/08-threat-intel/generated/run-summary.json
+++ b/08-threat-intel/generated/run-summary.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-22T01:17:38+00:00",
+  "generated_at": "2026-03-22T09:18:59+00:00",
   "system_count": 62,
   "advisory_count": 2358,
   "cataloged_entity_total": 109,
diff --git a/08-threat-intel/generated/source-catalog-audit.json b/08-threat-intel/generated/source-catalog-audit.json
index a367b52f..a2e603ca 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-22T01:17:13+00:00",
+  "generated_at": "2026-03-22T09:17:05+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 2f88a7e1..cdd22d80 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-22T01:17:13+00:00`
+- generated_at: `2026-03-22T09:17:05+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 e268fa48..2886997c 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-22T01:17:22+00:00",
+  "generated_at": "2026-03-22T09:18:32+00:00",
   "active_source_count": 102,
   "green_source_count": 102,
   "failure_count": 0,
   "all_green": true,
-  "last_fully_green_run": "2026-03-22T01:17:22+00:00",
+  "last_fully_green_run": "2026-03-22T09:18:32+00:00",
   "retries_performed": 0,
   "probes": [
     {
       "system_id": "adminer",
       "source_name": "OSV Adminer",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 4.875,
       "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.048,
+      "elapsed_seconds": 0.071,
       "kind": "vendor-index",
       "items_seen": 46
     },
@@ -27,7 +27,7 @@
       "system_id": "angular",
       "source_name": "OSV Angular",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 3.236,
       "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": 0.002,
+      "elapsed_seconds": 3.5,
       "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": 0.053,
+      "elapsed_seconds": 4.42,
       "kind": "kev-json",
       "items_seen": 1551
     },
@@ -51,7 +51,7 @@
       "system_id": "apache-tomcat",
       "source_name": "Apache Tomcat Security",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.002,
+      "elapsed_seconds": 3.534,
       "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": 0.04,
+      "elapsed_seconds": 4.42,
       "kind": "kev-json",
       "items_seen": 1551
     },
@@ -67,7 +67,7 @@
       "system_id": "aspnet-core",
       "source_name": "OSV ASP.NET Core",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 4.325,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -75,7 +75,7 @@
       "system_id": "astro",
       "source_name": "OSV Astro",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 3.238,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -83,7 +83,7 @@
       "system_id": "caddy",
       "source_name": "OSV Caddy",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 4.785,
       "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.051,
+      "elapsed_seconds": 0.079,
       "kind": "html-links",
       "items_seen": 127
     },
@@ -99,7 +99,7 @@
       "system_id": "directus",
       "source_name": "OSV Directus",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.05,
+      "elapsed_seconds": 2.734,
       "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.048,
+      "elapsed_seconds": 0.072,
       "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.048,
+      "elapsed_seconds": 0.072,
       "kind": "rss-feed",
       "items_seen": 3
     },
@@ -123,7 +123,7 @@
       "system_id": "discourse",
       "source_name": "OSV Discourse",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.048,
+      "elapsed_seconds": 2.203,
       "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": 0.0,
+      "elapsed_seconds": 3.232,
       "kind": "vendor-index",
       "items_seen": 1276
     },
@@ -139,7 +139,7 @@
       "system_id": "django",
       "source_name": "Django Security Weblog",
       "source_kind": "vendor-index",
-      "elapsed_seconds": 0.024,
+      "elapsed_seconds": 3.202,
       "kind": "vendor-index",
       "items_seen": 332
     },
@@ -147,7 +147,7 @@
       "system_id": "django",
       "source_name": "OSV Django",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 5.804,
       "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.053,
+      "elapsed_seconds": 0.085,
       "kind": "rss-feed",
       "items_seen": 20
     },
@@ -163,7 +163,7 @@
       "system_id": "drupal",
       "source_name": "OSV Drupal",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 3.794,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -171,7 +171,7 @@
       "system_id": "echo",
       "source_name": "OSV Echo",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 4.316,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -179,7 +179,7 @@
       "system_id": "esbuild",
       "source_name": "OSV esbuild",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.026,
+      "elapsed_seconds": 3.602,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -187,7 +187,7 @@
       "system_id": "express",
       "source_name": "OSV Express",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 3.203,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -195,7 +195,7 @@
       "system_id": "fastify",
       "source_name": "OSV Fastify",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 3.442,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -203,7 +203,7 @@
       "system_id": "flask",
       "source_name": "OSV Flask",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.002,
+      "elapsed_seconds": 4.329,
       "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.052,
+      "elapsed_seconds": 0.084,
       "kind": "html-links",
       "items_seen": 119
     },
@@ -219,7 +219,7 @@
       "system_id": "ghost",
       "source_name": "OSV Ghost",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.051,
+      "elapsed_seconds": 2.634,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -227,7 +227,7 @@
       "system_id": "gin",
       "source_name": "OSV Gin",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 4.321,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -235,7 +235,7 @@
       "system_id": "gitea",
       "source_name": "OSV Gitea",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 5.06,
       "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": 0.04,
+      "elapsed_seconds": 3.878,
       "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": 0.047,
+      "elapsed_seconds": 3.878,
       "kind": "atom-feed",
       "items_seen": 186
     },
@@ -259,7 +259,7 @@
       "system_id": "grafana",
       "source_name": "CISA KEV Grafana",
       "source_kind": "kev-json",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 4.42,
       "kind": "kev-json",
       "items_seen": 1551
     },
@@ -267,7 +267,7 @@
       "system_id": "grafana",
       "source_name": "Grafana Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 3.878,
       "kind": "html-links",
       "items_seen": 159
     },
@@ -275,7 +275,7 @@
       "system_id": "hapi",
       "source_name": "OSV Hapi",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 3.5,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -283,7 +283,7 @@
       "system_id": "haproxy",
       "source_name": "HAProxy Blog Feed",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 3.708,
       "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": 0.04,
+      "elapsed_seconds": 3.878,
       "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.053,
+      "elapsed_seconds": 0.085,
       "kind": "html-links",
       "items_seen": 139
     },
@@ -307,7 +307,7 @@
       "system_id": "joomla",
       "source_name": "OSV Joomla",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.052,
+      "elapsed_seconds": 2.249,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -315,7 +315,7 @@
       "system_id": "kibana",
       "source_name": "Elastic Product Security",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 4.042,
       "kind": "html-links",
       "items_seen": 66
     },
@@ -323,7 +323,7 @@
       "system_id": "kibana",
       "source_name": "NVD Kibana",
       "source_kind": "nvd-search",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 5.848,
       "kind": "nvd-search",
       "items_seen": 1
     },
@@ -331,7 +331,7 @@
       "system_id": "koa",
       "source_name": "OSV Koa",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.031,
+      "elapsed_seconds": 3.241,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -339,7 +339,7 @@
       "system_id": "laravel",
       "source_name": "OSV Laravel",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.026,
+      "elapsed_seconds": 4.042,
       "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.041,
+      "elapsed_seconds": 0.057,
       "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": 0.041,
+      "elapsed_seconds": 2.33,
       "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.041,
+      "elapsed_seconds": 0.047,
       "kind": "html-links",
       "items_seen": 134
     },
@@ -371,7 +371,7 @@
       "system_id": "mattermost",
       "source_name": "Mattermost Security Updates JSON",
       "source_kind": "json-feed",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 4.316,
       "kind": "json-feed",
       "items_seen": 594
     },
@@ -379,7 +379,7 @@
       "system_id": "mattermost",
       "source_name": "OSV Mattermost",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 6.876,
       "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.05,
+      "elapsed_seconds": 0.077,
       "kind": "rss-feed",
       "items_seen": 30
     },
@@ -395,7 +395,7 @@
       "system_id": "mediawiki",
       "source_name": "OSV MediaWiki",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.049,
+      "elapsed_seconds": 2.548,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -403,7 +403,7 @@
       "system_id": "medusa",
       "source_name": "OSV Medusa",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 2.144,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -411,7 +411,7 @@
       "system_id": "moodle",
       "source_name": "OSV Moodle",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.049,
+      "elapsed_seconds": 5.403,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -419,7 +419,7 @@
       "system_id": "nestjs",
       "source_name": "OSV NestJS",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 3.238,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -427,7 +427,7 @@
       "system_id": "nextjs",
       "source_name": "OSV Next.js",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 2.326,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -435,7 +435,7 @@
       "system_id": "nginx",
       "source_name": "CISA KEV NGINX",
       "source_kind": "kev-json",
-      "elapsed_seconds": 0.047,
+      "elapsed_seconds": 4.399,
       "kind": "kev-json",
       "items_seen": 1551
     },
@@ -443,7 +443,7 @@
       "system_id": "nginx",
       "source_name": "NGINX Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.002,
+      "elapsed_seconds": 3.442,
       "kind": "html-links",
       "items_seen": 138
     },
@@ -451,7 +451,7 @@
       "system_id": "nodejs",
       "source_name": "CISA KEV Node.js",
       "source_kind": "kev-json",
-      "elapsed_seconds": 0.075,
+      "elapsed_seconds": 4.42,
       "kind": "kev-json",
       "items_seen": 1551
     },
@@ -459,7 +459,7 @@
       "system_id": "nodejs",
       "source_name": "Node.js Security Releases",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 2.308,
       "kind": "html-links",
       "items_seen": 74
     },
@@ -467,7 +467,7 @@
       "system_id": "nuxt",
       "source_name": "OSV Nuxt",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 2.49,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -475,7 +475,7 @@
       "system_id": "opencart",
       "source_name": "OSV OpenCart",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.036,
+      "elapsed_seconds": 2.324,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -483,7 +483,7 @@
       "system_id": "opencart",
       "source_name": "OpenCart Releases",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.036,
+      "elapsed_seconds": 0.025,
       "kind": "html-links",
       "items_seen": 1500
     },
@@ -491,7 +491,7 @@
       "system_id": "openmage",
       "source_name": "OSV OpenMage",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.041,
+      "elapsed_seconds": 2.55,
       "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.041,
+      "elapsed_seconds": 0.047,
       "kind": "html-links",
       "items_seen": 125
     },
@@ -507,7 +507,7 @@
       "system_id": "phpmyadmin",
       "source_name": "OSV phpMyAdmin",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 5.177,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -515,7 +515,7 @@
       "system_id": "phpmyadmin",
       "source_name": "phpMyAdmin Security Page",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 3.708,
       "kind": "html-links",
       "items_seen": 262
     },
@@ -523,7 +523,7 @@
       "system_id": "prestashop",
       "source_name": "Friends Of Presta Security",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.036,
+      "elapsed_seconds": 0.029,
       "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.036,
+      "elapsed_seconds": 0.029,
       "kind": "html-links",
       "items_seen": 127
     },
@@ -539,7 +539,7 @@
       "system_id": "prestashop",
       "source_name": "OSV PrestaShop",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.036,
+      "elapsed_seconds": 2.302,
       "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.036,
+      "elapsed_seconds": 0.029,
       "kind": "html-links",
       "items_seen": 60
     },
@@ -555,7 +555,7 @@
       "system_id": "rails",
       "source_name": "OSV Rails",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 4.756,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -563,7 +563,7 @@
       "system_id": "react",
       "source_name": "OSV React",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 2.143,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -571,7 +571,7 @@
       "system_id": "redmine",
       "source_name": "OSV Redmine",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 5.474,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -579,7 +579,7 @@
       "system_id": "redmine",
       "source_name": "Redmine Security Advisories",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.047,
+      "elapsed_seconds": 4.321,
       "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.03,
+      "elapsed_seconds": 0.017,
       "kind": "html-links",
       "items_seen": 120
     },
@@ -595,7 +595,7 @@
       "system_id": "saleor",
       "source_name": "OSV Saleor",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 2.173,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -603,7 +603,7 @@
       "system_id": "shopware",
       "source_name": "OSV Shopware",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.036,
+      "elapsed_seconds": 2.822,
       "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.036,
+      "elapsed_seconds": 0.023,
       "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": 0.063,
+      "elapsed_seconds": 3.871,
       "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": 0.024,
+      "elapsed_seconds": 2.553,
       "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": 0.026,
+      "elapsed_seconds": 3.709,
       "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": 0.026,
+      "elapsed_seconds": 2.49,
       "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": 0.026,
+      "elapsed_seconds": 3.767,
       "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": 0.026,
+      "elapsed_seconds": 2.51,
       "kind": "html-links",
       "items_seen": 118
     },
@@ -667,7 +667,7 @@
       "system_id": "strapi",
       "source_name": "OSV Strapi",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.051,
+      "elapsed_seconds": 2.225,
       "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.051,
+      "elapsed_seconds": 0.082,
       "kind": "html-links",
       "items_seen": 124
     },
@@ -683,7 +683,7 @@
       "system_id": "sveltekit",
       "source_name": "OSV SvelteKit",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 3.24,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -691,7 +691,7 @@
       "system_id": "symfony",
       "source_name": "OSV Symfony",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.026,
+      "elapsed_seconds": 4.61,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -699,7 +699,7 @@
       "system_id": "traefik",
       "source_name": "OSV Traefik",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 4.948,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -707,7 +707,7 @@
       "system_id": "undici",
       "source_name": "OSV Undici",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.029,
+      "elapsed_seconds": 3.535,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -715,7 +715,7 @@
       "system_id": "vite",
       "source_name": "OSV Vite",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 3.246,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -723,7 +723,7 @@
       "system_id": "vue",
       "source_name": "OSV Vue",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.03,
+      "elapsed_seconds": 2.151,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -731,7 +731,7 @@
       "system_id": "webpack",
       "source_name": "OSV webpack",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.026,
+      "elapsed_seconds": 3.709,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -739,7 +739,7 @@
       "system_id": "werkzeug",
       "source_name": "OSV Werkzeug",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.04,
+      "elapsed_seconds": 4.341,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -755,7 +755,7 @@
       "system_id": "woocommerce",
       "source_name": "OSV WooCommerce",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.041,
+      "elapsed_seconds": 2.461,
       "kind": "osv-batch",
       "items_seen": 1
     },
@@ -763,7 +763,7 @@
       "system_id": "woocommerce",
       "source_name": "Patchstack Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.041,
+      "elapsed_seconds": 0.035,
       "kind": "html-links",
       "items_seen": 193
     },
@@ -779,7 +779,7 @@
       "system_id": "woocommerce",
       "source_name": "Wordfence Vulnerability Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.036,
+      "elapsed_seconds": 0.035,
       "kind": "html-links",
       "items_seen": 0
     },
@@ -787,7 +787,7 @@
       "system_id": "wordpress",
       "source_name": "Patchstack Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.054,
+      "elapsed_seconds": 0.088,
       "kind": "html-links",
       "items_seen": 193
     },
@@ -795,7 +795,7 @@
       "system_id": "wordpress",
       "source_name": "PortSwigger Research",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.054,
+      "elapsed_seconds": 1.461,
       "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.054,
+      "elapsed_seconds": 0.088,
       "kind": "html-links",
       "items_seen": 75
     },
@@ -811,7 +811,7 @@
       "system_id": "wordpress",
       "source_name": "WordPress Security News RSS",
       "source_kind": "rss-feed",
-      "elapsed_seconds": 0.056,
+      "elapsed_seconds": 0.092,
       "kind": "rss-feed",
       "items_seen": 10
     },
@@ -819,7 +819,7 @@
       "system_id": "wordpress",
       "source_name": "Wordfence Vulnerability Database",
       "source_kind": "html-links",
-      "elapsed_seconds": 0.056,
+      "elapsed_seconds": 0.092,
       "kind": "html-links",
       "items_seen": 0
     }
@@ -827,73 +827,73 @@
   "failures": [],
   "slow_sources": [
     {
-      "system_id": "nodejs",
-      "source_name": "CISA KEV Node.js",
-      "source_kind": "kev-json",
-      "elapsed_seconds": 0.075,
-      "status": "ok"
-    },
-    {
-      "system_id": "spring-boot",
-      "source_name": "OSV Spring Boot",
+      "system_id": "mattermost",
+      "source_name": "OSV Mattermost",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.063,
+      "elapsed_seconds": 6.876,
       "status": "ok"
     },
     {
-      "system_id": "wordpress",
-      "source_name": "WordPress Security News RSS",
-      "source_kind": "rss-feed",
-      "elapsed_seconds": 0.056,
+      "system_id": "kibana",
+      "source_name": "NVD Kibana",
+      "source_kind": "nvd-search",
+      "elapsed_seconds": 5.848,
       "status": "ok"
     },
     {
-      "system_id": "wordpress",
-      "source_name": "Wordfence Vulnerability Database",
-      "source_kind": "html-links",
-      "elapsed_seconds": 0.056,
+      "system_id": "django",
+      "source_name": "OSV Django",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 5.804,
       "status": "ok"
     },
     {
-      "system_id": "wordpress",
-      "source_name": "Patchstack Database",
-      "source_kind": "html-links",
-      "elapsed_seconds": 0.054,
+      "system_id": "redmine",
+      "source_name": "OSV Redmine",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 5.474,
       "status": "ok"
     },
     {
-      "system_id": "wordpress",
-      "source_name": "PortSwigger Research",
-      "source_kind": "html-links",
-      "elapsed_seconds": 0.054,
+      "system_id": "moodle",
+      "source_name": "OSV Moodle",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 5.403,
       "status": "ok"
     },
     {
-      "system_id": "wordpress",
-      "source_name": "WPScan Vulnerability Database",
-      "source_kind": "html-links",
-      "elapsed_seconds": 0.054,
+      "system_id": "phpmyadmin",
+      "source_name": "OSV phpMyAdmin",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 5.177,
+      "status": "ok"
+    },
+    {
+      "system_id": "gitea",
+      "source_name": "OSV Gitea",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 5.06,
+      "status": "ok"
+    },
+    {
+      "system_id": "traefik",
+      "source_name": "OSV Traefik",
+      "source_kind": "osv-batch",
+      "elapsed_seconds": 4.948,
       "status": "ok"
     },
     {
       "system_id": "adminer",
       "source_name": "OSV Adminer",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
-      "status": "ok"
-    },
-    {
-      "system_id": "apache-httpd",
-      "source_name": "CISA KEV Apache HTTPD",
-      "source_kind": "kev-json",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 4.875,
       "status": "ok"
     },
     {
       "system_id": "caddy",
       "source_name": "OSV Caddy",
       "source_kind": "osv-batch",
-      "elapsed_seconds": 0.053,
+      "elapsed_seconds": 4.785,
       "status": "ok"
     }
   ],
diff --git a/08-threat-intel/generated/version-backlog.json b/08-threat-intel/generated/version-backlog.json
index f5b6b1d6..15be6597 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-22T01:17:38+00:00",
+  "generated_at": "2026-03-22T09:18:59+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 62cefbb7..001cc887 100644
--- a/08-threat-intel/generated/version-completeness.json
+++ b/08-threat-intel/generated/version-completeness.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-03-22T01:17:38+00:00",
+  "generated_at": "2026-03-22T09:18:59+00:00",
   "cataloged_entity_total": 109,
   "latest_version_synced_count": 94,
   "source_gap_count": 15,
diff --git a/08-threat-intel/generated/version-sync-report.md b/08-threat-intel/generated/version-sync-report.md
index 41cf72ab..cbef02a5 100644
--- a/08-threat-intel/generated/version-sync-report.md
+++ b/08-threat-intel/generated/version-sync-report.md
@@ -1,6 +1,6 @@
 # 安全相关版本同步报告
 
-- 生成时间: `2026-03-22T01:17:38+00:00`
+- 生成时间: `2026-03-22T09:18:59+00:00`
 - 已编目实体: `109`
 - 最新版本已同步: `94`
 - 版本 source-gap: `15`
diff --git a/08-threat-intel/registry/entities/adminer.json b/08-threat-intel/registry/entities/adminer.json
index f4106e4c..343136a0 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 37ba183b..c16adf15 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 7a303803..f38136fd 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 1c8a5d92..8a6bedde 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 f0ffe845..a39fddc5 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 0140f263..e326403b 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 dbad3b16..a75a2e47 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 46f906df..e146e91b 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 08124632..c5ff54f7 100644
--- a/08-threat-intel/registry/entities/astro--project--astro.json
+++ b/08-threat-intel/registry/entities/astro--project--astro.json
@@ -31,7 +31,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 26,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 37d70c5b..c2dfecb2 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": 30,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 7f7a4888..6f6f2386 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
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 702f3070..72ac9e2c 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
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 794f4ac8..485959f7 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": 4,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 2b4c8fba..af0ea434 100644
--- a/08-threat-intel/registry/entities/directus--repo--directus-directus.json
+++ b/08-threat-intel/registry/entities/directus--repo--directus-directus.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 1,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 5e34221c..b9bdbfad 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 59d81b3a..1dca6b8a 100644
--- a/08-threat-intel/registry/entities/discourse.json
+++ b/08-threat-intel/registry/entities/discourse.json
@@ -31,7 +31,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 78,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 27c0feff..53f17ee2 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 99a84686..1cf7d341 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 d9200b32..c12d1f03 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 6e6d93ae..e33b6bfe 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 69a40e80..623f754a 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 d41d109b..54bb12dc 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 7ce19f13..ac8a8afa 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 580807c6..fbf35bae 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 082d2ea4..7d1436ee 100644
--- a/08-threat-intel/registry/entities/fastify--project--fastify.json
+++ b/08-threat-intel/registry/entities/fastify--project--fastify.json
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 2,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 de65b4b6..3830a04f 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": 2,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 81bde5fa..a07b5a03 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 11d87898..b083011a 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 62d8964e..e0d651a5 100644
--- a/08-threat-intel/registry/entities/ghost--repo--tryghost-ghost.json
+++ b/08-threat-intel/registry/entities/ghost--repo--tryghost-ghost.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+00:00",
   "latest_version_evidence": [
     "GitHub Releases API"
   ],
diff --git a/08-threat-intel/registry/entities/ghost.json b/08-threat-intel/registry/entities/ghost.json
index 567b0181..a26ae677 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 4ce1ab18..7ea500dd 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 42530b76..b33df9ad 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 ef1898f5..c491b62b 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 c489c9a3..9fff37b6 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": 614,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 9d98eac3..7b4361cc 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 244147a3..ed70345a 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 80b8ea0d..3a638422 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 7ca874a4..79b1b85e 100644
--- a/08-threat-intel/registry/entities/haproxy.json
+++ b/08-threat-intel/registry/entities/haproxy.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 1,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 dfa10755..13709e92 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 cff47b09..2a061db2 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 ecfee656..101d9982 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 54c97dfd..9aa20e1e 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 9d751907..67f089ff 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 75acd28f..0ae7c308 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 e584daef..ef12a0b3 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 d9be01a5..bae63c56 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
@@ -24,7 +24,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 3,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 dbd6afb6..b160b835 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-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 75995b21..1b56cb9b 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-22T01:17:25+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:38+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 5e61ed2d..f68bc97c 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-22T01:17:27+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:40+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 5d5624d3..2edbc544 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": 765,
-  "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+00:00",
   "latest_version_evidence": [
     "Mattermost Security Updates JSON"
   ],
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 1d82df9b..0652a429 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
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 761,
-  "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 1613ea04..c4d29af7 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": 3041,
-  "last_version_synced_at": "2026-03-22T01:17:24+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:37+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 4a70500d..ab7812c6 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 8df1b53e..f55cb5ab 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 ba99852d..22681310 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 152cf0bf..a4f92ee8 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 bdfafa1d..6a991809 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 150561e5..1ca75fd0 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 81551e13..ae746fe1 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 833debc8..2389b3c9 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 93bd9834..d6deac2d 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 cc30c3d4..d82bd2e1 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 7fbe4468..9dae3a51 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 f506944c..c64b1a67 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 f80971c9..27f9f04e 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 4e72b22f..a1ba32e1 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 1ef4a9df..06287ea3 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+00:00",
   "latest_version_evidence": [
     "phpMyAdmin Security Page"
   ],
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 2bf22f9f..a9f3ac66 100644
--- a/08-threat-intel/registry/entities/prestashop--repo--prestashop-prestashop.json
+++ b/08-threat-intel/registry/entities/prestashop--repo--prestashop-prestashop.json
@@ -26,7 +26,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 9,
-  "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 e7a55b7a..cb6bf929 100644
--- a/08-threat-intel/registry/entities/prestashop.json
+++ b/08-threat-intel/registry/entities/prestashop.json
@@ -25,7 +25,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 9,
-  "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 fdde80fa..c288dd3e 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 d172f80f..989b7f28 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 4f58a51e..9c6b08e1 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 c19e7f35..41540a28 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 659a18d9..140bf753 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 10859629..42c61c2e 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 f0684d87..f192834b 100644
--- a/08-threat-intel/registry/entities/saleor--repo--saleor-saleor.json
+++ b/08-threat-intel/registry/entities/saleor--repo--saleor-saleor.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+00:00",
   "latest_version_evidence": [
     "GitHub Releases API"
   ],
diff --git a/08-threat-intel/registry/entities/saleor.json b/08-threat-intel/registry/entities/saleor.json
index a08b370e..38d82b35 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 39e12d9a..b5fa1c16 100644
--- a/08-threat-intel/registry/entities/shopware--repo--shopware-shopware.json
+++ b/08-threat-intel/registry/entities/shopware--repo--shopware-shopware.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+00:00",
   "latest_version_evidence": [
     "GitHub Releases API"
   ],
diff --git a/08-threat-intel/registry/entities/shopware.json b/08-threat-intel/registry/entities/shopware.json
index fe1a38d0..c9539afc 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 1cd91eb0..89aa7f6d 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-22T01:17:30+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:42+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 db781692..a8d43ff0 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-22T01:17:28+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:41+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 c09e3a56..32936147 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-22T01:17:30+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:42+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 b2fd5f19..6b853003 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 9f462405..24ad87c0 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-22T01:17:30+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:42+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 b67a3824..048d276d 100644
--- a/08-threat-intel/registry/entities/strapi--repo--strapi-strapi.json
+++ b/08-threat-intel/registry/entities/strapi--repo--strapi-strapi.json
@@ -21,7 +21,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 0,
-  "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+00:00",
   "latest_version_evidence": [
     "GitHub Releases API"
   ],
diff --git a/08-threat-intel/registry/entities/strapi.json b/08-threat-intel/registry/entities/strapi.json
index 4521e109..627f9af8 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 b0f47167..2bdcadf6 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 9f6f423d..da504f43 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 7a15fa83..6b17cee5 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 89a2b1b3..41eaabdb 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 6089aa10..028e66ff 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
@@ -22,7 +22,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 7,
-  "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 ae5c72d8..31676f8f 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
@@ -34,7 +34,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 56,
-  "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 9bdd7c62..68bf4f5c 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": 63,
-  "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 c9fa3444..8151eba7 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 5633ead0..0acd6322 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 2f3f0986..16c90a72 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 f1c23ddb..28746624 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 f4c747eb..ed419ecb 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 787c86cd..19fd0692 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 07937702..447228fe 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 4b043bb8..d4d137d9 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 908466d9..94930896 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 58c33111..764e4943 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 808d1a01..d30a663d 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 9e4fa845..bc706c99 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 b9f8fb2d..9963be2b 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-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 67856d98..86df6c1a 100644
--- a/08-threat-intel/registry/entities/woocommerce--repo--woocommerce-woocommerce.json
+++ b/08-threat-intel/registry/entities/woocommerce--repo--woocommerce-woocommerce.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 3,
-  "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 3c5b5d82..01b1ab1c 100644
--- a/08-threat-intel/registry/entities/woocommerce.json
+++ b/08-threat-intel/registry/entities/woocommerce.json
@@ -23,7 +23,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 3,
-  "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+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 4dde6cdd..8093bc9f 100644
--- a/08-threat-intel/registry/entities/wordpress.json
+++ b/08-threat-intel/registry/entities/wordpress.json
@@ -31,7 +31,7 @@
   ],
   "version_sync_status": "green",
   "security_version_count": 55,
-  "last_version_synced_at": "2026-03-22T01:17:31+00:00",
+  "last_version_synced_at": "2026-03-22T09:18:44+00:00",
   "latest_version_evidence": [
     "WPScan Vulnerability Database",
     "Patchstack Database"
diff --git a/08-threat-intel/registry/monitoring/2026-03-22T09-18-32+00-00.json b/08-threat-intel/registry/monitoring/2026-03-22T09-18-32+00-00.json
new file mode 100644
index 00000000..9dfbb47f
--- /dev/null
+++ b/08-threat-intel/registry/monitoring/2026-03-22T09-18-32+00-00.json
@@ -0,0 +1,10257 @@
+{
+  "generated_at": "2026-03-22T09:18:32+00:00",
+  "source_catalog_audit": {
+    "generated_at": "2026-03-22T09:17:05+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-22T09:18:32+00:00",
+    "active_source_count": 102,
+    "green_source_count": 102,
+    "failure_count": 0,
+    "all_green": true,
+    "last_fully_green_run": "2026-03-22T09:18:32+00:00",
+    "retries_performed": 0,
+    "probes": [
+      {
+        "system_id": "adminer",
+        "source_name": "OSV Adminer",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.875,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "adobe-commerce",
+        "source_name": "Adobe Magento Security Index",
+        "source_kind": "vendor-index",
+        "elapsed_seconds": 0.071,
+        "kind": "vendor-index",
+        "items_seen": 46
+      },
+      {
+        "system_id": "angular",
+        "source_name": "OSV Angular",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.236,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "apache-httpd",
+        "source_name": "Apache HTTPD Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.5,
+        "kind": "html-links",
+        "items_seen": 182
+      },
+      {
+        "system_id": "apache-httpd",
+        "source_name": "CISA KEV Apache HTTPD",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.42,
+        "kind": "kev-json",
+        "items_seen": 1551
+      },
+      {
+        "system_id": "apache-tomcat",
+        "source_name": "Apache Tomcat Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.534,
+        "kind": "html-links",
+        "items_seen": 270
+      },
+      {
+        "system_id": "apache-tomcat",
+        "source_name": "CISA KEV Tomcat",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.42,
+        "kind": "kev-json",
+        "items_seen": 1551
+      },
+      {
+        "system_id": "aspnet-core",
+        "source_name": "OSV ASP.NET Core",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.325,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "astro",
+        "source_name": "OSV Astro",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.238,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "caddy",
+        "source_name": "OSV Caddy",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.785,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "directus",
+        "source_name": "Directus GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.079,
+        "kind": "html-links",
+        "items_seen": 127
+      },
+      {
+        "system_id": "directus",
+        "source_name": "OSV Directus",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.734,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "discourse",
+        "source_name": "Discourse Release Notes RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.072,
+        "kind": "rss-feed",
+        "items_seen": 30
+      },
+      {
+        "system_id": "discourse",
+        "source_name": "Discourse Security RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.072,
+        "kind": "rss-feed",
+        "items_seen": 3
+      },
+      {
+        "system_id": "discourse",
+        "source_name": "OSV Discourse",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.203,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "django",
+        "source_name": "Django Security Releases Archive",
+        "source_kind": "vendor-index",
+        "elapsed_seconds": 3.232,
+        "kind": "vendor-index",
+        "items_seen": 1276
+      },
+      {
+        "system_id": "django",
+        "source_name": "Django Security Weblog",
+        "source_kind": "vendor-index",
+        "elapsed_seconds": 3.202,
+        "kind": "vendor-index",
+        "items_seen": 332
+      },
+      {
+        "system_id": "django",
+        "source_name": "OSV Django",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.804,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "drupal",
+        "source_name": "Drupal Security Advisories RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.085,
+        "kind": "rss-feed",
+        "items_seen": 20
+      },
+      {
+        "system_id": "drupal",
+        "source_name": "OSV Drupal",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.794,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "echo",
+        "source_name": "OSV Echo",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.316,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "esbuild",
+        "source_name": "OSV esbuild",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.602,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "express",
+        "source_name": "OSV Express",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.203,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "fastify",
+        "source_name": "OSV Fastify",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.442,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "flask",
+        "source_name": "OSV Flask",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.329,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "ghost",
+        "source_name": "Ghost GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.084,
+        "kind": "html-links",
+        "items_seen": 119
+      },
+      {
+        "system_id": "ghost",
+        "source_name": "OSV Ghost",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.634,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "gin",
+        "source_name": "OSV Gin",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.321,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "gitea",
+        "source_name": "OSV Gitea",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.06,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "gitlab-ce",
+        "source_name": "GitLab Advisory Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.878,
+        "kind": "html-links",
+        "items_seen": 5
+      },
+      {
+        "system_id": "gitlab-ce",
+        "source_name": "GitLab Security Releases Atom",
+        "source_kind": "atom-feed",
+        "elapsed_seconds": 3.878,
+        "kind": "atom-feed",
+        "items_seen": 186
+      },
+      {
+        "system_id": "grafana",
+        "source_name": "CISA KEV Grafana",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.42,
+        "kind": "kev-json",
+        "items_seen": 1551
+      },
+      {
+        "system_id": "grafana",
+        "source_name": "Grafana Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.878,
+        "kind": "html-links",
+        "items_seen": 159
+      },
+      {
+        "system_id": "hapi",
+        "source_name": "OSV Hapi",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.5,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "haproxy",
+        "source_name": "HAProxy Blog Feed",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 3.708,
+        "kind": "rss-feed",
+        "items_seen": 10
+      },
+      {
+        "system_id": "jenkins",
+        "source_name": "Jenkins Security Advisories RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 3.878,
+        "kind": "rss-feed",
+        "items_seen": 96
+      },
+      {
+        "system_id": "joomla",
+        "source_name": "Joomla Security Centre",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.085,
+        "kind": "html-links",
+        "items_seen": 139
+      },
+      {
+        "system_id": "joomla",
+        "source_name": "OSV Joomla",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.249,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "kibana",
+        "source_name": "Elastic Product Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 4.042,
+        "kind": "html-links",
+        "items_seen": 66
+      },
+      {
+        "system_id": "kibana",
+        "source_name": "NVD Kibana",
+        "source_kind": "nvd-search",
+        "elapsed_seconds": 5.848,
+        "kind": "nvd-search",
+        "items_seen": 1
+      },
+      {
+        "system_id": "koa",
+        "source_name": "OSV Koa",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.241,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "laravel",
+        "source_name": "OSV Laravel",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.042,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "magento-open-source",
+        "source_name": "Magento GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.057,
+        "kind": "html-links",
+        "items_seen": 99
+      },
+      {
+        "system_id": "magento-open-source",
+        "source_name": "OSV Magento Open Source",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.33,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "magento-open-source",
+        "source_name": "Sansec Research",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.047,
+        "kind": "html-links",
+        "items_seen": 134
+      },
+      {
+        "system_id": "mattermost",
+        "source_name": "Mattermost Security Updates JSON",
+        "source_kind": "json-feed",
+        "elapsed_seconds": 4.316,
+        "kind": "json-feed",
+        "items_seen": 594
+      },
+      {
+        "system_id": "mattermost",
+        "source_name": "OSV Mattermost",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 6.876,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "mediawiki",
+        "source_name": "MediaWiki Announce RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.077,
+        "kind": "rss-feed",
+        "items_seen": 30
+      },
+      {
+        "system_id": "mediawiki",
+        "source_name": "OSV MediaWiki",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.548,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "medusa",
+        "source_name": "OSV Medusa",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.144,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "moodle",
+        "source_name": "OSV Moodle",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.403,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "nestjs",
+        "source_name": "OSV NestJS",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.238,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "nextjs",
+        "source_name": "OSV Next.js",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.326,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "nginx",
+        "source_name": "CISA KEV NGINX",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.399,
+        "kind": "kev-json",
+        "items_seen": 1551
+      },
+      {
+        "system_id": "nginx",
+        "source_name": "NGINX Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.442,
+        "kind": "html-links",
+        "items_seen": 138
+      },
+      {
+        "system_id": "nodejs",
+        "source_name": "CISA KEV Node.js",
+        "source_kind": "kev-json",
+        "elapsed_seconds": 4.42,
+        "kind": "kev-json",
+        "items_seen": 1551
+      },
+      {
+        "system_id": "nodejs",
+        "source_name": "Node.js Security Releases",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.308,
+        "kind": "html-links",
+        "items_seen": 74
+      },
+      {
+        "system_id": "nuxt",
+        "source_name": "OSV Nuxt",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.49,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "opencart",
+        "source_name": "OSV OpenCart",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.324,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "opencart",
+        "source_name": "OpenCart Releases",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.025,
+        "kind": "html-links",
+        "items_seen": 1500
+      },
+      {
+        "system_id": "openmage",
+        "source_name": "OSV OpenMage",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.55,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "openmage",
+        "source_name": "OpenMage GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.047,
+        "kind": "html-links",
+        "items_seen": 125
+      },
+      {
+        "system_id": "phpmyadmin",
+        "source_name": "OSV phpMyAdmin",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.177,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "phpmyadmin",
+        "source_name": "phpMyAdmin Security Page",
+        "source_kind": "html-links",
+        "elapsed_seconds": 3.708,
+        "kind": "html-links",
+        "items_seen": 262
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "Friends Of Presta Security",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.029,
+        "kind": "html-links",
+        "items_seen": 38
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "GitHub PrestaShop Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.029,
+        "kind": "html-links",
+        "items_seen": 127
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "OSV PrestaShop",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.302,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "prestashop",
+        "source_name": "PrestaShop Security Page",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.029,
+        "kind": "html-links",
+        "items_seen": 60
+      },
+      {
+        "system_id": "rails",
+        "source_name": "OSV Rails",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.756,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "react",
+        "source_name": "OSV React",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.143,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "redmine",
+        "source_name": "OSV Redmine",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.474,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "redmine",
+        "source_name": "Redmine Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 4.321,
+        "kind": "html-links",
+        "items_seen": 371
+      },
+      {
+        "system_id": "saleor",
+        "source_name": "GitHub Saleor Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.017,
+        "kind": "html-links",
+        "items_seen": 120
+      },
+      {
+        "system_id": "saleor",
+        "source_name": "OSV Saleor",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.173,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "shopware",
+        "source_name": "OSV Shopware",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.822,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "shopware",
+        "source_name": "Shopware Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.023,
+        "kind": "html-links",
+        "items_seen": 129
+      },
+      {
+        "system_id": "spring-boot",
+        "source_name": "OSV Spring Boot",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.871,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "spring-boot",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.553,
+        "kind": "html-links",
+        "items_seen": 118
+      },
+      {
+        "system_id": "spring-framework",
+        "source_name": "OSV Spring Framework",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.709,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "spring-framework",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.49,
+        "kind": "html-links",
+        "items_seen": 118
+      },
+      {
+        "system_id": "spring-security",
+        "source_name": "OSV Spring Security",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.767,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "spring-security",
+        "source_name": "Spring Security Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 2.51,
+        "kind": "html-links",
+        "items_seen": 118
+      },
+      {
+        "system_id": "strapi",
+        "source_name": "OSV Strapi",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.225,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "strapi",
+        "source_name": "Strapi GitHub Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.082,
+        "kind": "html-links",
+        "items_seen": 124
+      },
+      {
+        "system_id": "sveltekit",
+        "source_name": "OSV SvelteKit",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.24,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "symfony",
+        "source_name": "OSV Symfony",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.61,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "traefik",
+        "source_name": "OSV Traefik",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.948,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "undici",
+        "source_name": "OSV Undici",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.535,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "vite",
+        "source_name": "OSV Vite",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.246,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "vue",
+        "source_name": "OSV Vue",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.151,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "webpack",
+        "source_name": "OSV webpack",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 3.709,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "werkzeug",
+        "source_name": "OSV Werkzeug",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.341,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "GitHub WooCommerce Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.041,
+        "kind": "html-links",
+        "items_seen": 107
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "OSV WooCommerce",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 2.461,
+        "kind": "osv-batch",
+        "items_seen": 1
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "Patchstack Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.035,
+        "kind": "html-links",
+        "items_seen": 193
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "Woo Developer Advisories",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.041,
+        "kind": "html-links",
+        "items_seen": 121
+      },
+      {
+        "system_id": "woocommerce",
+        "source_name": "Wordfence Vulnerability Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.035,
+        "kind": "html-links",
+        "items_seen": 0
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "Patchstack Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.088,
+        "kind": "html-links",
+        "items_seen": 193
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "PortSwigger Research",
+        "source_kind": "html-links",
+        "elapsed_seconds": 1.461,
+        "kind": "html-links",
+        "items_seen": 99
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "WPScan Vulnerability Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.088,
+        "kind": "html-links",
+        "items_seen": 75
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "WordPress Security News RSS",
+        "source_kind": "rss-feed",
+        "elapsed_seconds": 0.092,
+        "kind": "rss-feed",
+        "items_seen": 10
+      },
+      {
+        "system_id": "wordpress",
+        "source_name": "Wordfence Vulnerability Database",
+        "source_kind": "html-links",
+        "elapsed_seconds": 0.092,
+        "kind": "html-links",
+        "items_seen": 0
+      }
+    ],
+    "failures": [],
+    "slow_sources": [
+      {
+        "system_id": "mattermost",
+        "source_name": "OSV Mattermost",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 6.876,
+        "status": "ok"
+      },
+      {
+        "system_id": "kibana",
+        "source_name": "NVD Kibana",
+        "source_kind": "nvd-search",
+        "elapsed_seconds": 5.848,
+        "status": "ok"
+      },
+      {
+        "system_id": "django",
+        "source_name": "OSV Django",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.804,
+        "status": "ok"
+      },
+      {
+        "system_id": "redmine",
+        "source_name": "OSV Redmine",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.474,
+        "status": "ok"
+      },
+      {
+        "system_id": "moodle",
+        "source_name": "OSV Moodle",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.403,
+        "status": "ok"
+      },
+      {
+        "system_id": "phpmyadmin",
+        "source_name": "OSV phpMyAdmin",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.177,
+        "status": "ok"
+      },
+      {
+        "system_id": "gitea",
+        "source_name": "OSV Gitea",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 5.06,
+        "status": "ok"
+      },
+      {
+        "system_id": "traefik",
+        "source_name": "OSV Traefik",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.948,
+        "status": "ok"
+      },
+      {
+        "system_id": "adminer",
+        "source_name": "OSV Adminer",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.875,
+        "status": "ok"
+      },
+      {
+        "system_id": "caddy",
+        "source_name": "OSV Caddy",
+        "source_kind": "osv-batch",
+        "elapsed_seconds": 4.785,
+        "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-22T09:18:59+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-22T09:18:32+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-22T09:18:32+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": 109,
+      "candidate_entity_total": 7,
+      "history_full_complete_count": 40,
+      "workflow_complete_count": 99,
+      "version_mapped_count": 51,
+      "official_source_covered_count": 99
+    },
+    "version_coverage": {
+      "cataloged_entity_total": 109,
+      "latest_version_synced_count": 94,
+      "source_gap_count": 15,
+      "security_version_total": 6183,
+      "security_version_entity_count": 82,
+      "auto_promoted_entity_count": 10,
+      "lab_enqueued_count": 0
+    },
+    "lab_enqueue": {
+      "enqueued": 0,
+      "queue_total": 2358,
+      "pending_count": 0
+    }
+  }
+}
diff --git a/docs/testing-completeness-report.md b/docs/testing-completeness-report.md
index da4cb9b8..38406322 100644
--- a/docs/testing-completeness-report.md
+++ b/docs/testing-completeness-report.md
@@ -1,6 +1,6 @@
 # 全库 Advisory 完整度报告
 
-- 生成时间: `2026-03-22T01:17:39+00:00`
+- 生成时间: `2026-03-22T09:19:01+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-22T01:17:22+00:00`
+- 最近一次 source 全绿: `2026-03-22T09:18:32+00:00`
 - 已编目实体: `109`
 - 待编目 backlog: `7`