实现分层实体漏洞知识库与实体级完整度监控

这个提交包含在:
hao
2026-03-19 17:57:45 -07:00
父节点 49fe46ab89
当前提交 1e81279e32
修改 2712 个文件,包含 434447 行新增2774 行删除

文件差异内容过多而无法显示 加载差异

查看文件

@@ -1,5 +1,5 @@
{
"generated_at": "2026-03-19T23:44:56+00:00",
"generated_at": "2026-03-20T00:56:32+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": [
@@ -25,6 +25,14 @@
"label": "\u8fd1\u4e24\u5e74\u5168\u91cf\u7cfb\u7edf",
"value": "42"
},
{
"label": "\u5df2\u7f16\u76ee\u5b9e\u4f53",
"value": "97"
},
{
"label": "\u53d1\u73b0 backlog",
"value": "17"
},
{
"label": "\u5f53\u524d\u8fd0\u884c",
"value": "140"
@@ -49,7 +57,7 @@
},
{
"label": "\u751f\u6210\u65f6\u95f4",
"value": "2026-03-19T23:44:56+00:00"
"value": "2026-03-20T00:56:32+00:00"
}
],
"links": [
@@ -179,6 +187,10 @@
"label": "\u7cfb\u7edf Registry",
"value": "08-threat-intel/registry/systems/*.json"
},
{
"label": "\u5b9e\u4f53 Registry",
"value": "08-threat-intel/registry/entities/*.json"
},
{
"label": "\u8fd0\u884c Registry",
"value": "08-threat-intel/registry/runs/*.json"
@@ -278,6 +290,16 @@
"href": "/docs/retired-sources.html",
"description": "\u9000\u5f79\u6e90\u3001\u9000\u5f79\u539f\u56e0\u4e0e replacement map\u3002"
},
{
"label": "entity catalog report",
"href": "/docs/entity-catalog-report.html",
"description": "\u5206\u5c42\u5b9e\u4f53\u8986\u76d6\u3001history-full \u5b8c\u6574\u5ea6\u4e0e workflow \u6307\u6807\u3002"
},
{
"label": "entity discovery backlog",
"href": "/docs/entity-discovery-backlog.html",
"description": "\u5f85\u7f16\u76ee repo / \u63d2\u4ef6 / \u5305 backlog \u4e0e\u7b49\u5f85\u539f\u56e0\u3002"
},
{
"label": "repro-map \u771f\u503c",
"href": "/docs/repro-map.html",
@@ -323,6 +345,21 @@
"href": "/data/monitor-summary.json",
"description": "\u6bcf\u65e5\u76d1\u63a7\u6458\u8981\u3001open alerts \u4e0e\u6700\u8fd1\u5168\u7eff\u65f6\u95f4\u3002"
},
{
"label": "entity-completeness.json",
"href": "/data/entity-completeness.json",
"description": "\u5b9e\u4f53\u7ea7 catalog \u5b8c\u6574\u5ea6\u3001\u7248\u672c\u6620\u5c04\u4e0e workflow \u8986\u76d6\u3002"
},
{
"label": "entity-discovery-backlog.json",
"href": "/data/entity-discovery-backlog.json",
"description": "\u53d1\u73b0\u4f46\u5c1a\u672a\u6b63\u5f0f\u7f16\u76ee\u7684 repo / \u63d2\u4ef6 / \u5305 backlog\u3002"
},
{
"label": "entity-queues.json",
"href": "/data/entity-queues.json",
"description": "discovery/history/latest/workflow \u56db\u7c7b\u961f\u5217\u6458\u8981\u3002"
},
{
"label": "runs.json",
"href": "/runs.json",
@@ -363,6 +400,18 @@
"label": "\u8fd0\u884c\u5f52\u6863\u6839\u76ee\u5f55",
"value": "06-case-studies/generated-runs/<run-id>/"
},
{
"label": "\u5b9e\u4f53\u5b8c\u6574\u5ea6",
"value": "/data/entity-completeness.json"
},
{
"label": "\u53d1\u73b0 backlog",
"value": "/data/entity-discovery-backlog.json"
},
{
"label": "\u5b9e\u4f53\u961f\u5217",
"value": "/data/entity-queues.json"
},
{
"label": "\u9ed8\u8ba4\u5165\u53e3",
"value": "/index.html"

查看文件

@@ -45,6 +45,8 @@ const DOC_HUB_ITEMS = [
{ title: "source-map 镜像", href: "/docs/source-map.html", description: "系统覆盖、来源、输出目录和 secure-code 主题真值。", badge: "source-map" },
{ title: "source catalog audit", href: "/docs/source-catalog-audit.html", description: "active/retired source、replacement map 与覆盖摘要。", badge: "audit" },
{ title: "retired sources", href: "/docs/retired-sources.html", description: "退役源、退役原因和 replacement_sources 真值。", badge: "retired" },
{ title: "entity catalog report", href: "/docs/entity-catalog-report.html", description: "分层实体覆盖、history-full 完整度与 workflow 指标。", badge: "entities" },
{ title: "entity discovery backlog", href: "/docs/entity-discovery-backlog.html", description: "待编目 repo / 插件 / 包 backlog 与等待原因。", badge: "backlog" },
{ title: "repro-map 镜像", href: "/docs/repro-map.html", description: "默认漏洞家族、浏览器要求和日志策略真值。", badge: "repro-map" },
{ title: "覆盖矩阵镜像", href: "/docs/coverage-matrix.html", description: "当前全库覆盖矩阵的本地镜像。", badge: "coverage" },
{ title: "安全编码索引", href: "/docs/secure-code-index.html", description: "secure-code 修复主题索引镜像。", badge: "secure-code" },
@@ -58,6 +60,9 @@ const DATA_HUB_ITEMS = [
{ title: "alerts.json", href: "/data/alerts.json", description: "source 告警状态机、failure streak 与 resolved 记录。", badge: "json" },
{ title: "monitor-summary.json", href: "/data/monitor-summary.json", description: "每日监控摘要、open alerts 与最近全绿时间。", badge: "json" },
{ title: "source-catalog-audit.json", href: "/data/source-catalog-audit.json", description: "source catalog 审计真值与 retired/replacement 关系。", badge: "json" },
{ title: "entity-completeness.json", href: "/data/entity-completeness.json", description: "实体级 catalog 完整度、版本映射和 workflow 覆盖。", badge: "json" },
{ title: "entity-discovery-backlog.json", href: "/data/entity-discovery-backlog.json", description: "发现但尚未正式编目的 repo / 插件 / 包 backlog。", badge: "json" },
{ title: "entity-queues.json", href: "/data/entity-queues.json", description: "discovery/history/latest/workflow 四类队列摘要。", badge: "json" },
{ title: "runs.json", href: "/runs.json", description: "最近运行的结构化详情,可用于 UI 和调试。", badge: "json" },
{ title: "systems.json", href: "/systems.json", description: "系统级覆盖、分类、更新时间和浏览器证据统计。", badge: "json" },
{ title: "advisories.json", href: "/advisories.json", description: "漏洞条目元数据、来源和 secure-code 主题。", badge: "json" },
@@ -93,6 +98,7 @@ const state = {
profiles: {},
architecture: null,
completeness: null,
entityCompleteness: null,
sourceHealth: null,
alerts: [],
monitorSummary: null,
@@ -288,9 +294,12 @@ function familyOptions() {
function metricCards() {
const completeness = state.completeness || state.summary?.completeness || {};
const entityCoverage = state.entityCompleteness || state.summary?.entity_coverage || completeness.entity_coverage || {};
const monitoring = state.monitorSummary || state.summary?.monitoring || {};
const advisoryTotal = Number(completeness.advisory_total || state.summary?.advisory_count || 0);
const advisorySuccess = Number(completeness.verified_real || 0);
const catalogedEntities = Number(entityCoverage.cataloged_entity_total || 0);
const candidateEntities = Number(entityCoverage.candidate_entity_total || 0);
const activeSources = Number(monitoring.active_source_count || state.sourceHealth?.active_source_count || 0);
const greenSources = Number(monitoring.green_source_count || state.sourceHealth?.green_source_count || 0);
const openAlerts = Number(monitoring.open_alert_count || state.sourceHealth?.open_alert_count || 0);
@@ -304,6 +313,13 @@ function metricCards() {
color: "var(--accent-green)",
iconName: "report"
},
{
label: "分层实体",
value: catalogedEntities,
note: `backlog ${candidateEntities}`,
color: "var(--accent-yellow)",
iconName: "systems"
},
{
label: "active sources",
value: activeSources,
@@ -774,6 +790,7 @@ function renderPanel(panelKey, title, meta, iconName, content) {
function renderCompletenessPanel(panelKey, compact = false) {
const completeness = state.completeness || state.summary?.completeness || {};
const entityCoverage = state.entityCompleteness || state.summary?.entity_coverage || completeness.entity_coverage || {};
const sourceHealth = state.sourceHealth || completeness.source_health || {};
const systems = (state.completeness?.systems || []).map((system) => `
<article class="plan-card">
@@ -816,12 +833,30 @@ function renderCompletenessPanel(panelKey, compact = false) {
<strong>open alerts</strong>
<span>${escapeHtml(sourceHealth.open_alert_count || 0)}</span>
</article>
<article class="detail-stat">
<strong>cataloged entities</strong>
<span>${escapeHtml(entityCoverage.cataloged_entity_total || 0)}</span>
</article>
<article class="detail-stat">
<strong>candidate backlog</strong>
<span>${escapeHtml(entityCoverage.candidate_entity_total || 0)}</span>
</article>
<article class="detail-stat">
<strong>workflow complete</strong>
<span>${escapeHtml(entityCoverage.workflow_complete_count || 0)}</span>
</article>
<article class="detail-stat">
<strong>version mapped</strong>
<span>${escapeHtml(entityCoverage.version_mapped_count || 0)}</span>
</article>
</div>
<div class="plan-grid" style="margin-top:16px;">${systems || `<div class="empty-state">暂无系统完整度数据。</div>`}</div>
${compact ? "" : `
<div class="detail-actions" style="margin-top:16px;">
<a class="button button-secondary" href="/docs/testing-completeness-report.html" target="_blank" rel="noreferrer">${icon("docs")}<span>打开中文报告</span></a>
<a class="button button-secondary" href="/docs/entity-catalog-report.html" target="_blank" rel="noreferrer">${icon("docs")}<span>打开实体报告</span></a>
<a class="button button-secondary" href="/data/completeness.json" target="_blank" rel="noreferrer">${icon("json")}<span>打开 completeness.json</span></a>
<a class="button button-secondary" href="/data/entity-completeness.json" target="_blank" rel="noreferrer">${icon("json")}<span>打开 entity-completeness.json</span></a>
<a class="button button-secondary" href="/data/source-health.json" target="_blank" rel="noreferrer">${icon("json")}<span>打开 source-health.json</span></a>
</div>
${failures.length ? `<div class="callout" style="margin-top:16px;"><strong>Ingest 未清零</strong><div class="plan-copy">${escapeHtml(failures.join(" | "))}</div></div>` : ""}
@@ -1114,7 +1149,8 @@ function renderRunWorkspace() {
{ label: "概要", copy: advisory.summary || "当前漏洞条目没有摘要。" },
{ label: "成功判据", copy: (profile.success_criteria || []).join(" | ") || "当前复现档案没有定义成功判据。" },
{ label: "Seed / 攻击思路", copy: (run.reasoning_lines || []).join("\n\n") || "当前运行没有记录思路说明。" },
{ label: "允许目标", copy: (profile.allowed_target_types || []).join(", ") || "当前复现档案没有声明允许目标类型。" }
{ label: "允许目标", copy: (profile.allowed_target_types || []).join(", ") || "当前复现档案没有声明允许目标类型。" },
{ label: "版本与对象", copy: `${advisory.advisory_scope || "core"} · ${advisory.version_confidence || "unknown"} · ${(advisory.affected_version_ranges || []).join(", ") || "版本待补齐"}` }
];
const evidenceContent = `
@@ -1239,6 +1275,21 @@ function renderRunWorkspace() {
<div class="tag-row">
${(advisory.aliases || []).map((alias) => `<span class="tag">${escapeHtml(alias)}</span>`).join("")}
${(advisory.secure_code_topics || []).map((topic) => `<a class="tag" href="/docs/secure-code-index.html" target="_blank" rel="noreferrer">${escapeHtml(topic)}</a>`).join("")}
${(advisory.entity_refs || []).map((item) => `<span class="tag">${escapeHtml(item.entity_type || "entity")} · ${escapeHtml(item.entity_id || "-")}</span>`).join("")}
</div>
<div class="plan-grid" style="margin-bottom:16px;">
<article class="plan-card">
<span class="plan-label">影响对象</span>
<div class="plan-copy">${escapeHtml((advisory.affected_components || []).map((item) => item.name).join(" | ") || "未定义")}</div>
</article>
<article class="plan-card">
<span class="plan-label">版本映射</span>
<div class="plan-copy">${escapeHtml((advisory.affected_version_ranges || []).join(" | ") || advisory.version_gap_reason || "未定义")}</div>
</article>
<article class="plan-card">
<span class="plan-label">Workflow</span>
<div class="plan-copy">${escapeHtml(advisory.workflow?.vuln_family || "unknown")} · ${escapeHtml(advisory.workflow?.entry_surface || "-")}</div>
</article>
</div>
<div class="source-links">${sourceLinks}</div>
`)}
@@ -1558,7 +1609,7 @@ async function loadData(preserveSelection = true) {
renderSyncState("loading", "刷新中", `本地时间 ${new Date().toLocaleTimeString("zh-CN", { hour12: false })}`);
try {
const [summary, runs, systems, advisories, profiles, architecture, completeness, sourceHealth, alerts, monitorSummary] = await Promise.all([
const [summary, runs, systems, advisories, profiles, architecture, completeness, entityCompleteness, sourceHealth, alerts, monitorSummary] = await Promise.all([
fetchJson("/summary.json"),
fetchJson("/runs.json"),
fetchJson("/systems.json"),
@@ -1566,6 +1617,7 @@ async function loadData(preserveSelection = true) {
fetchJson("/profiles.json"),
fetchJson("/architecture.json"),
fetchJson("/data/completeness.json"),
fetchJson("/data/entity-completeness.json"),
fetchJson("/data/source-health.json"),
fetchJson("/data/alerts.json"),
fetchJson("/data/monitor-summary.json")
@@ -1578,6 +1630,7 @@ async function loadData(preserveSelection = true) {
state.profiles = profiles;
state.architecture = architecture;
state.completeness = completeness;
state.entityCompleteness = entityCompleteness;
state.sourceHealth = sourceHealth;
state.alerts = alerts;
state.monitorSummary = monitorSummary;

查看文件

@@ -1,5 +1,5 @@
{
"generated_at": "2026-03-19T23:44:56+00:00",
"generated_at": "2026-03-20T00:56:32+00:00",
"advisory_total": 89,
"registry_advisory_total": 2399,
"scope": "latest-run-backed-advisories",
@@ -175,37 +175,680 @@
"active_source_count": 101,
"green_source_count": 101,
"failure_count": 0,
"last_fully_green_run": "2026-03-19T23:44:51+00:00",
"last_fully_green_run": "2026-03-20T00:56:25+00:00",
"open_alert_count": 0,
"resolved_alert_count": 4
},
"entity_coverage": {
"generated_at": "2026-03-20T00:56:31+00:00",
"cataloged_entity_total": 97,
"candidate_entity_total": 17,
"history_full_complete_count": 40,
"latest_green_count": 97,
"workflow_complete_count": 97,
"version_mapped_count": 49,
"official_source_covered_count": 97,
"plugin_history_full_count": 4,
"systems": [
{
"system_id": "adminer",
"display_name": "Adminer",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "adobe-commerce",
"display_name": "Adobe Commerce",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "angular",
"display_name": "Angular",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "apache-httpd",
"display_name": "Apache HTTP Server",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "apache-tomcat",
"display_name": "Apache Tomcat",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "aspnet-core",
"display_name": "ASP.NET Core",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "astro",
"display_name": "Astro",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 3,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "caddy",
"display_name": "Caddy",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "directus",
"display_name": "Directus",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "discourse",
"display_name": "Discourse",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "django",
"display_name": "Django",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "drupal",
"display_name": "Drupal",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "echo",
"display_name": "Echo",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "esbuild",
"display_name": "esbuild",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "express",
"display_name": "Express",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "fastify",
"display_name": "Fastify",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "flask",
"display_name": "Flask",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "ghost",
"display_name": "Ghost",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "gin",
"display_name": "Gin",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "gitea",
"display_name": "Gitea",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "gitlab-ce",
"display_name": "GitLab CE",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "grafana",
"display_name": "Grafana",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "hapi",
"display_name": "Hapi",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "haproxy",
"display_name": "HAProxy",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "jenkins",
"display_name": "Jenkins",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "joomla",
"display_name": "Joomla",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "kibana",
"display_name": "Kibana",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "koa",
"display_name": "Koa",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "laravel",
"display_name": "Laravel",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "magento-open-source",
"display_name": "Magento Open Source",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "mattermost",
"display_name": "Mattermost",
"cataloged_entity_total": 5,
"candidate_entity_total": 0,
"workflow_complete_count": 5,
"version_mapped_count": 5,
"official_source_covered_count": 5,
"plugin_total": 1
},
{
"system_id": "mediawiki",
"display_name": "MediaWiki",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "medusa",
"display_name": "Medusa",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "moodle",
"display_name": "Moodle",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nestjs",
"display_name": "NestJS",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nextjs",
"display_name": "Next.js",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "nginx",
"display_name": "Nginx",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nodejs",
"display_name": "Node.js",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nuxt",
"display_name": "Nuxt",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "opencart",
"display_name": "OpenCart",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "openmage",
"display_name": "OpenMage / Mage-OS",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "phpmyadmin",
"display_name": "phpMyAdmin",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "prestashop",
"display_name": "PrestaShop",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "rails",
"display_name": "Ruby on Rails",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "react",
"display_name": "React",
"cataloged_entity_total": 3,
"candidate_entity_total": 1,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 0
},
{
"system_id": "redmine",
"display_name": "Redmine",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "saleor",
"display_name": "Saleor",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "shopware",
"display_name": "Shopware",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "spring-boot",
"display_name": "Spring Boot",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "spring-framework",
"display_name": "Spring Framework",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "spring-security",
"display_name": "Spring Security",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "strapi",
"display_name": "Strapi",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "sveltekit",
"display_name": "SvelteKit",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "symfony",
"display_name": "Symfony",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "traefik",
"display_name": "Traefik",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "undici",
"display_name": "Undici",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "vite",
"display_name": "Vite",
"cataloged_entity_total": 5,
"candidate_entity_total": 1,
"workflow_complete_count": 5,
"version_mapped_count": 4,
"official_source_covered_count": 5,
"plugin_total": 3
},
{
"system_id": "vue",
"display_name": "Vue",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "webpack",
"display_name": "webpack",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "werkzeug",
"display_name": "Werkzeug",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "woocommerce",
"display_name": "WooCommerce",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "wordpress",
"display_name": "WordPress",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
}
],
"queues": {
"discovery_queue": 17,
"history_queue": 15,
"latest_queue": 0,
"workflow_queue": 2176
}
},
"monitor_summary": {
"generated_at": "2026-03-19T23:44:51+00:00",
"generated_at": "2026-03-20T00:56:25+00:00",
"active_source_count": 101,
"green_source_count": 101,
"source_failure_count": 0,
"open_alert_count": 0,
"resolved_alert_count": 4,
"last_fully_green_run": "2026-03-19T23:44:51+00:00",
"last_fully_green_run": "2026-03-20T00:56:25+00:00",
"source_catalog": {
"system_count": 62,
"source_count": 179,
"retired_source_count": 78
},
"ingest": {
"new_count": 7,
"updated_count": 5,
"new_count": 0,
"updated_count": 0,
"failure_count": 0,
"systems_touched": [
"kibana",
"mattermost",
"nextjs"
]
"systems_touched": []
},
"validation": {
"passed": true,
"error_count": 0,
"errors": []
},
"entity_coverage": {
"cataloged_entity_total": 97,
"candidate_entity_total": 17,
"history_full_complete_count": 40,
"workflow_complete_count": 97,
"version_mapped_count": 49,
"official_source_covered_count": 97
}
},
"historical_blockers": [
@@ -213,6 +856,7 @@
"Family profiles previously used note-only attack runners and dry-run placeholders.",
"Baseline and browser steps were skipped when environment readiness was not enforced.",
"Latest completeness now uses one advisory -> latest run semantics instead of historical run piles.",
"Source health now counts only status=active sources; retired sources are audited separately with replacement links."
"Source health now counts only status=active sources; retired sources are audited separately with replacement links.",
"Entity coverage now separates cataloged entities from discovery backlog so infinite internet scope no longer pollutes completion numbers."
]
}

查看文件

@@ -0,0 +1,639 @@
{
"generated_at": "2026-03-20T00:56:31+00:00",
"cataloged_entity_total": 97,
"candidate_entity_total": 17,
"history_full_complete_count": 40,
"latest_green_count": 97,
"workflow_complete_count": 97,
"version_mapped_count": 49,
"official_source_covered_count": 97,
"plugin_history_full_count": 4,
"systems": [
{
"system_id": "adminer",
"display_name": "Adminer",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "adobe-commerce",
"display_name": "Adobe Commerce",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "angular",
"display_name": "Angular",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "apache-httpd",
"display_name": "Apache HTTP Server",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "apache-tomcat",
"display_name": "Apache Tomcat",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "aspnet-core",
"display_name": "ASP.NET Core",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "astro",
"display_name": "Astro",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 3,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "caddy",
"display_name": "Caddy",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "directus",
"display_name": "Directus",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "discourse",
"display_name": "Discourse",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "django",
"display_name": "Django",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "drupal",
"display_name": "Drupal",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "echo",
"display_name": "Echo",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "esbuild",
"display_name": "esbuild",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "express",
"display_name": "Express",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "fastify",
"display_name": "Fastify",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "flask",
"display_name": "Flask",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "ghost",
"display_name": "Ghost",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "gin",
"display_name": "Gin",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "gitea",
"display_name": "Gitea",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "gitlab-ce",
"display_name": "GitLab CE",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "grafana",
"display_name": "Grafana",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "hapi",
"display_name": "Hapi",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "haproxy",
"display_name": "HAProxy",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "jenkins",
"display_name": "Jenkins",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "joomla",
"display_name": "Joomla",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "kibana",
"display_name": "Kibana",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "koa",
"display_name": "Koa",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "laravel",
"display_name": "Laravel",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "magento-open-source",
"display_name": "Magento Open Source",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "mattermost",
"display_name": "Mattermost",
"cataloged_entity_total": 5,
"candidate_entity_total": 0,
"workflow_complete_count": 5,
"version_mapped_count": 5,
"official_source_covered_count": 5,
"plugin_total": 1
},
{
"system_id": "mediawiki",
"display_name": "MediaWiki",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "medusa",
"display_name": "Medusa",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "moodle",
"display_name": "Moodle",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nestjs",
"display_name": "NestJS",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nextjs",
"display_name": "Next.js",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "nginx",
"display_name": "Nginx",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nodejs",
"display_name": "Node.js",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nuxt",
"display_name": "Nuxt",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "opencart",
"display_name": "OpenCart",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "openmage",
"display_name": "OpenMage / Mage-OS",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "phpmyadmin",
"display_name": "phpMyAdmin",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "prestashop",
"display_name": "PrestaShop",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "rails",
"display_name": "Ruby on Rails",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "react",
"display_name": "React",
"cataloged_entity_total": 3,
"candidate_entity_total": 1,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 0
},
{
"system_id": "redmine",
"display_name": "Redmine",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "saleor",
"display_name": "Saleor",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "shopware",
"display_name": "Shopware",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "spring-boot",
"display_name": "Spring Boot",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "spring-framework",
"display_name": "Spring Framework",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "spring-security",
"display_name": "Spring Security",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "strapi",
"display_name": "Strapi",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "sveltekit",
"display_name": "SvelteKit",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "symfony",
"display_name": "Symfony",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "traefik",
"display_name": "Traefik",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "undici",
"display_name": "Undici",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "vite",
"display_name": "Vite",
"cataloged_entity_total": 5,
"candidate_entity_total": 1,
"workflow_complete_count": 5,
"version_mapped_count": 4,
"official_source_covered_count": 5,
"plugin_total": 3
},
{
"system_id": "vue",
"display_name": "Vue",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "webpack",
"display_name": "webpack",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "werkzeug",
"display_name": "Werkzeug",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "woocommerce",
"display_name": "WooCommerce",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "wordpress",
"display_name": "WordPress",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
}
],
"queues": {
"discovery_queue": 17,
"history_queue": 15,
"latest_queue": 0,
"workflow_queue": 2176
}
}

查看文件

@@ -0,0 +1,206 @@
[
{
"candidate_id": "directus--repo-candidate--https-github-com-directus-directus",
"root_system_id": "directus",
"display_name": "directus / directus",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/directus/directus/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "ghost--repo-candidate--https-github-com-tryghost-ghost",
"root_system_id": "ghost",
"display_name": "TryGhost / Ghost",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/TryGhost/Ghost/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "gitea--repo-candidate--https-github-com-go-gitea-gitea",
"root_system_id": "gitea",
"display_name": "go-gitea / gitea",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/go-gitea/gitea/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "magento-open-source--repo-candidate--https-github-com-magento-magento2",
"root_system_id": "magento-open-source",
"display_name": "magento / magento2",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/magento/magento2/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "medusa--repo-candidate--https-github-com-medusajs-medusa",
"root_system_id": "medusa",
"display_name": "medusajs / medusa",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/medusajs/medusa/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "nextjs--repo-candidate--https-github-com-vercel-next-js",
"root_system_id": "nextjs",
"display_name": "vercel / next.js",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/vercel/next.js/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "nuxt--repo-candidate--https-github-com-nuxt-nuxt",
"root_system_id": "nuxt",
"display_name": "nuxt / nuxt",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/nuxt/nuxt/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "opencart--repo-candidate--https-github-com-opencart-opencart",
"root_system_id": "opencart",
"display_name": "opencart / opencart",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/opencart/opencart/releases",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "openmage--repo-candidate--https-github-com-openmage-magento-lts",
"root_system_id": "openmage",
"display_name": "OpenMage / magento-lts",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/OpenMage/magento-lts/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "prestashop--repo-candidate--https-github-com-prestashop-prestashop",
"root_system_id": "prestashop",
"display_name": "PrestaShop / PrestaShop",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/PrestaShop/PrestaShop/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "react--repo-candidate--https-github-com-facebook-react",
"root_system_id": "react",
"display_name": "facebook / react",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/facebook/react/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "saleor--repo-candidate--https-github-com-saleor-saleor",
"root_system_id": "saleor",
"display_name": "saleor / saleor",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/saleor/saleor/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "shopware--repo-candidate--https-github-com-shopware-shopware",
"root_system_id": "shopware",
"display_name": "shopware / shopware",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/shopware/shopware/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "strapi--repo-candidate--https-github-com-strapi-strapi",
"root_system_id": "strapi",
"display_name": "strapi / strapi",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/strapi/strapi/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "vite--repo-candidate--https-github-com-vitejs-vite",
"root_system_id": "vite",
"display_name": "vitejs / vite",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/vitejs/vite/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "vue--repo-candidate--https-github-com-vuejs-core",
"root_system_id": "vue",
"display_name": "vuejs / core",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/vuejs/core/security",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
},
{
"candidate_id": "woocommerce--repo-candidate--https-github-com-woocommerce-woocommerce",
"root_system_id": "woocommerce",
"display_name": "woocommerce / woocommerce",
"entity_type": "repo",
"status": "candidate",
"reason": "source catalog exposed a repo-like URL that is not yet cataloged as an entity",
"source": "https://github.com/woocommerce/woocommerce/security/advisories",
"risk": "medium",
"waiting_for": "\u786e\u8ba4\u662f\u5426\u5e94\u5347\u7ea7\u4e3a cataloged repo/package \u5b9e\u4f53\u5e76\u8865\u9f50\u5386\u53f2\u6f0f\u6d1e",
"canonical_id": ""
}
]

文件差异内容过多而无法显示 加载差异

查看文件

@@ -1,29 +1,33 @@
{
"generated_at": "2026-03-19T23:44:51+00:00",
"generated_at": "2026-03-20T00:56:25+00:00",
"active_source_count": 101,
"green_source_count": 101,
"source_failure_count": 0,
"open_alert_count": 0,
"resolved_alert_count": 4,
"last_fully_green_run": "2026-03-19T23:44:51+00:00",
"last_fully_green_run": "2026-03-20T00:56:25+00:00",
"source_catalog": {
"system_count": 62,
"source_count": 179,
"retired_source_count": 78
},
"ingest": {
"new_count": 7,
"updated_count": 5,
"new_count": 0,
"updated_count": 0,
"failure_count": 0,
"systems_touched": [
"kibana",
"mattermost",
"nextjs"
]
"systems_touched": []
},
"validation": {
"passed": true,
"error_count": 0,
"errors": []
},
"entity_coverage": {
"cataloged_entity_total": 97,
"candidate_entity_total": 17,
"history_full_complete_count": 40,
"workflow_complete_count": 97,
"version_mapped_count": 49,
"official_source_covered_count": 97
}
}

查看文件

@@ -1,5 +1,5 @@
{
"generated_at": "2026-03-19T23:44:51+00:00",
"generated_at": "2026-03-20T00:56:25+00:00",
"system_count": 62,
"source_count": 179,
"active_source_count": 101,

查看文件

@@ -1,17 +1,17 @@
{
"generated_at": "2026-03-19T23:44:51+00:00",
"generated_at": "2026-03-20T00:56:25+00:00",
"active_source_count": 101,
"green_source_count": 101,
"failure_count": 0,
"all_green": true,
"last_fully_green_run": "2026-03-19T23:44:51+00:00",
"last_fully_green_run": "2026-03-20T00:56:25+00:00",
"retries_performed": 0,
"probes": [
{
"system_id": "adminer",
"source_name": "OSV Adminer",
"source_kind": "osv-batch",
"elapsed_seconds": 0.096,
"elapsed_seconds": 0.099,
"kind": "osv-batch",
"items_seen": 1
},
@@ -19,7 +19,7 @@
"system_id": "adobe-commerce",
"source_name": "Adobe Magento Security Index",
"source_kind": "vendor-index",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.017,
"kind": "vendor-index",
"items_seen": 46
},
@@ -27,7 +27,7 @@
"system_id": "angular",
"source_name": "OSV Angular",
"source_kind": "osv-batch",
"elapsed_seconds": 0.013,
"elapsed_seconds": 0.009,
"kind": "osv-batch",
"items_seen": 1
},
@@ -35,7 +35,7 @@
"system_id": "apache-httpd",
"source_name": "Apache HTTPD Security",
"source_kind": "html-links",
"elapsed_seconds": 0.024,
"elapsed_seconds": 0.085,
"kind": "html-links",
"items_seen": 182
},
@@ -43,7 +43,7 @@
"system_id": "apache-httpd",
"source_name": "CISA KEV Apache HTTPD",
"source_kind": "kev-json",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.044,
"kind": "kev-json",
"items_seen": 1546
},
@@ -59,7 +59,7 @@
"system_id": "apache-tomcat",
"source_name": "CISA KEV Tomcat",
"source_kind": "kev-json",
"elapsed_seconds": 0.064,
"elapsed_seconds": 0.044,
"kind": "kev-json",
"items_seen": 1546
},
@@ -67,7 +67,7 @@
"system_id": "aspnet-core",
"source_name": "OSV ASP.NET Core",
"source_kind": "osv-batch",
"elapsed_seconds": 0.006,
"elapsed_seconds": 0.085,
"kind": "osv-batch",
"items_seen": 1
},
@@ -75,7 +75,7 @@
"system_id": "astro",
"source_name": "OSV Astro",
"source_kind": "osv-batch",
"elapsed_seconds": 0.013,
"elapsed_seconds": 0.045,
"kind": "osv-batch",
"items_seen": 1
},
@@ -83,7 +83,7 @@
"system_id": "caddy",
"source_name": "OSV Caddy",
"source_kind": "osv-batch",
"elapsed_seconds": 0.064,
"elapsed_seconds": 0.085,
"kind": "osv-batch",
"items_seen": 1
},
@@ -91,7 +91,7 @@
"system_id": "directus",
"source_name": "Directus GitHub Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.037,
"elapsed_seconds": 0.023,
"kind": "html-links",
"items_seen": 127
},
@@ -99,7 +99,7 @@
"system_id": "directus",
"source_name": "OSV Directus",
"source_kind": "osv-batch",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.023,
"kind": "osv-batch",
"items_seen": 1
},
@@ -107,7 +107,7 @@
"system_id": "discourse",
"source_name": "Discourse Release Notes RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.02,
"kind": "rss-feed",
"items_seen": 30
},
@@ -115,7 +115,7 @@
"system_id": "discourse",
"source_name": "Discourse Security RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.017,
"kind": "rss-feed",
"items_seen": 3
},
@@ -123,7 +123,7 @@
"system_id": "discourse",
"source_name": "OSV Discourse",
"source_kind": "osv-batch",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.017,
"kind": "osv-batch",
"items_seen": 1
},
@@ -131,7 +131,7 @@
"system_id": "django",
"source_name": "Django Security Releases Archive",
"source_kind": "vendor-index",
"elapsed_seconds": 0.068,
"elapsed_seconds": 0.085,
"kind": "vendor-index",
"items_seen": 1276
},
@@ -139,7 +139,7 @@
"system_id": "django",
"source_name": "Django Security Weblog",
"source_kind": "vendor-index",
"elapsed_seconds": 0.043,
"elapsed_seconds": 0.045,
"kind": "vendor-index",
"items_seen": 332
},
@@ -155,7 +155,7 @@
"system_id": "drupal",
"source_name": "Drupal Security Advisories RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.038,
"elapsed_seconds": 0.025,
"kind": "rss-feed",
"items_seen": 20
},
@@ -163,7 +163,7 @@
"system_id": "drupal",
"source_name": "OSV Drupal",
"source_kind": "osv-batch",
"elapsed_seconds": 0.038,
"elapsed_seconds": 0.024,
"kind": "osv-batch",
"items_seen": 1
},
@@ -171,7 +171,7 @@
"system_id": "echo",
"source_name": "OSV Echo",
"source_kind": "osv-batch",
"elapsed_seconds": 0.039,
"elapsed_seconds": 0.064,
"kind": "osv-batch",
"items_seen": 1
},
@@ -179,7 +179,7 @@
"system_id": "esbuild",
"source_name": "OSV esbuild",
"source_kind": "osv-batch",
"elapsed_seconds": 0.044,
"elapsed_seconds": 0.045,
"kind": "osv-batch",
"items_seen": 1
},
@@ -187,7 +187,7 @@
"system_id": "express",
"source_name": "OSV Express",
"source_kind": "osv-batch",
"elapsed_seconds": 0.013,
"elapsed_seconds": 0.047,
"kind": "osv-batch",
"items_seen": 1
},
@@ -195,7 +195,7 @@
"system_id": "fastify",
"source_name": "OSV Fastify",
"source_kind": "osv-batch",
"elapsed_seconds": 0.005,
"elapsed_seconds": 0.02,
"kind": "osv-batch",
"items_seen": 1
},
@@ -203,7 +203,7 @@
"system_id": "flask",
"source_name": "OSV Flask",
"source_kind": "osv-batch",
"elapsed_seconds": 0.017,
"elapsed_seconds": 0.064,
"kind": "osv-batch",
"items_seen": 1
},
@@ -211,7 +211,7 @@
"system_id": "ghost",
"source_name": "Ghost GitHub Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.038,
"elapsed_seconds": 0.024,
"kind": "html-links",
"items_seen": 119
},
@@ -219,7 +219,7 @@
"system_id": "ghost",
"source_name": "OSV Ghost",
"source_kind": "osv-batch",
"elapsed_seconds": 0.038,
"elapsed_seconds": 0.023,
"kind": "osv-batch",
"items_seen": 1
},
@@ -227,7 +227,7 @@
"system_id": "gin",
"source_name": "OSV Gin",
"source_kind": "osv-batch",
"elapsed_seconds": 0.024,
"elapsed_seconds": 0.07,
"kind": "osv-batch",
"items_seen": 1
},
@@ -235,7 +235,7 @@
"system_id": "gitea",
"source_name": "OSV Gitea",
"source_kind": "osv-batch",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.085,
"kind": "osv-batch",
"items_seen": 1
},
@@ -243,7 +243,7 @@
"system_id": "gitlab-ce",
"source_name": "GitLab Advisory Database",
"source_kind": "html-links",
"elapsed_seconds": 0.096,
"elapsed_seconds": 0.07,
"kind": "html-links",
"items_seen": 5
},
@@ -251,7 +251,7 @@
"system_id": "gitlab-ce",
"source_name": "GitLab Security Releases Atom",
"source_kind": "atom-feed",
"elapsed_seconds": 0.097,
"elapsed_seconds": 0.099,
"kind": "atom-feed",
"items_seen": 186
},
@@ -259,7 +259,7 @@
"system_id": "grafana",
"source_name": "CISA KEV Grafana",
"source_kind": "kev-json",
"elapsed_seconds": 0.039,
"elapsed_seconds": 0.064,
"kind": "kev-json",
"items_seen": 1546
},
@@ -267,7 +267,7 @@
"system_id": "grafana",
"source_name": "Grafana Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.065,
"elapsed_seconds": 0.085,
"kind": "html-links",
"items_seen": 159
},
@@ -275,7 +275,7 @@
"system_id": "hapi",
"source_name": "OSV Hapi",
"source_kind": "osv-batch",
"elapsed_seconds": 0.009,
"elapsed_seconds": 0.02,
"kind": "osv-batch",
"items_seen": 1
},
@@ -283,7 +283,7 @@
"system_id": "haproxy",
"source_name": "HAProxy Blog Feed",
"source_kind": "rss-feed",
"elapsed_seconds": 0.064,
"elapsed_seconds": 0.085,
"kind": "rss-feed",
"items_seen": 10
},
@@ -291,7 +291,7 @@
"system_id": "jenkins",
"source_name": "Jenkins Security Advisories RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.085,
"kind": "rss-feed",
"items_seen": 96
},
@@ -299,7 +299,7 @@
"system_id": "joomla",
"source_name": "Joomla Security Centre",
"source_kind": "html-links",
"elapsed_seconds": 0.038,
"elapsed_seconds": 0.024,
"kind": "html-links",
"items_seen": 139
},
@@ -307,7 +307,7 @@
"system_id": "joomla",
"source_name": "OSV Joomla",
"source_kind": "osv-batch",
"elapsed_seconds": 0.038,
"elapsed_seconds": 0.024,
"kind": "osv-batch",
"items_seen": 1
},
@@ -315,7 +315,7 @@
"system_id": "kibana",
"source_name": "Elastic Security Announcements RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.085,
"kind": "rss-feed",
"items_seen": 25
},
@@ -331,7 +331,7 @@
"system_id": "laravel",
"source_name": "OSV Laravel",
"source_kind": "osv-batch",
"elapsed_seconds": 0.008,
"elapsed_seconds": 0.085,
"kind": "osv-batch",
"items_seen": 1
},
@@ -339,7 +339,7 @@
"system_id": "magento-open-source",
"source_name": "Magento GitHub Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.017,
"kind": "html-links",
"items_seen": 99
},
@@ -347,7 +347,7 @@
"system_id": "magento-open-source",
"source_name": "OSV Magento Open Source",
"source_kind": "osv-batch",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.017,
"kind": "osv-batch",
"items_seen": 1
},
@@ -355,7 +355,7 @@
"system_id": "magento-open-source",
"source_name": "Sansec Research",
"source_kind": "html-links",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.016,
"kind": "html-links",
"items_seen": 134
},
@@ -363,7 +363,7 @@
"system_id": "mattermost",
"source_name": "Mattermost Security Updates JSON",
"source_kind": "json-feed",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.085,
"kind": "json-feed",
"items_seen": 594
},
@@ -371,7 +371,7 @@
"system_id": "mattermost",
"source_name": "OSV Mattermost",
"source_kind": "osv-batch",
"elapsed_seconds": 0.096,
"elapsed_seconds": 0.099,
"kind": "osv-batch",
"items_seen": 1
},
@@ -379,7 +379,7 @@
"system_id": "mediawiki",
"source_name": "MediaWiki Announce RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.02,
"kind": "rss-feed",
"items_seen": 30
},
@@ -387,7 +387,7 @@
"system_id": "mediawiki",
"source_name": "OSV MediaWiki",
"source_kind": "osv-batch",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.02,
"kind": "osv-batch",
"items_seen": 1
},
@@ -395,7 +395,7 @@
"system_id": "medusa",
"source_name": "OSV Medusa",
"source_kind": "osv-batch",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.021,
"kind": "osv-batch",
"items_seen": 1
},
@@ -403,7 +403,7 @@
"system_id": "moodle",
"source_name": "OSV Moodle",
"source_kind": "osv-batch",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.02,
"kind": "osv-batch",
"items_seen": 1
},
@@ -411,7 +411,7 @@
"system_id": "nestjs",
"source_name": "OSV NestJS",
"source_kind": "osv-batch",
"elapsed_seconds": 0.005,
"elapsed_seconds": 0.021,
"kind": "osv-batch",
"items_seen": 1
},
@@ -419,7 +419,7 @@
"system_id": "nextjs",
"source_name": "OSV Next.js",
"source_kind": "osv-batch",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.009,
"kind": "osv-batch",
"items_seen": 1
},
@@ -427,7 +427,7 @@
"system_id": "nginx",
"source_name": "CISA KEV NGINX",
"source_kind": "kev-json",
"elapsed_seconds": 0.064,
"elapsed_seconds": 0.044,
"kind": "kev-json",
"items_seen": 1546
},
@@ -435,7 +435,7 @@
"system_id": "nginx",
"source_name": "NGINX Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.023,
"elapsed_seconds": 0.07,
"kind": "html-links",
"items_seen": 138
},
@@ -443,7 +443,7 @@
"system_id": "nodejs",
"source_name": "CISA KEV Node.js",
"source_kind": "kev-json",
"elapsed_seconds": 0.028,
"elapsed_seconds": 0.02,
"kind": "kev-json",
"items_seen": 1546
},
@@ -451,7 +451,7 @@
"system_id": "nodejs",
"source_name": "Node.js Security Releases",
"source_kind": "html-links",
"elapsed_seconds": 0.005,
"elapsed_seconds": 0.045,
"kind": "html-links",
"items_seen": 74
},
@@ -459,7 +459,7 @@
"system_id": "nuxt",
"source_name": "OSV Nuxt",
"source_kind": "osv-batch",
"elapsed_seconds": 0.013,
"elapsed_seconds": 0.021,
"kind": "osv-batch",
"items_seen": 1
},
@@ -467,7 +467,7 @@
"system_id": "opencart",
"source_name": "OSV OpenCart",
"source_kind": "osv-batch",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.005,
"kind": "osv-batch",
"items_seen": 1
},
@@ -475,7 +475,7 @@
"system_id": "opencart",
"source_name": "OpenCart Releases",
"source_kind": "html-links",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.013,
"kind": "html-links",
"items_seen": 1500
},
@@ -483,7 +483,7 @@
"system_id": "openmage",
"source_name": "OSV OpenMage",
"source_kind": "osv-batch",
"elapsed_seconds": 0.031,
"elapsed_seconds": 0.016,
"kind": "osv-batch",
"items_seen": 1
},
@@ -491,7 +491,7 @@
"system_id": "openmage",
"source_name": "OpenMage GitHub Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.032,
"elapsed_seconds": 0.024,
"kind": "html-links",
"items_seen": 125
},
@@ -507,7 +507,7 @@
"system_id": "phpmyadmin",
"source_name": "phpMyAdmin Security Page",
"source_kind": "html-links",
"elapsed_seconds": 0.064,
"elapsed_seconds": 0.085,
"kind": "html-links",
"items_seen": 262
},
@@ -515,7 +515,7 @@
"system_id": "prestashop",
"source_name": "Friends Of Presta Security",
"source_kind": "html-links",
"elapsed_seconds": 0.019,
"elapsed_seconds": 0.016,
"kind": "html-links",
"items_seen": 38
},
@@ -523,7 +523,7 @@
"system_id": "prestashop",
"source_name": "GitHub PrestaShop Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.019,
"elapsed_seconds": 0.016,
"kind": "html-links",
"items_seen": 127
},
@@ -531,7 +531,7 @@
"system_id": "prestashop",
"source_name": "OSV PrestaShop",
"source_kind": "osv-batch",
"elapsed_seconds": 0.019,
"elapsed_seconds": 0.016,
"kind": "osv-batch",
"items_seen": 1
},
@@ -539,7 +539,7 @@
"system_id": "prestashop",
"source_name": "PrestaShop Security Page",
"source_kind": "html-links",
"elapsed_seconds": 0.019,
"elapsed_seconds": 0.017,
"kind": "html-links",
"items_seen": 60
},
@@ -547,7 +547,7 @@
"system_id": "rails",
"source_name": "OSV Rails",
"source_kind": "osv-batch",
"elapsed_seconds": 0.039,
"elapsed_seconds": 0.064,
"kind": "osv-batch",
"items_seen": 1
},
@@ -555,7 +555,7 @@
"system_id": "react",
"source_name": "OSV React",
"source_kind": "osv-batch",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.048,
"kind": "osv-batch",
"items_seen": 1
},
@@ -563,7 +563,7 @@
"system_id": "redmine",
"source_name": "OSV Redmine",
"source_kind": "osv-batch",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.099,
"kind": "osv-batch",
"items_seen": 1
},
@@ -571,7 +571,7 @@
"system_id": "redmine",
"source_name": "Redmine Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.085,
"kind": "html-links",
"items_seen": 371
},
@@ -579,7 +579,7 @@
"system_id": "saleor",
"source_name": "GitHub Saleor Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.013,
"kind": "html-links",
"items_seen": 120
},
@@ -587,7 +587,7 @@
"system_id": "saleor",
"source_name": "OSV Saleor",
"source_kind": "osv-batch",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.013,
"kind": "osv-batch",
"items_seen": 1
},
@@ -595,7 +595,7 @@
"system_id": "shopware",
"source_name": "OSV Shopware",
"source_kind": "osv-batch",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.013,
"kind": "osv-batch",
"items_seen": 1
},
@@ -603,7 +603,7 @@
"system_id": "shopware",
"source_name": "Shopware Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.019,
"elapsed_seconds": 0.029,
"kind": "html-links",
"items_seen": 129
},
@@ -611,7 +611,7 @@
"system_id": "spring-boot",
"source_name": "OSV Spring Boot",
"source_kind": "osv-batch",
"elapsed_seconds": 0.01,
"elapsed_seconds": 0.065,
"kind": "osv-batch",
"items_seen": 1
},
@@ -619,7 +619,7 @@
"system_id": "spring-boot",
"source_name": "Spring Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.009,
"elapsed_seconds": 0.045,
"kind": "html-links",
"items_seen": 118
},
@@ -627,7 +627,7 @@
"system_id": "spring-framework",
"source_name": "OSV Spring Framework",
"source_kind": "osv-batch",
"elapsed_seconds": 0.009,
"elapsed_seconds": 0.045,
"kind": "osv-batch",
"items_seen": 1
},
@@ -635,7 +635,7 @@
"system_id": "spring-framework",
"source_name": "Spring Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.021,
"elapsed_seconds": 0.046,
"kind": "html-links",
"items_seen": 118
},
@@ -643,7 +643,7 @@
"system_id": "spring-security",
"source_name": "OSV Spring Security",
"source_kind": "osv-batch",
"elapsed_seconds": 0.009,
"elapsed_seconds": 0.064,
"kind": "osv-batch",
"items_seen": 1
},
@@ -651,7 +651,7 @@
"system_id": "spring-security",
"source_name": "Spring Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.01,
"elapsed_seconds": 0.02,
"kind": "html-links",
"items_seen": 118
},
@@ -659,7 +659,7 @@
"system_id": "strapi",
"source_name": "OSV Strapi",
"source_kind": "osv-batch",
"elapsed_seconds": 0.037,
"elapsed_seconds": 0.023,
"kind": "osv-batch",
"items_seen": 1
},
@@ -667,7 +667,7 @@
"system_id": "strapi",
"source_name": "Strapi GitHub Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.037,
"elapsed_seconds": 0.023,
"kind": "html-links",
"items_seen": 124
},
@@ -675,7 +675,7 @@
"system_id": "sveltekit",
"source_name": "OSV SvelteKit",
"source_kind": "osv-batch",
"elapsed_seconds": 0.013,
"elapsed_seconds": 0.02,
"kind": "osv-batch",
"items_seen": 1
},
@@ -683,7 +683,7 @@
"system_id": "symfony",
"source_name": "OSV Symfony",
"source_kind": "osv-batch",
"elapsed_seconds": 0.043,
"elapsed_seconds": 0.046,
"kind": "osv-batch",
"items_seen": 1
},
@@ -691,7 +691,7 @@
"system_id": "traefik",
"source_name": "OSV Traefik",
"source_kind": "osv-batch",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.07,
"kind": "osv-batch",
"items_seen": 1
},
@@ -699,7 +699,7 @@
"system_id": "undici",
"source_name": "OSV Undici",
"source_kind": "osv-batch",
"elapsed_seconds": 0.009,
"elapsed_seconds": 0.064,
"kind": "osv-batch",
"items_seen": 1
},
@@ -707,7 +707,7 @@
"system_id": "vite",
"source_name": "OSV Vite",
"source_kind": "osv-batch",
"elapsed_seconds": 0.013,
"elapsed_seconds": 0.022,
"kind": "osv-batch",
"items_seen": 1
},
@@ -715,7 +715,7 @@
"system_id": "vue",
"source_name": "OSV Vue",
"source_kind": "osv-batch",
"elapsed_seconds": 0.015,
"elapsed_seconds": 0.01,
"kind": "osv-batch",
"items_seen": 1
},
@@ -723,7 +723,7 @@
"system_id": "webpack",
"source_name": "OSV webpack",
"source_kind": "osv-batch",
"elapsed_seconds": 0.009,
"elapsed_seconds": 0.045,
"kind": "osv-batch",
"items_seen": 1
},
@@ -731,7 +731,7 @@
"system_id": "werkzeug",
"source_name": "OSV Werkzeug",
"source_kind": "osv-batch",
"elapsed_seconds": 0.006,
"elapsed_seconds": 0.07,
"kind": "osv-batch",
"items_seen": 1
},
@@ -739,7 +739,7 @@
"system_id": "woocommerce",
"source_name": "GitHub WooCommerce Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.031,
"elapsed_seconds": 0.016,
"kind": "html-links",
"items_seen": 107
},
@@ -747,7 +747,7 @@
"system_id": "woocommerce",
"source_name": "OSV WooCommerce",
"source_kind": "osv-batch",
"elapsed_seconds": 0.031,
"elapsed_seconds": 0.008,
"kind": "osv-batch",
"items_seen": 1
},
@@ -755,7 +755,7 @@
"system_id": "woocommerce",
"source_name": "Patchstack Database",
"source_kind": "html-links",
"elapsed_seconds": 0.019,
"elapsed_seconds": 0.008,
"kind": "html-links",
"items_seen": 193
},
@@ -763,7 +763,7 @@
"system_id": "woocommerce",
"source_name": "Woo Developer Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.031,
"elapsed_seconds": 0.016,
"kind": "html-links",
"items_seen": 121
},
@@ -771,7 +771,7 @@
"system_id": "woocommerce",
"source_name": "Wordfence Vulnerability Database",
"source_kind": "html-links",
"elapsed_seconds": 0.019,
"elapsed_seconds": 0.008,
"kind": "html-links",
"items_seen": 0
},
@@ -779,7 +779,7 @@
"system_id": "wordpress",
"source_name": "Patchstack Database",
"source_kind": "html-links",
"elapsed_seconds": 0.041,
"elapsed_seconds": 0.025,
"kind": "html-links",
"items_seen": 193
},
@@ -787,7 +787,7 @@
"system_id": "wordpress",
"source_name": "PortSwigger Research",
"source_kind": "html-links",
"elapsed_seconds": 0.038,
"elapsed_seconds": 0.025,
"kind": "html-links",
"items_seen": 99
},
@@ -795,7 +795,7 @@
"system_id": "wordpress",
"source_name": "WPScan Vulnerability Database",
"source_kind": "html-links",
"elapsed_seconds": 0.041,
"elapsed_seconds": 0.025,
"kind": "html-links",
"items_seen": 74
},
@@ -803,7 +803,7 @@
"system_id": "wordpress",
"source_name": "WordPress Security News RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.041,
"elapsed_seconds": 0.025,
"kind": "rss-feed",
"items_seen": 10
},
@@ -811,81 +811,81 @@
"system_id": "wordpress",
"source_name": "Wordfence Vulnerability Database",
"source_kind": "html-links",
"elapsed_seconds": 0.041,
"elapsed_seconds": 0.025,
"kind": "html-links",
"items_seen": 0
}
],
"failures": [],
"slow_sources": [
{
"system_id": "gitlab-ce",
"source_name": "GitLab Security Releases Atom",
"source_kind": "atom-feed",
"elapsed_seconds": 0.097,
"status": "ok"
},
{
"system_id": "adminer",
"source_name": "OSV Adminer",
"source_kind": "osv-batch",
"elapsed_seconds": 0.096,
"elapsed_seconds": 0.099,
"status": "ok"
},
{
"system_id": "gitlab-ce",
"source_name": "GitLab Advisory Database",
"source_kind": "html-links",
"elapsed_seconds": 0.096,
"source_name": "GitLab Security Releases Atom",
"source_kind": "atom-feed",
"elapsed_seconds": 0.099,
"status": "ok"
},
{
"system_id": "mattermost",
"source_name": "OSV Mattermost",
"source_kind": "osv-batch",
"elapsed_seconds": 0.096,
"status": "ok"
},
{
"system_id": "apache-httpd",
"source_name": "CISA KEV Apache HTTPD",
"source_kind": "kev-json",
"elapsed_seconds": 0.074,
"status": "ok"
},
{
"system_id": "gitea",
"source_name": "OSV Gitea",
"source_kind": "osv-batch",
"elapsed_seconds": 0.074,
"status": "ok"
},
{
"system_id": "jenkins",
"source_name": "Jenkins Security Advisories RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.074,
"status": "ok"
},
{
"system_id": "kibana",
"source_name": "Elastic Security Announcements RSS",
"source_kind": "rss-feed",
"elapsed_seconds": 0.074,
"status": "ok"
},
{
"system_id": "mattermost",
"source_name": "Mattermost Security Updates JSON",
"source_kind": "json-feed",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.099,
"status": "ok"
},
{
"system_id": "redmine",
"source_name": "OSV Redmine",
"source_kind": "osv-batch",
"elapsed_seconds": 0.074,
"elapsed_seconds": 0.099,
"status": "ok"
},
{
"system_id": "apache-httpd",
"source_name": "Apache HTTPD Security",
"source_kind": "html-links",
"elapsed_seconds": 0.085,
"status": "ok"
},
{
"system_id": "aspnet-core",
"source_name": "OSV ASP.NET Core",
"source_kind": "osv-batch",
"elapsed_seconds": 0.085,
"status": "ok"
},
{
"system_id": "caddy",
"source_name": "OSV Caddy",
"source_kind": "osv-batch",
"elapsed_seconds": 0.085,
"status": "ok"
},
{
"system_id": "django",
"source_name": "Django Security Releases Archive",
"source_kind": "vendor-index",
"elapsed_seconds": 0.085,
"status": "ok"
},
{
"system_id": "gitea",
"source_name": "OSV Gitea",
"source_kind": "osv-batch",
"elapsed_seconds": 0.085,
"status": "ok"
},
{
"system_id": "grafana",
"source_name": "Grafana Security Advisories",
"source_kind": "html-links",
"elapsed_seconds": 0.085,
"status": "ok"
}
],

