diff --git a/07-framework-security/cms/directus/INDEX.md b/07-framework-security/cms/directus/INDEX.md index cac6be22..8a89d02b 100644 --- a/07-framework-security/cms/directus/INDEX.md +++ b/07-framework-security/cms/directus/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/discourse/INDEX.md b/07-framework-security/cms/discourse/INDEX.md index eb14571d..b58fe75e 100644 --- a/07-framework-security/cms/discourse/INDEX.md +++ b/07-framework-security/cms/discourse/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/drupal/INDEX.md b/07-framework-security/cms/drupal/INDEX.md index 9329b58e..10841c75 100644 --- a/07-framework-security/cms/drupal/INDEX.md +++ b/07-framework-security/cms/drupal/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/ghost/INDEX.md b/07-framework-security/cms/ghost/INDEX.md index 620c60b4..4d319a40 100644 --- a/07-framework-security/cms/ghost/INDEX.md +++ b/07-framework-security/cms/ghost/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/joomla/INDEX.md b/07-framework-security/cms/joomla/INDEX.md index 7a7132de..bd41e00c 100644 --- a/07-framework-security/cms/joomla/INDEX.md +++ b/07-framework-security/cms/joomla/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/mediawiki/INDEX.md b/07-framework-security/cms/mediawiki/INDEX.md index 83e026cb..c6f6bfdc 100644 --- a/07-framework-security/cms/mediawiki/INDEX.md +++ b/07-framework-security/cms/mediawiki/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/moodle/INDEX.md b/07-framework-security/cms/moodle/INDEX.md index d6305697..400c9c77 100644 --- a/07-framework-security/cms/moodle/INDEX.md +++ b/07-framework-security/cms/moodle/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/strapi/INDEX.md b/07-framework-security/cms/strapi/INDEX.md index b760fb74..f11a3a04 100644 --- a/07-framework-security/cms/strapi/INDEX.md +++ b/07-framework-security/cms/strapi/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/cms/wordpress/INDEX.md b/07-framework-security/cms/wordpress/INDEX.md index a8cd12b7..448fcf92 100644 --- a/07-framework-security/cms/wordpress/INDEX.md +++ b/07-framework-security/cms/wordpress/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/adobe-commerce/INDEX.md b/07-framework-security/ecommerce/adobe-commerce/INDEX.md index e08212ab..687d85ac 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+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 2825d0c8..2bd40749 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/medusa/INDEX.md b/07-framework-security/ecommerce/medusa/INDEX.md index 25951618..378d8f73 100644 --- a/07-framework-security/ecommerce/medusa/INDEX.md +++ b/07-framework-security/ecommerce/medusa/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/opencart/INDEX.md b/07-framework-security/ecommerce/opencart/INDEX.md index bb899cb2..95b73d1e 100644 --- a/07-framework-security/ecommerce/opencart/INDEX.md +++ b/07-framework-security/ecommerce/opencart/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/openmage/INDEX.md b/07-framework-security/ecommerce/openmage/INDEX.md index d9f39e4d..7d0ea9df 100644 --- a/07-framework-security/ecommerce/openmage/INDEX.md +++ b/07-framework-security/ecommerce/openmage/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/prestashop/INDEX.md b/07-framework-security/ecommerce/prestashop/INDEX.md index d0ae9960..9c01a846 100644 --- a/07-framework-security/ecommerce/prestashop/INDEX.md +++ b/07-framework-security/ecommerce/prestashop/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/saleor/INDEX.md b/07-framework-security/ecommerce/saleor/INDEX.md index 7ce3b681..a238a397 100644 --- a/07-framework-security/ecommerce/saleor/INDEX.md +++ b/07-framework-security/ecommerce/saleor/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/shopware/INDEX.md b/07-framework-security/ecommerce/shopware/INDEX.md index b0ce7772..e081d15a 100644 --- a/07-framework-security/ecommerce/shopware/INDEX.md +++ b/07-framework-security/ecommerce/shopware/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/woocommerce/INDEX.md b/07-framework-security/ecommerce/woocommerce/INDEX.md index ffc5d96b..058f54df 100644 --- a/07-framework-security/ecommerce/woocommerce/INDEX.md +++ b/07-framework-security/ecommerce/woocommerce/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/angular/INDEX.md b/07-framework-security/frameworks/angular/INDEX.md index 6aa5824d..114cb71c 100644 --- a/07-framework-security/frameworks/angular/INDEX.md +++ b/07-framework-security/frameworks/angular/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/aspnet-core/INDEX.md b/07-framework-security/frameworks/aspnet-core/INDEX.md index bdaf75f3..45051ca4 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/astro/INDEX.md b/07-framework-security/frameworks/astro/INDEX.md index edbbb295..3dd91635 100644 --- a/07-framework-security/frameworks/astro/INDEX.md +++ b/07-framework-security/frameworks/astro/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/django/INDEX.md b/07-framework-security/frameworks/django/INDEX.md index 5ecd78e8..8ff601d7 100644 --- a/07-framework-security/frameworks/django/INDEX.md +++ b/07-framework-security/frameworks/django/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/echo/INDEX.md b/07-framework-security/frameworks/echo/INDEX.md index c60a5274..10a306af 100644 --- a/07-framework-security/frameworks/echo/INDEX.md +++ b/07-framework-security/frameworks/echo/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/esbuild/INDEX.md b/07-framework-security/frameworks/esbuild/INDEX.md index 142668e9..bbfe6279 100644 --- a/07-framework-security/frameworks/esbuild/INDEX.md +++ b/07-framework-security/frameworks/esbuild/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/express/INDEX.md b/07-framework-security/frameworks/express/INDEX.md index 9c90a515..b1eb69c3 100644 --- a/07-framework-security/frameworks/express/INDEX.md +++ b/07-framework-security/frameworks/express/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/fastify/INDEX.md b/07-framework-security/frameworks/fastify/INDEX.md index c3170639..68c895ee 100644 --- a/07-framework-security/frameworks/fastify/INDEX.md +++ b/07-framework-security/frameworks/fastify/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/flask/INDEX.md b/07-framework-security/frameworks/flask/INDEX.md index 9d8e0710..95d38919 100644 --- a/07-framework-security/frameworks/flask/INDEX.md +++ b/07-framework-security/frameworks/flask/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/gin/INDEX.md b/07-framework-security/frameworks/gin/INDEX.md index b26484d0..d7c9bcac 100644 --- a/07-framework-security/frameworks/gin/INDEX.md +++ b/07-framework-security/frameworks/gin/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/hapi/INDEX.md b/07-framework-security/frameworks/hapi/INDEX.md index 5ec4b563..41ed53ce 100644 --- a/07-framework-security/frameworks/hapi/INDEX.md +++ b/07-framework-security/frameworks/hapi/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/koa/INDEX.md b/07-framework-security/frameworks/koa/INDEX.md index 83c98068..c686fca6 100644 --- a/07-framework-security/frameworks/koa/INDEX.md +++ b/07-framework-security/frameworks/koa/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/laravel/INDEX.md b/07-framework-security/frameworks/laravel/INDEX.md index 98e478a6..61490420 100644 --- a/07-framework-security/frameworks/laravel/INDEX.md +++ b/07-framework-security/frameworks/laravel/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nestjs/INDEX.md b/07-framework-security/frameworks/nestjs/INDEX.md index 4938d5f2..8f838079 100644 --- a/07-framework-security/frameworks/nestjs/INDEX.md +++ b/07-framework-security/frameworks/nestjs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nextjs/INDEX.md b/07-framework-security/frameworks/nextjs/INDEX.md index a5840fd3..8826ea0b 100644 --- a/07-framework-security/frameworks/nextjs/INDEX.md +++ b/07-framework-security/frameworks/nextjs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nodejs/INDEX.md b/07-framework-security/frameworks/nodejs/INDEX.md index b7758710..694c0385 100644 --- a/07-framework-security/frameworks/nodejs/INDEX.md +++ b/07-framework-security/frameworks/nodejs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nuxt/INDEX.md b/07-framework-security/frameworks/nuxt/INDEX.md index 08762045..682c850e 100644 --- a/07-framework-security/frameworks/nuxt/INDEX.md +++ b/07-framework-security/frameworks/nuxt/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/rails/INDEX.md b/07-framework-security/frameworks/rails/INDEX.md index e4104cbe..0cd1d1d2 100644 --- a/07-framework-security/frameworks/rails/INDEX.md +++ b/07-framework-security/frameworks/rails/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/react/INDEX.md b/07-framework-security/frameworks/react/INDEX.md index ff9ffa6c..fadba0c3 100644 --- a/07-framework-security/frameworks/react/INDEX.md +++ b/07-framework-security/frameworks/react/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-boot/INDEX.md b/07-framework-security/frameworks/spring-boot/INDEX.md index c202c233..beb40c93 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-framework/INDEX.md b/07-framework-security/frameworks/spring-framework/INDEX.md index b5b8d90c..072a2170 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-security/INDEX.md b/07-framework-security/frameworks/spring-security/INDEX.md index fec6bde2..58eab635 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/sveltekit/INDEX.md b/07-framework-security/frameworks/sveltekit/INDEX.md index 3c2b40d1..15f838e9 100644 --- a/07-framework-security/frameworks/sveltekit/INDEX.md +++ b/07-framework-security/frameworks/sveltekit/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/symfony/INDEX.md b/07-framework-security/frameworks/symfony/INDEX.md index a2802d58..8e9a6025 100644 --- a/07-framework-security/frameworks/symfony/INDEX.md +++ b/07-framework-security/frameworks/symfony/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/undici/INDEX.md b/07-framework-security/frameworks/undici/INDEX.md index de1bc9b4..3c8fecdb 100644 --- a/07-framework-security/frameworks/undici/INDEX.md +++ b/07-framework-security/frameworks/undici/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vite/INDEX.md b/07-framework-security/frameworks/vite/INDEX.md index 5f755610..ec1adbbe 100644 --- a/07-framework-security/frameworks/vite/INDEX.md +++ b/07-framework-security/frameworks/vite/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vue/INDEX.md b/07-framework-security/frameworks/vue/INDEX.md index 73e30ef7..b4f3acf7 100644 --- a/07-framework-security/frameworks/vue/INDEX.md +++ b/07-framework-security/frameworks/vue/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/webpack/INDEX.md b/07-framework-security/frameworks/webpack/INDEX.md index fb5e8496..0ed4bfdd 100644 --- a/07-framework-security/frameworks/webpack/INDEX.md +++ b/07-framework-security/frameworks/webpack/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/werkzeug/INDEX.md b/07-framework-security/frameworks/werkzeug/INDEX.md index 8446c38c..310eed34 100644 --- a/07-framework-security/frameworks/werkzeug/INDEX.md +++ b/07-framework-security/frameworks/werkzeug/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/adminer/INDEX.md b/07-framework-security/platforms/adminer/INDEX.md index 55a249b1..65fa5a1d 100644 --- a/07-framework-security/platforms/adminer/INDEX.md +++ b/07-framework-security/platforms/adminer/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitea/INDEX.md b/07-framework-security/platforms/gitea/INDEX.md index ca5b8250..5fc019a1 100644 --- a/07-framework-security/platforms/gitea/INDEX.md +++ b/07-framework-security/platforms/gitea/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitlab-ce/INDEX.md b/07-framework-security/platforms/gitlab-ce/INDEX.md index f0d2d81e..9ed6e15c 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/grafana/INDEX.md b/07-framework-security/platforms/grafana/INDEX.md index 32163344..bb5c5918 100644 --- a/07-framework-security/platforms/grafana/INDEX.md +++ b/07-framework-security/platforms/grafana/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/jenkins/INDEX.md b/07-framework-security/platforms/jenkins/INDEX.md index 17c3f9ee..69c792df 100644 --- a/07-framework-security/platforms/jenkins/INDEX.md +++ b/07-framework-security/platforms/jenkins/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/kibana/INDEX.md b/07-framework-security/platforms/kibana/INDEX.md index 27d44bd6..514a3488 100644 --- a/07-framework-security/platforms/kibana/INDEX.md +++ b/07-framework-security/platforms/kibana/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/mattermost/INDEX.md b/07-framework-security/platforms/mattermost/INDEX.md index 535a5129..52adc378 100644 --- a/07-framework-security/platforms/mattermost/INDEX.md +++ b/07-framework-security/platforms/mattermost/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/phpmyadmin/INDEX.md b/07-framework-security/platforms/phpmyadmin/INDEX.md index 3a71c2f4..24950d87 100644 --- a/07-framework-security/platforms/phpmyadmin/INDEX.md +++ b/07-framework-security/platforms/phpmyadmin/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/redmine/INDEX.md b/07-framework-security/platforms/redmine/INDEX.md index aab7496d..37af8b52 100644 --- a/07-framework-security/platforms/redmine/INDEX.md +++ b/07-framework-security/platforms/redmine/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-httpd/INDEX.md b/07-framework-security/servers/apache-httpd/INDEX.md index bf866bde..2c20d2ac 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-tomcat/INDEX.md b/07-framework-security/servers/apache-tomcat/INDEX.md index 00bd7293..ea05d0b1 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` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/servers/caddy/INDEX.md b/07-framework-security/servers/caddy/INDEX.md index e591d787..70c93d17 100644 --- a/07-framework-security/servers/caddy/INDEX.md +++ b/07-framework-security/servers/caddy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/servers/haproxy/INDEX.md b/07-framework-security/servers/haproxy/INDEX.md index 18d4147a..3592b9bd 100644 --- a/07-framework-security/servers/haproxy/INDEX.md +++ b/07-framework-security/servers/haproxy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/servers/nginx/INDEX.md b/07-framework-security/servers/nginx/INDEX.md index 57cb4521..b8b8812c 100644 --- a/07-framework-security/servers/nginx/INDEX.md +++ b/07-framework-security/servers/nginx/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/07-framework-security/servers/traefik/INDEX.md b/07-framework-security/servers/traefik/INDEX.md index 2e8f86c0..fe4a95c2 100644 --- a/07-framework-security/servers/traefik/INDEX.md +++ b/07-framework-security/servers/traefik/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-18T17:52:48+00:00` +- 最近渲染时间: `2026-03-18T18:09:21+00:00` ## 目标约束 diff --git a/08-threat-intel/generated/dashboard/architecture.json b/08-threat-intel/generated/dashboard/architecture.json index d4ad8c91..9fd13fd9 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-18T17:56:12+00:00", + "generated_at": "2026-03-18T18:09:30+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": [ @@ -49,7 +49,7 @@ }, { "label": "\u751f\u6210\u65f6\u95f4", - "value": "2026-03-18T17:56:12+00:00" + "value": "2026-03-18T18:09:30+00:00" } ], "links": [ diff --git a/08-threat-intel/generated/dashboard/data/completeness.json b/08-threat-intel/generated/dashboard/data/completeness.json index 8e971d4e..69d62431 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-18T17:56:12+00:00", + "generated_at": "2026-03-18T18:09:30+00:00", "advisory_total": 89, "latest_statuses": { "verified-real": 89 @@ -173,18 +173,18 @@ "active_source_count": 110, "green_source_count": 110, "failure_count": 0, - "last_fully_green_run": "2026-03-18T17:44:31+00:00", + "last_fully_green_run": "2026-03-18T18:00:56+00:00", "open_alert_count": 0, "resolved_alert_count": 0 }, "monitor_summary": { - "generated_at": "2026-03-18T17:44:31+00:00", + "generated_at": "2026-03-18T18:00:56+00:00", "active_source_count": 110, "green_source_count": 110, "source_failure_count": 0, "open_alert_count": 0, "resolved_alert_count": 0, - "last_fully_green_run": "2026-03-18T17:44:31+00:00", + "last_fully_green_run": "2026-03-18T18:00:56+00:00", "source_catalog": { "system_count": 62, "source_count": 146, diff --git a/08-threat-intel/generated/dashboard/data/monitor-summary.json b/08-threat-intel/generated/dashboard/data/monitor-summary.json index 963c1f19..1998dad4 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-18T17:44:31+00:00", + "generated_at": "2026-03-18T18:00:56+00:00", "active_source_count": 110, "green_source_count": 110, "source_failure_count": 0, "open_alert_count": 0, "resolved_alert_count": 0, - "last_fully_green_run": "2026-03-18T17:44:31+00:00", + "last_fully_green_run": "2026-03-18T18:00:56+00:00", "source_catalog": { "system_count": 62, "source_count": 146, 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 f3503cab..9fc0f6da 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-18T17:41:42+00:00", + "generated_at": "2026-03-18T17:58:07+00:00", "system_count": 62, "source_count": 146, "active_source_count": 110, diff --git a/08-threat-intel/generated/dashboard/data/source-health.json b/08-threat-intel/generated/dashboard/data/source-health.json index 7c98cbc9..fe11cc81 100644 --- a/08-threat-intel/generated/dashboard/data/source-health.json +++ b/08-threat-intel/generated/dashboard/data/source-health.json @@ -1,10 +1,10 @@ { - "generated_at": "2026-03-18T17:44:31+00:00", + "generated_at": "2026-03-18T18:00:56+00:00", "active_source_count": 110, "green_source_count": 110, "failure_count": 0, "all_green": true, - "last_fully_green_run": "2026-03-18T17:44:31+00:00", + "last_fully_green_run": "2026-03-18T18:00:56+00:00", "retries_performed": 0, "probes": [ { diff --git a/08-threat-intel/generated/dashboard/docs/architecture-library.html b/08-threat-intel/generated/dashboard/docs/architecture-library.html index e2d545de..0dfb7074 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-18T17:56:12+00:00",
+ "generated_at": "2026-03-18T18:09:30+00:00",
"title": "当前架构库",
"summary": "工作台、控制面、数据层、授权边界与系统覆盖的当前真值视图。",
"sections": [
@@ -137,7 +137,7 @@
},
{
"label": "生成时间",
- "value": "2026-03-18T17:56:12+00:00"
+ "value": "2026-03-18T18:09:30+00:00"
}
],
"links": [
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 dbc1f04e..4874eb92 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 @@
# Source Catalog Audit
-- generated_at: `2026-03-18T17:41:42+00:00`
+- generated_at: `2026-03-18T17:58:07+00:00`
- systems: `62`
- sources: `146`
- active_sources: `110`
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 aad8844c..613c1bc0 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 @@
# 全库 Advisory 完整度报告
-- 生成时间: `2026-03-18T17:56:12+00:00`
+- 生成时间: `2026-03-18T18:09:30+00:00`
- 最新 advisory 完整度: `89/89` `verified-real`
- 合成验证数量: `0`
- 阻塞数量: `0`
@@ -96,7 +96,7 @@
- 完整度百分比: `100.0%`
- active source 全绿: `110/110`
- source open alerts: `0`
-- 最近一次 source 全绿: `2026-03-18T17:44:31+00:00`
+- 最近一次 source 全绿: `2026-03-18T18:00:56+00:00`
## 系统覆盖矩阵
diff --git a/08-threat-intel/generated/dashboard/summary.json b/08-threat-intel/generated/dashboard/summary.json
index 7f99c44b..f0d0953a 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-18T17:56:12+00:00",
+ "generated_at": "2026-03-18T18:09:30+00:00",
"advisory_count": 89,
"run_count": 140,
"statuses": {
@@ -16,7 +16,7 @@
"green_source_count": 110,
"source_failure_count": 0,
"open_alert_count": 0,
- "last_fully_green_run": "2026-03-18T17:44:31+00:00"
+ "last_fully_green_run": "2026-03-18T18:00:56+00:00"
},
"systems": [
{
diff --git a/08-threat-intel/generated/latest-ingest.md b/08-threat-intel/generated/latest-ingest.md
index 783f8f07..ed937960 100644
--- a/08-threat-intel/generated/latest-ingest.md
+++ b/08-threat-intel/generated/latest-ingest.md
@@ -1,6 +1,6 @@
# 最新同步摘要
-- 渲染时间: `2026-03-18T17:52:48+00:00`
+- 渲染时间: `2026-03-18T18:09:21+00:00`
- 系统数量: `62`
- Advisory 数量: `0`
- 重点 Markdown 数量: `0`
diff --git a/08-threat-intel/generated/monitor-summary.json b/08-threat-intel/generated/monitor-summary.json
index 963c1f19..1998dad4 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-18T17:44:31+00:00",
+ "generated_at": "2026-03-18T18:00:56+00:00",
"active_source_count": 110,
"green_source_count": 110,
"source_failure_count": 0,
"open_alert_count": 0,
"resolved_alert_count": 0,
- "last_fully_green_run": "2026-03-18T17:44:31+00:00",
+ "last_fully_green_run": "2026-03-18T18:00:56+00:00",
"source_catalog": {
"system_count": 62,
"source_count": 146,
diff --git a/08-threat-intel/generated/run-summary.json b/08-threat-intel/generated/run-summary.json
index f95702c9..555c2f16 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-18T17:52:48+00:00",
+ "generated_at": "2026-03-18T18:09:21+00:00",
"system_count": 62,
"advisory_count": 0,
"markdown_count": 0,
diff --git a/08-threat-intel/generated/source-health.json b/08-threat-intel/generated/source-health.json
index 7c98cbc9..fe11cc81 100644
--- a/08-threat-intel/generated/source-health.json
+++ b/08-threat-intel/generated/source-health.json
@@ -1,10 +1,10 @@
{
- "generated_at": "2026-03-18T17:44:31+00:00",
+ "generated_at": "2026-03-18T18:00:56+00:00",
"active_source_count": 110,
"green_source_count": 110,
"failure_count": 0,
"all_green": true,
- "last_fully_green_run": "2026-03-18T17:44:31+00:00",
+ "last_fully_green_run": "2026-03-18T18:00:56+00:00",
"retries_performed": 0,
"probes": [
{
diff --git a/08-threat-intel/registry/monitoring/2026-03-18T18-00-56+00-00.json b/08-threat-intel/registry/monitoring/2026-03-18T18-00-56+00-00.json
new file mode 100644
index 00000000..12761846
--- /dev/null
+++ b/08-threat-intel/registry/monitoring/2026-03-18T18-00-56+00-00.json
@@ -0,0 +1,2902 @@
+{
+ "generated_at": "2026-03-18T18:00:56+00:00",
+ "source_catalog_audit": {
+ "generated_at": "2026-03-18T17:58:07+00:00",
+ "system_count": 62,
+ "source_count": 146,
+ "active_source_count": 110,
+ "retired_source_count": 36,
+ "systems_with_active_official": 62,
+ "systems_with_machine_readable_source": 57,
+ "systems": [
+ {
+ "system_id": "adminer",
+ "display_name": "Adminer",
+ "category": "platforms",
+ "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": "adobe-commerce",
+ "display_name": "Adobe Commerce",
+ "category": "ecommerce",
+ "tier": "history-full",
+ "source_total": 5,
+ "active_source_total": 2,
+ "retired_source_total": 3,
+ "official_active": 2,
+ "ecosystem_active": 0,
+ "research_active": 0,
+ "machine_readable_active": 1,
+ "has_active_official": true,
+ "has_machine_readable_source": true
+ },
+ {
+ "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": 3,
+ "retired_source_total": 0,
+ "official_active": 3,
+ "ecosystem_active": 0,
+ "research_active": 0,
+ "machine_readable_active": 2,
+ "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": 3,
+ "retired_source_total": 0,
+ "official_active": 3,
+ "ecosystem_active": 0,
+ "research_active": 0,
+ "machine_readable_active": 2,
+ "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": 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": "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": 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": "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": 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": "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": 4,
+ "active_source_total": 2,
+ "retired_source_total": 2,
+ "official_active": 2,
+ "ecosystem_active": 0,
+ "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": 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": "express",
+ "display_name": "Express",
+ "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": "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": "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": "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": 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": "gitlab-ce",
+ "display_name": "GitLab CE",
+ "category": "platforms",
+ "tier": "rolling-24m",
+ "source_total": 3,
+ "active_source_total": 3,
+ "retired_source_total": 0,
+ "official_active": 2,
+ "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": "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": "haproxy",
+ "display_name": "HAProxy",
+ "category": "servers",
+ "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": 2,
+ "has_active_official": true,
+ "has_machine_readable_source": true
+ },
+ {
+ "system_id": "jenkins",
+ "display_name": "Jenkins",
+ "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": "joomla",
+ "display_name": "Joomla",
+ "category": "cms",
+ "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": "kibana",
+ "display_name": "Kibana",
+ "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": "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": 3,
+ "active_source_total": 3,
+ "retired_source_total": 0,
+ "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": 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": "mediawiki",
+ "display_name": "MediaWiki",
+ "category": "cms",
+ "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": "medusa",
+ "display_name": "Medusa",
+ "category": "ecommerce",
+ "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": "moodle",
+ "display_name": "Moodle",
+ "category": "cms",
+ "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": "nestjs",
+ "display_name": "NestJS",
+ "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": "nextjs",
+ "display_name": "Next.js",
+ "category": "frameworks",
+ "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": "nginx",
+ "display_name": "Nginx",
+ "category": "servers",
+ "tier": "history-full",
+ "source_total": 3,
+ "active_source_total": 3,
+ "retired_source_total": 0,
+ "official_active": 3,
+ "ecosystem_active": 0,
+ "research_active": 0,
+ "machine_readable_active": 2,
+ "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": 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": "opencart",
+ "display_name": "OpenCart",
+ "category": "ecommerce",
+ "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": "openmage",
+ "display_name": "OpenMage / Mage-OS",
+ "category": "ecommerce",
+ "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": "phpmyadmin",
+ "display_name": "phpMyAdmin",
+ "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": "prestashop",
+ "display_name": "PrestaShop",
+ "category": "ecommerce",
+ "tier": "history-full",
+ "source_total": 3,
+ "active_source_total": 3,
+ "retired_source_total": 0,
+ "official_active": 2,
+ "ecosystem_active": 1,
+ "research_active": 0,
+ "machine_readable_active": 0,
+ "has_active_official": true,
+ "has_machine_readable_source": false
+ },
+ {
+ "system_id": "rails",
+ "display_name": "Ruby on Rails",
+ "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": "react",
+ "display_name": "React",
+ "category": "frameworks",
+ "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": "redmine",
+ "display_name": "Redmine",
+ "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": "saleor",
+ "display_name": "Saleor",
+ "category": "ecommerce",
+ "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": "shopware",
+ "display_name": "Shopware",
+ "category": "ecommerce",
+ "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": "spring-boot",
+ "display_name": "Spring Boot",
+ "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": 0,
+ "has_active_official": true,
+ "has_machine_readable_source": false
+ },
+ {
+ "system_id": "spring-framework",
+ "display_name": "Spring Framework",
+ "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": 0,
+ "has_active_official": true,
+ "has_machine_readable_source": false
+ },
+ {
+ "system_id": "spring-security",
+ "display_name": "Spring Security",
+ "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": 0,
+ "has_active_official": true,
+ "has_machine_readable_source": false
+ },
+ {
+ "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": 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": "undici",
+ "display_name": "Undici",
+ "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": "vite",
+ "display_name": "Vite",
+ "category": "frameworks",
+ "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": "vue",
+ "display_name": "Vue",
+ "category": "frameworks",
+ "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": "webpack",
+ "display_name": "webpack",
+ "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": "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": 4,
+ "active_source_total": 4,
+ "retired_source_total": 0,
+ "official_active": 2,
+ "ecosystem_active": 2,
+ "research_active": 0,
+ "machine_readable_active": 0,
+ "has_active_official": true,
+ "has_machine_readable_source": false
+ },
+ {
+ "system_id": "wordpress",
+ "display_name": "WordPress",
+ "category": "cms",
+ "tier": "history-full",
+ "source_total": 6,
+ "active_source_total": 6,
+ "retired_source_total": 0,
+ "official_active": 2,
+ "ecosystem_active": 3,
+ "research_active": 1,
+ "machine_readable_active": 1,
+ "has_active_official": true,
+ "has_machine_readable_source": true
+ }
+ ],
+ "retired_sources": [
+ {
+ "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": "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": "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": "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"
+ ],
+ "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": "Drupal Security Advisories Site",
+ "bucket": "ecosystem_sources",
+ "kind": "html-links",
+ "retired_reason": "Drupal security index page became unstable for repeated HTML scraping; RSS + GHSA replacement is used for active monitoring.",
+ "replacement_sources": [
+ "Drupal Security Advisories RSS",
+ "GHSA Drupal Core"
+ ],
+ "url": "https://www.drupal.org/security"
+ },
+ {
+ "system_id": "drupal",
+ "display_name": "Drupal",
+ "source_name": "GHSA Drupal Core",
+ "bucket": "ecosystem_sources",
+ "kind": "ghsa-global",
+ "retired_reason": "Unauthenticated GHSA API requests are rate-limited in daily monitoring; RSS and NVD remain active replacements.",
+ "replacement_sources": [
+ "Drupal Security Advisories RSS",
+ "NVD 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": "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": "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": "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": "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": "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": "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": [
+ "NVD MediaWiki"
+ ],
+ "url": "https://www.mediawiki.org/wiki/Security"
+ },
+ {
+ "system_id": "moodle",
+ "display_name": "Moodle",
+ "source_name": "Moodle Security News",
+ "bucket": "official_sources",
+ "kind": "html-links",
+ "retired_reason": "Moodle security page returned repeated 403 responses from the collector path; NVD replacement remains active.",
+ "replacement_sources": [
+ "NVD Moodle"
+ ],
+ "url": "https://moodle.org/security/"
+ },
+ {
+ "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": "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": "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": "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": "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": "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 security page remains the active source.",
+ "replacement_sources": [
+ "Spring Security Advisories"
+ ],
+ "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 Security Advisories remains the active replacement source.",
+ "replacement_sources": [
+ "Spring Security Advisories"
+ ],
+ "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 security page remains the active source.",
+ "replacement_sources": [
+ "Spring Security Advisories"
+ ],
+ "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": "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": "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": "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": "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": "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": ""
+ }
+ ],
+ "replacement_map": [
+ {
+ "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": "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": "astro",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV Astro"
+ ]
+ },
+ {
+ "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"
+ ]
+ },
+ {
+ "system_id": "django",
+ "retired_source": "Django Security RSS",
+ "replacement_sources": [
+ "Django Security Weblog",
+ "Django Security Releases Archive"
+ ]
+ },
+ {
+ "system_id": "drupal",
+ "retired_source": "Drupal Security Advisories Site",
+ "replacement_sources": [
+ "Drupal Security Advisories RSS",
+ "GHSA Drupal Core"
+ ]
+ },
+ {
+ "system_id": "drupal",
+ "retired_source": "GHSA Drupal Core",
+ "replacement_sources": [
+ "Drupal Security Advisories RSS",
+ "NVD Drupal"
+ ]
+ },
+ {
+ "system_id": "esbuild",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV esbuild"
+ ]
+ },
+ {
+ "system_id": "express",
+ "retired_source": "GitHub Global Advisories",
+ "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": "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": "koa",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV Koa"
+ ]
+ },
+ {
+ "system_id": "laravel",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV Laravel"
+ ]
+ },
+ {
+ "system_id": "mattermost",
+ "retired_source": "Mattermost Security Updates",
+ "replacement_sources": [
+ "NVD Mattermost"
+ ]
+ },
+ {
+ "system_id": "mediawiki",
+ "retired_source": "MediaWiki Security Releases",
+ "replacement_sources": [
+ "NVD MediaWiki"
+ ]
+ },
+ {
+ "system_id": "moodle",
+ "retired_source": "Moodle Security News",
+ "replacement_sources": [
+ "NVD Moodle"
+ ]
+ },
+ {
+ "system_id": "nestjs",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV NestJS"
+ ]
+ },
+ {
+ "system_id": "nextjs",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "GitHub Next.js Advisories",
+ "OSV Next.js"
+ ]
+ },
+ {
+ "system_id": "nuxt",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "Nuxt Security",
+ "OSV Nuxt"
+ ]
+ },
+ {
+ "system_id": "rails",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV Rails"
+ ]
+ },
+ {
+ "system_id": "react",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "GitHub React Advisories",
+ "OSV React"
+ ]
+ },
+ {
+ "system_id": "spring-boot",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "Spring Security Advisories"
+ ]
+ },
+ {
+ "system_id": "spring-framework",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "Spring Security Advisories"
+ ]
+ },
+ {
+ "system_id": "spring-security",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "Spring Security Advisories"
+ ]
+ },
+ {
+ "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": "undici",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV Undici"
+ ]
+ },
+ {
+ "system_id": "vite",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "Vite Security",
+ "OSV Vite"
+ ]
+ },
+ {
+ "system_id": "vue",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "Vue Security",
+ "OSV Vue"
+ ]
+ },
+ {
+ "system_id": "webpack",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV webpack"
+ ]
+ },
+ {
+ "system_id": "werkzeug",
+ "retired_source": "GitHub Global Advisories",
+ "replacement_sources": [
+ "OSV Werkzeug"
+ ]
+ }
+ ]
+ },
+ "source_health": {
+ "generated_at": "2026-03-18T18:00:56+00:00",
+ "active_source_count": 110,
+ "green_source_count": 110,
+ "failure_count": 0,
+ "all_green": true,
+ "last_fully_green_run": "2026-03-18T18:00:56+00:00",
+ "retries_performed": 0,
+ "probes": [
+ {
+ "system_id": "adminer",
+ "source_name": "NVD Adminer",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "adobe-commerce",
+ "source_name": "Adobe Magento Security Index",
+ "source_kind": "vendor-index",
+ "kind": "vendor-index",
+ "items_seen": 46
+ },
+ {
+ "system_id": "adobe-commerce",
+ "source_name": "NVD Adobe Commerce",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "angular",
+ "source_name": "OSV Angular",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "apache-httpd",
+ "source_name": "Apache HTTPD Security",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 182
+ },
+ {
+ "system_id": "apache-httpd",
+ "source_name": "CISA KEV Apache HTTPD",
+ "source_kind": "kev-json",
+ "kind": "kev-json",
+ "items_seen": 1544
+ },
+ {
+ "system_id": "apache-httpd",
+ "source_name": "NVD Apache HTTP Server",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "apache-tomcat",
+ "source_name": "Apache Tomcat Security",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 270
+ },
+ {
+ "system_id": "apache-tomcat",
+ "source_name": "CISA KEV Tomcat",
+ "source_kind": "kev-json",
+ "kind": "kev-json",
+ "items_seen": 1544
+ },
+ {
+ "system_id": "apache-tomcat",
+ "source_name": "NVD Tomcat",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "aspnet-core",
+ "source_name": "NVD ASP.NET Core",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "astro",
+ "source_name": "OSV Astro",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "caddy",
+ "source_name": "GitHub Caddy Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 114
+ },
+ {
+ "system_id": "caddy",
+ "source_name": "OSV Caddy",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "directus",
+ "source_name": "Directus GitHub Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 127
+ },
+ {
+ "system_id": "directus",
+ "source_name": "OSV Directus",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "discourse",
+ "source_name": "Discourse Release Notes RSS",
+ "source_kind": "rss-feed",
+ "kind": "rss-feed",
+ "items_seen": 30
+ },
+ {
+ "system_id": "django",
+ "source_name": "Django Security Releases Archive",
+ "source_kind": "vendor-index",
+ "kind": "vendor-index",
+ "items_seen": 1276
+ },
+ {
+ "system_id": "django",
+ "source_name": "Django Security Weblog",
+ "source_kind": "vendor-index",
+ "kind": "vendor-index",
+ "items_seen": 332
+ },
+ {
+ "system_id": "django",
+ "source_name": "OSV Django",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "drupal",
+ "source_name": "Drupal Security Advisories RSS",
+ "source_kind": "rss-feed",
+ "kind": "rss-feed",
+ "items_seen": 20
+ },
+ {
+ "system_id": "drupal",
+ "source_name": "NVD Drupal",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "echo",
+ "source_name": "OSV Echo",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "esbuild",
+ "source_name": "OSV esbuild",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "express",
+ "source_name": "OSV Express",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "fastify",
+ "source_name": "OSV Fastify",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "flask",
+ "source_name": "OSV Flask",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "ghost",
+ "source_name": "Ghost GitHub Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 119
+ },
+ {
+ "system_id": "ghost",
+ "source_name": "NVD Ghost",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "gin",
+ "source_name": "OSV Gin",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "gitea",
+ "source_name": "GitHub Gitea Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 98
+ },
+ {
+ "system_id": "gitea",
+ "source_name": "OSV Gitea",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "gitlab-ce",
+ "source_name": "GitLab Advisory Database",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 5
+ },
+ {
+ "system_id": "gitlab-ce",
+ "source_name": "GitLab Security Releases",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 250
+ },
+ {
+ "system_id": "gitlab-ce",
+ "source_name": "NVD GitLab",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "grafana",
+ "source_name": "CISA KEV Grafana",
+ "source_kind": "kev-json",
+ "kind": "kev-json",
+ "items_seen": 1544
+ },
+ {
+ "system_id": "grafana",
+ "source_name": "Grafana Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 159
+ },
+ {
+ "system_id": "hapi",
+ "source_name": "OSV Hapi",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "haproxy",
+ "source_name": "HAProxy Blog Feed",
+ "source_kind": "rss-feed",
+ "kind": "rss-feed",
+ "items_seen": 10
+ },
+ {
+ "system_id": "haproxy",
+ "source_name": "NVD HAProxy",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "jenkins",
+ "source_name": "Jenkins Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 1194
+ },
+ {
+ "system_id": "jenkins",
+ "source_name": "NVD Jenkins",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "joomla",
+ "source_name": "Joomla Security Centre",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 139
+ },
+ {
+ "system_id": "joomla",
+ "source_name": "NVD Joomla",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "kibana",
+ "source_name": "Elastic Security Announcements",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 82
+ },
+ {
+ "system_id": "kibana",
+ "source_name": "NVD Kibana",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "koa",
+ "source_name": "OSV Koa",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "laravel",
+ "source_name": "OSV Laravel",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "magento-open-source",
+ "source_name": "Magento GitHub Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 99
+ },
+ {
+ "system_id": "magento-open-source",
+ "source_name": "NVD Magento",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "magento-open-source",
+ "source_name": "Sansec Research",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 134
+ },
+ {
+ "system_id": "mattermost",
+ "source_name": "NVD Mattermost",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "mediawiki",
+ "source_name": "NVD MediaWiki",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "medusa",
+ "source_name": "GitHub Medusa Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 102
+ },
+ {
+ "system_id": "medusa",
+ "source_name": "OSV Medusa",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "moodle",
+ "source_name": "NVD Moodle",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "nestjs",
+ "source_name": "OSV NestJS",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "nextjs",
+ "source_name": "GitHub Next.js Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 123
+ },
+ {
+ "system_id": "nextjs",
+ "source_name": "OSV Next.js",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "nginx",
+ "source_name": "CISA KEV NGINX",
+ "source_kind": "kev-json",
+ "kind": "kev-json",
+ "items_seen": 1544
+ },
+ {
+ "system_id": "nginx",
+ "source_name": "NGINX Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 138
+ },
+ {
+ "system_id": "nginx",
+ "source_name": "NVD NGINX",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "nodejs",
+ "source_name": "CISA KEV Node.js",
+ "source_kind": "kev-json",
+ "kind": "kev-json",
+ "items_seen": 1544
+ },
+ {
+ "system_id": "nodejs",
+ "source_name": "Node.js Security Releases",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 74
+ },
+ {
+ "system_id": "nuxt",
+ "source_name": "Nuxt Security",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 118
+ },
+ {
+ "system_id": "nuxt",
+ "source_name": "OSV Nuxt",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "opencart",
+ "source_name": "NVD OpenCart",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "opencart",
+ "source_name": "OpenCart Releases",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 1500
+ },
+ {
+ "system_id": "openmage",
+ "source_name": "NVD OpenMage",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "openmage",
+ "source_name": "OpenMage GitHub Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 125
+ },
+ {
+ "system_id": "phpmyadmin",
+ "source_name": "NVD phpMyAdmin",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "phpmyadmin",
+ "source_name": "phpMyAdmin Security Page",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 262
+ },
+ {
+ "system_id": "prestashop",
+ "source_name": "Friends Of Presta Security",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 38
+ },
+ {
+ "system_id": "prestashop",
+ "source_name": "GitHub PrestaShop Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 127
+ },
+ {
+ "system_id": "prestashop",
+ "source_name": "PrestaShop Security Page",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 60
+ },
+ {
+ "system_id": "rails",
+ "source_name": "OSV Rails",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "react",
+ "source_name": "GitHub React Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 110
+ },
+ {
+ "system_id": "react",
+ "source_name": "OSV React",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "redmine",
+ "source_name": "NVD Redmine",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "redmine",
+ "source_name": "Redmine Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 371
+ },
+ {
+ "system_id": "saleor",
+ "source_name": "GitHub Saleor Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 120
+ },
+ {
+ "system_id": "saleor",
+ "source_name": "NVD Saleor",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "shopware",
+ "source_name": "NVD Shopware",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "shopware",
+ "source_name": "Shopware Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 129
+ },
+ {
+ "system_id": "spring-boot",
+ "source_name": "Spring Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 118
+ },
+ {
+ "system_id": "spring-framework",
+ "source_name": "Spring Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 118
+ },
+ {
+ "system_id": "spring-security",
+ "source_name": "Spring Security Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 118
+ },
+ {
+ "system_id": "strapi",
+ "source_name": "OSV Strapi",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "strapi",
+ "source_name": "Strapi GitHub Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 124
+ },
+ {
+ "system_id": "sveltekit",
+ "source_name": "OSV SvelteKit",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "symfony",
+ "source_name": "OSV Symfony",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "traefik",
+ "source_name": "GitHub Traefik Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 124
+ },
+ {
+ "system_id": "traefik",
+ "source_name": "OSV Traefik",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "undici",
+ "source_name": "OSV Undici",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "vite",
+ "source_name": "OSV Vite",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "vite",
+ "source_name": "Vite Security",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 124
+ },
+ {
+ "system_id": "vue",
+ "source_name": "OSV Vue",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "vue",
+ "source_name": "Vue Security",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 111
+ },
+ {
+ "system_id": "webpack",
+ "source_name": "OSV webpack",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "werkzeug",
+ "source_name": "OSV Werkzeug",
+ "source_kind": "osv-batch",
+ "kind": "osv-batch",
+ "items_seen": 1
+ },
+ {
+ "system_id": "woocommerce",
+ "source_name": "GitHub WooCommerce Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 107
+ },
+ {
+ "system_id": "woocommerce",
+ "source_name": "Patchstack Database",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 193
+ },
+ {
+ "system_id": "woocommerce",
+ "source_name": "Woo Developer Advisories",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 121
+ },
+ {
+ "system_id": "woocommerce",
+ "source_name": "Wordfence Vulnerability Database",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 0
+ },
+ {
+ "system_id": "wordpress",
+ "source_name": "NVD WordPress",
+ "source_kind": "nvd-search",
+ "kind": "nvd-search",
+ "items_seen": 1
+ },
+ {
+ "system_id": "wordpress",
+ "source_name": "Patchstack Database",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 193
+ },
+ {
+ "system_id": "wordpress",
+ "source_name": "PortSwigger Research",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 99
+ },
+ {
+ "system_id": "wordpress",
+ "source_name": "WPScan Vulnerability Database",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 74
+ },
+ {
+ "system_id": "wordpress",
+ "source_name": "WordPress Security News",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 138
+ },
+ {
+ "system_id": "wordpress",
+ "source_name": "Wordfence Vulnerability Database",
+ "source_kind": "html-links",
+ "kind": "html-links",
+ "items_seen": 0
+ }
+ ],
+ "failures": [],
+ "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": 2,
+ "green_source_total": 2,
+ "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": 3,
+ "green_source_total": 3,
+ "failure_count": 0
+ },
+ {
+ "system_id": "apache-tomcat",
+ "display_name": "Apache Tomcat",
+ "active_source_total": 3,
+ "green_source_total": 3,
+ "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": 2,
+ "green_source_total": 2,
+ "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": 1,
+ "green_source_total": 1,
+ "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": 2,
+ "green_source_total": 2,
+ "failure_count": 0
+ },
+ {
+ "system_id": "gitlab-ce",
+ "display_name": "GitLab CE",
+ "active_source_total": 3,
+ "green_source_total": 3,
+ "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": 2,
+ "green_source_total": 2,
+ "failure_count": 0
+ },
+ {
+ "system_id": "jenkins",
+ "display_name": "Jenkins",
+ "active_source_total": 2,
+ "green_source_total": 2,
+ "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": 1,
+ "green_source_total": 1,
+ "failure_count": 0
+ },
+ {
+ "system_id": "mediawiki",
+ "display_name": "MediaWiki",
+ "active_source_total": 1,
+ "green_source_total": 1,
+ "failure_count": 0
+ },
+ {
+ "system_id": "medusa",
+ "display_name": "Medusa",
+ "active_source_total": 2,
+ "green_source_total": 2,
+ "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": 2,
+ "green_source_total": 2,
+ "failure_count": 0
+ },
+ {
+ "system_id": "nginx",
+ "display_name": "Nginx",
+ "active_source_total": 3,
+ "green_source_total": 3,
+ "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": 2,
+ "green_source_total": 2,
+ "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": 3,
+ "green_source_total": 3,
+ "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": 2,
+ "green_source_total": 2,
+ "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": 1,
+ "green_source_total": 1,
+ "failure_count": 0
+ },
+ {
+ "system_id": "spring-framework",
+ "display_name": "Spring Framework",
+ "active_source_total": 1,
+ "green_source_total": 1,
+ "failure_count": 0
+ },
+ {
+ "system_id": "spring-security",
+ "display_name": "Spring Security",
+ "active_source_total": 1,
+ "green_source_total": 1,
+ "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": 2,
+ "green_source_total": 2,
+ "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": 2,
+ "green_source_total": 2,
+ "failure_count": 0
+ },
+ {
+ "system_id": "vue",
+ "display_name": "Vue",
+ "active_source_total": 2,
+ "green_source_total": 2,
+ "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": 4,
+ "green_source_total": 4,
+ "failure_count": 0
+ },
+ {
+ "system_id": "wordpress",
+ "display_name": "WordPress",
+ "active_source_total": 6,
+ "green_source_total": 6,
+ "failure_count": 0
+ }
+ ]
+ },
+ "alerts": [],
+ "monitor_summary": {
+ "generated_at": "2026-03-18T18:00:56+00:00",
+ "active_source_count": 110,
+ "green_source_count": 110,
+ "source_failure_count": 0,
+ "open_alert_count": 0,
+ "resolved_alert_count": 0,
+ "last_fully_green_run": "2026-03-18T18:00:56+00:00",
+ "source_catalog": {
+ "system_count": 62,
+ "source_count": 146,
+ "retired_source_count": 36
+ },
+ "ingest": {
+ "new_count": 0,
+ "updated_count": 0,
+ "failure_count": 0,
+ "systems_touched": []
+ },
+ "validation": {
+ "passed": true,
+ "error_count": 0,
+ "errors": []
+ }
+ }
+}
diff --git a/docs/testing-completeness-report.md b/docs/testing-completeness-report.md
index 37c6cc64..3b2de4da 100644
--- a/docs/testing-completeness-report.md
+++ b/docs/testing-completeness-report.md
@@ -1,6 +1,6 @@
# 全库 Advisory 完整度报告
-- 生成时间: `2026-03-18T17:56:12+00:00`
+- 生成时间: `2026-03-18T18:09:30+00:00`
- 最新 advisory 完整度: `89/89` `verified-real`
- 合成验证数量: `0`
- 阻塞数量: `0`
@@ -8,7 +8,7 @@
- 完整度百分比: `100.0%`
- active source 全绿: `110/110`
- source open alerts: `0`
-- 最近一次 source 全绿: `2026-03-18T17:44:31+00:00`
+- 最近一次 source 全绿: `2026-03-18T18:00:56+00:00`
## 系统覆盖矩阵