查看文件

@@ -87,7 +87,7 @@
<h1>当前架构库镜像</h1>
<div class="meta">工作台内置镜像页:当前架构库结构化数据镜像。</div>
<pre>{
&quot;generated_at&quot;: &quot;2026-03-19T23:44:56+00:00&quot;,
&quot;generated_at&quot;: &quot;2026-03-20T00:56:32+00:00&quot;,
&quot;title&quot;: &quot;当前架构库&quot;,
&quot;summary&quot;: &quot;工作台、控制面、数据层、授权边界与系统覆盖的当前真值视图。&quot;,
&quot;sections&quot;: [
@@ -113,6 +113,14 @@
&quot;label&quot;: &quot;近两年全量系统&quot;,
&quot;value&quot;: &quot;42&quot;
},
{
&quot;label&quot;: &quot;已编目实体&quot;,
&quot;value&quot;: &quot;97&quot;
},
{
&quot;label&quot;: &quot;发现 backlog&quot;,
&quot;value&quot;: &quot;17&quot;
},
{
&quot;label&quot;: &quot;当前运行&quot;,
&quot;value&quot;: &quot;140&quot;
@@ -137,7 +145,7 @@
},
{
&quot;label&quot;: &quot;生成时间&quot;,
&quot;value&quot;: &quot;2026-03-19T23:44:56+00:00&quot;
&quot;value&quot;: &quot;2026-03-20T00:56:32+00:00&quot;
}
],
&quot;links&quot;: [
@@ -267,6 +275,10 @@
&quot;label&quot;: &quot;系统 Registry&quot;,
&quot;value&quot;: &quot;08-threat-intel/registry/systems/*.json&quot;
},
{
&quot;label&quot;: &quot;实体 Registry&quot;,
&quot;value&quot;: &quot;08-threat-intel/registry/entities/*.json&quot;
},
{
&quot;label&quot;: &quot;运行 Registry&quot;,
&quot;value&quot;: &quot;08-threat-intel/registry/runs/*.json&quot;
@@ -366,6 +378,16 @@
&quot;href&quot;: &quot;/docs/retired-sources.html&quot;,
&quot;description&quot;: &quot;退役源、退役原因与 replacement map。&quot;
},
{
&quot;label&quot;: &quot;entity catalog report&quot;,
&quot;href&quot;: &quot;/docs/entity-catalog-report.html&quot;,
&quot;description&quot;: &quot;分层实体覆盖、history-full 完整度与 workflow 指标。&quot;
},
{
&quot;label&quot;: &quot;entity discovery backlog&quot;,
&quot;href&quot;: &quot;/docs/entity-discovery-backlog.html&quot;,
&quot;description&quot;: &quot;待编目 repo / 插件 / 包 backlog 与等待原因。&quot;
},
{
&quot;label&quot;: &quot;repro-map 真值&quot;,
&quot;href&quot;: &quot;/docs/repro-map.html&quot;,
@@ -411,6 +433,21 @@
&quot;href&quot;: &quot;/data/monitor-summary.json&quot;,
&quot;description&quot;: &quot;每日监控摘要、open alerts 与最近全绿时间。&quot;
},
{
&quot;label&quot;: &quot;entity-completeness.json&quot;,
&quot;href&quot;: &quot;/data/entity-completeness.json&quot;,
&quot;description&quot;: &quot;实体级 catalog 完整度、版本映射与 workflow 覆盖。&quot;
},
{
&quot;label&quot;: &quot;entity-discovery-backlog.json&quot;,
&quot;href&quot;: &quot;/data/entity-discovery-backlog.json&quot;,
&quot;description&quot;: &quot;发现但尚未正式编目的 repo / 插件 / 包 backlog。&quot;
},
{
&quot;label&quot;: &quot;entity-queues.json&quot;,
&quot;href&quot;: &quot;/data/entity-queues.json&quot;,
&quot;description&quot;: &quot;discovery/history/latest/workflow 四类队列摘要。&quot;
},
{
&quot;label&quot;: &quot;runs.json&quot;,
&quot;href&quot;: &quot;/runs.json&quot;,
@@ -451,6 +488,18 @@
&quot;label&quot;: &quot;运行归档根目录&quot;,
&quot;value&quot;: &quot;06-case-studies/generated-runs/&lt;run-id&gt;/&quot;
},
{
&quot;label&quot;: &quot;实体完整度&quot;,
&quot;value&quot;: &quot;/data/entity-completeness.json&quot;
},
{
&quot;label&quot;: &quot;发现 backlog&quot;,
&quot;value&quot;: &quot;/data/entity-discovery-backlog.json&quot;
},
{
&quot;label&quot;: &quot;实体队列&quot;,
&quot;value&quot;: &quot;/data/entity-queues.json&quot;
},
{
&quot;label&quot;: &quot;默认入口&quot;,
&quot;value&quot;: &quot;/index.html&quot;

查看文件

@@ -0,0 +1,171 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>分层实体覆盖报告</title>
<style>
:root {
--bg: #08111f;
--panel: rgba(9, 18, 32, 0.9);
--border: rgba(137, 171, 214, 0.2);
--text: #f7fafc;
--muted: #9fb3ca;
--accent: #5eead4;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
font-family: "IBM Plex Sans", "Segoe UI", sans-serif;
color: var(--text);
background:
radial-gradient(circle at top left, rgba(94, 234, 212, 0.12), transparent 26%),
linear-gradient(160deg, #050c16 0%, #091526 50%, #10233d 100%);
}
main {
max-width: 1080px;
margin: 0 auto;
padding: 32px 20px 40px;
}
.panel {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 20px;
padding: 24px;
box-shadow: 0 24px 80px rgba(1, 7, 20, 0.45);
}
.actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 18px;
}
.chip {
display: inline-flex;
align-items: center;
gap: 8px;
border-radius: 999px;
border: 1px solid var(--border);
padding: 10px 14px;
color: var(--text);
background: rgba(255,255,255,0.05);
text-decoration: none;
}
.chip:hover { border-color: rgba(94, 234, 212, 0.42); }
h1 {
margin: 0 0 12px;
font-family: "IBM Plex Serif", Georgia, serif;
font-size: clamp(1.8rem, 4vw, 3rem);
line-height: 1.08;
}
.meta {
color: var(--muted);
margin-bottom: 18px;
}
pre {
margin: 0;
padding: 20px;
overflow: auto;
border-radius: 16px;
border: 1px solid rgba(137, 171, 214, 0.12);
background: rgba(2, 8, 22, 0.84);
color: #d6e5f5;
font-family: "IBM Plex Mono", "SFMono-Regular", monospace;
font-size: 0.92rem;
line-height: 1.6;
white-space: pre-wrap;
}
</style>
</head>
<body>
<main>
<div class="panel">
<div class="actions">
<a class="chip" href="/overview/index.html">返回工作台</a>
</div>
<h1>分层实体覆盖报告</h1>
<div class="meta">工作台内置镜像页分层实体覆盖、history-full 完整度和 workflow 统计。</div>
<pre># 分层实体覆盖与完整度报告
- 生成时间: `2026-03-20T00:56:31+00:00`
- 已编目实体: `97`
- 待编目 backlog: `17`
- history-full 已完成: `40`
- latest green: `97`
- workflow 完整: `97`
- 版本映射完整: `49`
- 官方源覆盖: `97`
- 插件 history-full 已完成: `4`
## 系统分层摘要
| 系统 | cataloged entities | candidate backlog | workflow complete | version mapped | official covered | plugins |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| adminer | 1 | 0 | 1 | 0 | 1 | 0 |
| adobe-commerce | 1 | 0 | 1 | 0 | 1 | 0 |
| angular | 2 | 0 | 2 | 2 | 2 | 0 |
| apache-httpd | 1 | 0 | 1 | 0 | 1 | 0 |
| apache-tomcat | 1 | 0 | 1 | 0 | 1 | 0 |
| aspnet-core | 1 | 0 | 1 | 0 | 1 | 0 |
| astro | 3 | 0 | 3 | 3 | 3 | 1 |
| caddy | 3 | 0 | 3 | 2 | 3 | 1 |
| directus | 1 | 1 | 1 | 0 | 1 | 0 |
| discourse | 1 | 0 | 1 | 0 | 1 | 0 |
| django | 2 | 0 | 2 | 1 | 2 | 0 |
| drupal | 1 | 0 | 1 | 0 | 1 | 0 |
| echo | 2 | 0 | 2 | 2 | 2 | 0 |
| esbuild | 2 | 0 | 2 | 2 | 2 | 0 |
| express | 1 | 0 | 1 | 0 | 1 | 0 |
| fastify | 2 | 0 | 2 | 2 | 2 | 0 |
| flask | 2 | 0 | 2 | 2 | 2 | 0 |
| ghost | 1 | 1 | 1 | 0 | 1 | 0 |
| gin | 2 | 0 | 2 | 2 | 2 | 0 |
| gitea | 1 | 1 | 1 | 0 | 1 | 0 |
| gitlab-ce | 1 | 0 | 1 | 0 | 1 | 0 |
| grafana | 1 | 0 | 1 | 0 | 1 | 0 |
| hapi | 2 | 0 | 2 | 2 | 2 | 0 |
| haproxy | 1 | 0 | 1 | 0 | 1 | 0 |
| jenkins | 1 | 0 | 1 | 0 | 1 | 0 |
| joomla | 1 | 0 | 1 | 0 | 1 | 0 |
| kibana | 1 | 0 | 1 | 0 | 1 | 0 |
| koa | 2 | 0 | 2 | 2 | 2 | 0 |
| laravel | 2 | 0 | 2 | 2 | 2 | 0 |
| magento-open-source | 1 | 1 | 1 | 0 | 1 | 0 |
| mattermost | 5 | 0 | 5 | 5 | 5 | 1 |
| mediawiki | 1 | 0 | 1 | 0 | 1 | 0 |
| medusa | 1 | 1 | 1 | 0 | 1 | 0 |
| moodle | 1 | 0 | 1 | 0 | 1 | 0 |
| nestjs | 1 | 0 | 1 | 0 | 1 | 0 |
| nextjs | 2 | 1 | 2 | 1 | 2 | 0 |
| nginx | 1 | 0 | 1 | 0 | 1 | 0 |
| nodejs | 1 | 0 | 1 | 0 | 1 | 0 |
| nuxt | 2 | 1 | 2 | 1 | 2 | 0 |
| opencart | 1 | 1 | 1 | 0 | 1 | 0 |
| openmage | 1 | 1 | 1 | 0 | 1 | 0 |
| phpmyadmin | 1 | 0 | 1 | 0 | 1 | 0 |
| prestashop | 1 | 1 | 1 | 0 | 1 | 0 |
| rails | 2 | 0 | 2 | 1 | 2 | 0 |
| react | 3 | 1 | 3 | 2 | 3 | 0 |
| redmine | 1 | 0 | 1 | 0 | 1 | 0 |
| saleor | 1 | 1 | 1 | 0 | 1 | 0 |
| shopware | 1 | 1 | 1 | 0 | 1 | 0 |
| spring-boot | 2 | 0 | 2 | 1 | 2 | 0 |
| spring-framework | 1 | 0 | 1 | 0 | 1 | 0 |
| spring-security | 1 | 0 | 1 | 0 | 1 | 0 |
| strapi | 1 | 1 | 1 | 0 | 1 | 0 |
| sveltekit | 2 | 0 | 2 | 2 | 2 | 0 |
| symfony | 2 | 0 | 2 | 2 | 2 | 0 |
| traefik | 2 | 0 | 2 | 1 | 2 | 0 |
| undici | 3 | 0 | 3 | 2 | 3 | 1 |
| vite | 5 | 1 | 5 | 4 | 5 | 3 |
| vue | 2 | 1 | 2 | 1 | 2 | 0 |
| webpack | 1 | 0 | 1 | 0 | 1 | 0 |
| werkzeug | 2 | 0 | 2 | 2 | 2 | 0 |
| woocommerce | 1 | 1 | 1 | 0 | 1 | 0 |
| wordpress | 1 | 0 | 1 | 0 | 1 | 0 |
</pre>
</div>
</main>
</body>
</html>

查看文件

@@ -0,0 +1,117 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>分层实体发现 Backlog</title>
<style>
:root {
--bg: #08111f;
--panel: rgba(9, 18, 32, 0.9);
--border: rgba(137, 171, 214, 0.2);
--text: #f7fafc;
--muted: #9fb3ca;
--accent: #5eead4;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
font-family: "IBM Plex Sans", "Segoe UI", sans-serif;
color: var(--text);
background:
radial-gradient(circle at top left, rgba(94, 234, 212, 0.12), transparent 26%),
linear-gradient(160deg, #050c16 0%, #091526 50%, #10233d 100%);
}
main {
max-width: 1080px;
margin: 0 auto;
padding: 32px 20px 40px;
}
.panel {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 20px;
padding: 24px;
box-shadow: 0 24px 80px rgba(1, 7, 20, 0.45);
}
.actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 18px;
}
.chip {
display: inline-flex;
align-items: center;
gap: 8px;
border-radius: 999px;
border: 1px solid var(--border);
padding: 10px 14px;
color: var(--text);
background: rgba(255,255,255,0.05);
text-decoration: none;
}
.chip:hover { border-color: rgba(94, 234, 212, 0.42); }
h1 {
margin: 0 0 12px;
font-family: "IBM Plex Serif", Georgia, serif;
font-size: clamp(1.8rem, 4vw, 3rem);
line-height: 1.08;
}
.meta {
color: var(--muted);
margin-bottom: 18px;
}
pre {
margin: 0;
padding: 20px;
overflow: auto;
border-radius: 16px;
border: 1px solid rgba(137, 171, 214, 0.12);
background: rgba(2, 8, 22, 0.84);
color: #d6e5f5;
font-family: "IBM Plex Mono", "SFMono-Regular", monospace;
font-size: 0.92rem;
line-height: 1.6;
white-space: pre-wrap;
}
</style>
</head>
<body>
<main>
<div class="panel">
<div class="actions">
<a class="chip" href="/overview/index.html">返回工作台</a>
</div>
<h1>分层实体发现 Backlog</h1>
<div class="meta">工作台内置镜像页:待编目 repo / 插件 / 包 backlog 与等待原因。</div>
<pre># 分层实体发现 Backlog
- 生成时间: `2026-03-20T00:56:31+00:00`
- 待编目数量: `17`
| candidate_id | root_system | entity_type | risk | reason | waiting_for | source |
| --- | --- | --- | --- | --- | --- | --- |
| directus--repo-candidate--https-github-com-directus-directus | directus | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/directus/directus/security/advisories |
| ghost--repo-candidate--https-github-com-tryghost-ghost | ghost | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/TryGhost/Ghost/security/advisories |
| gitea--repo-candidate--https-github-com-go-gitea-gitea | gitea | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/go-gitea/gitea/security/advisories |
| magento-open-source--repo-candidate--https-github-com-magento-magento2 | magento-open-source | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/magento/magento2/security/advisories |
| medusa--repo-candidate--https-github-com-medusajs-medusa | medusa | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/medusajs/medusa/security/advisories |
| nextjs--repo-candidate--https-github-com-vercel-next-js | nextjs | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/vercel/next.js/security/advisories |
| nuxt--repo-candidate--https-github-com-nuxt-nuxt | nuxt | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/nuxt/nuxt/security/advisories |
| opencart--repo-candidate--https-github-com-opencart-opencart | opencart | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/opencart/opencart/releases |
| openmage--repo-candidate--https-github-com-openmage-magento-lts | openmage | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/OpenMage/magento-lts/security/advisories |
| prestashop--repo-candidate--https-github-com-prestashop-prestashop | prestashop | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/PrestaShop/PrestaShop/security/advisories |
| react--repo-candidate--https-github-com-facebook-react | react | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/facebook/react/security/advisories |
| saleor--repo-candidate--https-github-com-saleor-saleor | saleor | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/saleor/saleor/security/advisories |
| shopware--repo-candidate--https-github-com-shopware-shopware | shopware | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/shopware/shopware/security/advisories |
| strapi--repo-candidate--https-github-com-strapi-strapi | strapi | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/strapi/strapi/security/advisories |
| vite--repo-candidate--https-github-com-vitejs-vite | vite | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/vitejs/vite/security/advisories |
| vue--repo-candidate--https-github-com-vuejs-core | vue | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/vuejs/core/security |
| woocommerce--repo-candidate--https-github-com-woocommerce-woocommerce | woocommerce | repo | medium | source catalog exposed a repo-like URL that is not yet cataloged as an entity | 确认是否应升级为 cataloged repo/package 实体并补齐历史漏洞 | https://github.com/woocommerce/woocommerce/security/advisories |
</pre>
</div>
</main>
</body>
</html>

查看文件

@@ -88,7 +88,7 @@
<div class="meta">工作台内置镜像页active/retired source、replacement map 与覆盖摘要。</div>
<pre># Source Catalog Audit
- generated_at: `2026-03-19T23:44:51+00:00`
- generated_at: `2026-03-20T00:56:25+00:00`
- systems: `62`
- sources: `179`
- active_sources: `101`

查看文件

@@ -88,7 +88,7 @@
<div class="meta">工作台内置镜像页89 条 advisory 最新完整度、family 矩阵与 ingest 健康度。</div>
<pre># 全库 Advisory 完整度报告
- 生成时间: `2026-03-19T23:44:56+00:00`
- 生成时间: `2026-03-20T00:56:32+00:00`
- 最新 advisory 完整度: `89/89` `verified-real`
- 合成验证数量: `0`
- 阻塞数量: `0`
@@ -96,7 +96,9 @@
- 完整度百分比: `100.0%`
- active source 全绿: `101/101`
- source open alerts: `0`
- 最近一次 source 全绿: `2026-03-19T23:44:51+00:00`
- 最近一次 source 全绿: `2026-03-20T00:56:25+00:00`
- 已编目实体: `97`
- 待编目 backlog: `17`
## 系统覆盖矩阵
@@ -107,6 +109,15 @@
| undici | 14 | 14 | 0 | 0 | 0 | ssrf(14/14) |
| vite | 12 | 12 | 0 | 0 | 0 | proxy-boundary(11/11), xss(1/1) |
## 分层实体完整度
- history-full 已完成: `40`
- latest green: `97`
- workflow 完整: `97`
- 版本映射完整: `49`
- 官方源覆盖: `97`
- 插件 history-full 已完成: `4`
## 历史阻塞项修复纪要
- Docker daemon unavailable caused provision-compose-environment blocked-artifact.
@@ -114,6 +125,7 @@
- Baseline and browser steps were skipped when environment readiness was not enforced.
- Latest completeness now uses one advisory -&gt; latest run semantics instead of historical run piles.
- Source health now counts only status=active sources; retired sources are audited separately with replacement links.
- Entity coverage now separates cataloged entities from discovery backlog so infinite internet scope no longer pollutes completion numbers.
## Ingest / Source 健康度

文件差异内容过多而无法显示 加载差异

查看文件

@@ -1,5 +1,5 @@
{
"generated_at": "2026-03-19T23:44:56+00:00",
"generated_at": "2026-03-20T00:56:32+00:00",
"advisory_count": 2399,
"run_count": 140,
"statuses": {
@@ -158,7 +158,646 @@
"green_source_count": 101,
"source_failure_count": 0,
"open_alert_count": 0,
"last_fully_green_run": "2026-03-19T23:44:51+00:00"
"last_fully_green_run": "2026-03-20T00:56:25+00:00"
},
"entity_coverage": {
"generated_at": "2026-03-20T00:56:31+00:00",
"cataloged_entity_total": 97,
"candidate_entity_total": 17,
"history_full_complete_count": 40,
"latest_green_count": 97,
"workflow_complete_count": 97,
"version_mapped_count": 49,
"official_source_covered_count": 97,
"plugin_history_full_count": 4,
"systems": [
{
"system_id": "adminer",
"display_name": "Adminer",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "adobe-commerce",
"display_name": "Adobe Commerce",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "angular",
"display_name": "Angular",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "apache-httpd",
"display_name": "Apache HTTP Server",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "apache-tomcat",
"display_name": "Apache Tomcat",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "aspnet-core",
"display_name": "ASP.NET Core",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "astro",
"display_name": "Astro",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 3,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "caddy",
"display_name": "Caddy",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "directus",
"display_name": "Directus",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "discourse",
"display_name": "Discourse",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "django",
"display_name": "Django",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "drupal",
"display_name": "Drupal",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "echo",
"display_name": "Echo",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "esbuild",
"display_name": "esbuild",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "express",
"display_name": "Express",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "fastify",
"display_name": "Fastify",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "flask",
"display_name": "Flask",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "ghost",
"display_name": "Ghost",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "gin",
"display_name": "Gin",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "gitea",
"display_name": "Gitea",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "gitlab-ce",
"display_name": "GitLab CE",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "grafana",
"display_name": "Grafana",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "hapi",
"display_name": "Hapi",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "haproxy",
"display_name": "HAProxy",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "jenkins",
"display_name": "Jenkins",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "joomla",
"display_name": "Joomla",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "kibana",
"display_name": "Kibana",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "koa",
"display_name": "Koa",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "laravel",
"display_name": "Laravel",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "magento-open-source",
"display_name": "Magento Open Source",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "mattermost",
"display_name": "Mattermost",
"cataloged_entity_total": 5,
"candidate_entity_total": 0,
"workflow_complete_count": 5,
"version_mapped_count": 5,
"official_source_covered_count": 5,
"plugin_total": 1
},
{
"system_id": "mediawiki",
"display_name": "MediaWiki",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "medusa",
"display_name": "Medusa",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "moodle",
"display_name": "Moodle",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nestjs",
"display_name": "NestJS",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nextjs",
"display_name": "Next.js",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "nginx",
"display_name": "Nginx",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nodejs",
"display_name": "Node.js",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "nuxt",
"display_name": "Nuxt",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "opencart",
"display_name": "OpenCart",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "openmage",
"display_name": "OpenMage / Mage-OS",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "phpmyadmin",
"display_name": "phpMyAdmin",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "prestashop",
"display_name": "PrestaShop",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "rails",
"display_name": "Ruby on Rails",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "react",
"display_name": "React",
"cataloged_entity_total": 3,
"candidate_entity_total": 1,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 0
},
{
"system_id": "redmine",
"display_name": "Redmine",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "saleor",
"display_name": "Saleor",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "shopware",
"display_name": "Shopware",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "spring-boot",
"display_name": "Spring Boot",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "spring-framework",
"display_name": "Spring Framework",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "spring-security",
"display_name": "Spring Security",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "strapi",
"display_name": "Strapi",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "sveltekit",
"display_name": "SvelteKit",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "symfony",
"display_name": "Symfony",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "traefik",
"display_name": "Traefik",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "undici",
"display_name": "Undici",
"cataloged_entity_total": 3,
"candidate_entity_total": 0,
"workflow_complete_count": 3,
"version_mapped_count": 2,
"official_source_covered_count": 3,
"plugin_total": 1
},
{
"system_id": "vite",
"display_name": "Vite",
"cataloged_entity_total": 5,
"candidate_entity_total": 1,
"workflow_complete_count": 5,
"version_mapped_count": 4,
"official_source_covered_count": 5,
"plugin_total": 3
},
{
"system_id": "vue",
"display_name": "Vue",
"cataloged_entity_total": 2,
"candidate_entity_total": 1,
"workflow_complete_count": 2,
"version_mapped_count": 1,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "webpack",
"display_name": "webpack",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "werkzeug",
"display_name": "Werkzeug",
"cataloged_entity_total": 2,
"candidate_entity_total": 0,
"workflow_complete_count": 2,
"version_mapped_count": 2,
"official_source_covered_count": 2,
"plugin_total": 0
},
{
"system_id": "woocommerce",
"display_name": "WooCommerce",
"cataloged_entity_total": 1,
"candidate_entity_total": 1,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
},
{
"system_id": "wordpress",
"display_name": "WordPress",
"cataloged_entity_total": 1,
"candidate_entity_total": 0,
"workflow_complete_count": 1,
"version_mapped_count": 0,
"official_source_covered_count": 1,
"plugin_total": 0
}
],
"queues": {
"discovery_queue": 17,
"history_queue": 15,
"latest_queue": 0,
"workflow_queue": 2176
}
},
"systems": [
{
@@ -1970,6 +2609,10 @@
"complete": true,
"source_failure_count": 0,
"active_source_count": 101,
"open_alert_count": 0
"open_alert_count": 0,
"cataloged_entity_total": 97,
"candidate_entity_total": 17,
"workflow_complete_count": 97,
"version_mapped_count": 49
}
}