Web interface

CANARY Web Console

Security-advisory forecasting for Jenkins plugins from public signals, evaluated honestly: four validation layers, one pre-registered criterion, and every number on this site traceable to the layer that produced it.

Plugin scoring

Score a plugin

Review the CANARY score, rationale, and supporting evidence.

Core workflow

The forecast comes from the frozen champion configuration applied to the newest panel month; the signals beneath it describe the plugin's current state and are not part of the validated forecast.

AI explanation

Explain this score

Bring your own AI

Copy the prompt below and paste it into Claude, ChatGPT, or any other AI assistant. You control what gets shared.

Show / edit raw prompt

"Explain now" uses the server API key (max 3/hr). "Open in" buttons use your own account with no limits. AI-generated explanations are provided for informational purposes only, may contain inaccuracies or omissions, and should not be relied upon as authoritative security guidance.

CANARY forecast · as of 2026-06

pipeline-maven

Activity-recency clocks + Contributor dynamics · Logistic Regression: the frozen champion fold model (oot_champion/fold_2025-11, trained on months before 2025-11, labels as known 2025-12) applied to the newest month of the panel. Inference only; no outcome for this month is known yet.

Validated lineage
Share of paneltop 1.0%
Rank22 of 2,053
Score65.6%

Read the rank, not the score. The score is the model's raw output and is not a probability: on the holdout the champion's mean score is about 0.5 against an observed advisory rate of 1 percent. Across the pre-registered holdout, reviewing the top fifth of plugins by this ranking caught about half of the advisories that followed.

Honest track record

Where pipeline-maven ranked before each window

Activity-recency clocks + Contributor dynamics · Logistic Regression, embargoed rolling backtest: the rank this plugin held among every scored plugin at each forecast date, using only what was knowable then. Shaded months are the pre-registered holdout.

Recorded, not re-scored

Scored at 32 forecast dates; on average in the top 2.0% of plugins (top 1.2% across the holdout). An advisory followed within six months of 4 of those dates.

out-of-time holdout0255075100top 20%2023-052023-092024-012024-052024-092025-012025-052025-092025-122023-05 · rank 125 of 2053 · 94th percentile · score 0.698 advisory followed within six months2023-06 · rank 88 of 2053 · 96th percentile · score 0.713 advisory followed within six months2023-07 · rank 54 of 2053 · 97th percentile · score 0.760 advisory followed within six months2023-08 · rank 65 of 2053 · 97th percentile · score 0.738 advisory followed within six months2023-09 · rank 54 of 2053 · 97th percentile · score 0.763 no advisory within six months2023-10 · rank 72 of 2053 · 97th percentile · score 0.744 no advisory within six months2023-11 · rank 56 of 2053 · 97th percentile · score 0.761 no advisory within six months2023-12 · rank 52 of 2053 · 98th percentile · score 0.758 no advisory within six months2024-01 · rank 50 of 2053 · 98th percentile · score 0.761 no advisory within six months2024-02 · rank 44 of 2053 · 98th percentile · score 0.786 no advisory within six months2024-03 · rank 48 of 2053 · 98th percentile · score 0.776 no advisory within six months2024-04 · rank 50 of 2053 · 98th percentile · score 0.763 no advisory within six months2024-05 · rank 45 of 2053 · 98th percentile · score 0.761 no advisory within six months2024-06 · rank 47 of 2053 · 98th percentile · score 0.765 no advisory within six months2024-07 · rank 47 of 2053 · 98th percentile · score 0.758 no advisory within six months2024-08 · rank 23 of 2053 · 99th percentile · score 0.775 no advisory within six months2024-09 · rank 26 of 2053 · 99th percentile · score 0.757 no advisory within six months2024-10 · rank 30 of 2053 · 99th percentile · score 0.763 no advisory within six months2024-11 · rank 26 of 2053 · 99th percentile · score 0.766 no advisory within six months2024-12 · rank 24 of 2053 · 99th percentile · score 0.765 no advisory within six months2025-01 · rank 19 of 2053 · 99th percentile · score 0.757 no advisory within six months2025-02 · rank 19 of 2053 · 99th percentile · score 0.764 no advisory within six months2025-03 · rank 26 of 2053 · 99th percentile · score 0.744 no advisory within six months2025-04 · rank 37 of 2053 · 98th percentile · score 0.723 no advisory within six months2025-05 · rank 53 of 2053 · 97th percentile · score 0.674 no advisory within six months2025-06 · rank 40 of 2053 · 98th percentile · score 0.699 no advisory within six months2025-07 · rank 35 of 2053 · 98th percentile · score 0.704 no advisory within six months2025-08 · rank 29 of 2053 · 99th percentile · score 0.732 no advisory within six months2025-09 · rank 26 of 2053 · 99th percentile · score 0.728 no advisory within six months2025-10 · rank 24 of 2053 · 99th percentile · score 0.727 no advisory within six months2025-11 · rank 28 of 2053 · 99th percentile · score 0.698 no advisory within six months2025-12 · rank 14 of 2053 · 99th percentile · score 0.741 no advisory within six monthsadvisory followed within six monthsno advisory in window
Holdout monthScoreRankShare of panelWhat followed
2025-0770.4%35 of 2,053top 1.7%none within six months
2025-0873.2%29 of 2,053top 1.4%none within six months
2025-0972.8%26 of 2,053top 1.2%none within six months
2025-1072.7%24 of 2,053top 1.1%none within six months
2025-1169.8%28 of 2,053top 1.3%none within six months
2025-1274.1%14 of 2,053top 0.63%none within six months

Current-state context

Supporting signals

Maintenance history, governance artifacts, SLSA provenance and known advisories in dependencies, read from the plugin's current public state. A practitioner's dashboard, not part of the validated forecast.

Heuristic · not validated

Key risk signals

  • 5 prior advisory record(s) — history +10, recency +0 (0 within 90d, 0 within 365 days); component total +10 (cap 30).
  • No advisory activity in the last 365 days — historical record only.
  • Advisory severity (max CVSS 8.0 — High): +15 (cap 15).
  • Latest release: 2026-07-30.
  • Requires Jenkins core 2.528.3.
  • Last commit: November 8, 2026 — live data from GitHub.
  • Recent release activity supports active maintenance.
  • 6 historical security warning(s) — none currently active.
  • No SECURITY.md — vulnerability reporting process undocumented (+3).
  • No Dependabot or GitHub Actions detected — limited automated maintenance (+3).
  • No changelog detected — release transparency limited (+2).
  • Dependency risk: 12 of 22 dep(s) have advisories; worst: matrix-project (CVSS 8.8).
  • Plugin health score 100/100 — acceptable maintenance posture.
Feature details (34 keys)
{
  "advisory_count": 5,
  "latest_advisory_date": "2023-09-06",
  "days_since_latest_advisory": 1160,
  "advisory_within_90d": 0,
  "advisory_within_365d": 0,
  "had_advisory_within_365d": false,
  "max_cvss_base_score_observed": 8.0,
  "max_cvss_severity_label_observed": "High",
  "swh_present": true,
  "swh_days_since_last_commit": 5.5,
  "swh_commit_count": 34967,
  "swh_has_security_md": false,
  "swh_has_dependabot": false,
  "swh_has_github_actions": false,
  "swh_has_tests_directory": true,
  "swh_has_changelog": false,
  "swh_security_fix_commit_count": 707,
  "has_plugin_snapshot": true,
  "required_core": "2.528.3",
  "dependency_count": 22,
  "security_warning_count": 6,
  "active_security_warning_count": 0,
  "release_timestamp": "2026-07-30T22:20:22+00:00",
  "days_since_release": 101,
  "dependency_plugins": [
    "branch-api",
    "cloudbees-folder",
    "commons-lang3-api",
    "config-file-provider",
    "coverage",
    "credentials",
    "credentials-binding",
    "findbugs",
    "flaky-test-handler",
    "htmlpublisher",
    "jgiven",
    "junit",
    "junit-attachments",
    "matrix-project",
    "maven-invoker-plugin",
    "maven-plugin",
    "pipeline-build-step",
    "pipeline-maven-api",
    "script-security",
    "tasks",
    "workflow-api",
    "workflow-step-api"
  ],
  "dependency_total": 22,
  "dependency_risk_points": 79,
  "dependency_risk_summary": {
    "deps_with_any_advisory": 12,
    "deps_with_recent_advisory_365d": 4,
    "deps_with_active_warning": 0,
    "worst_dep_max_cvss": 8.8,
    "worst_dep_id": "matrix-project",
    "worst_dep_latest_advisory_date": "2024-01-24"
  },
  "dependency_missing_data": {
    "snapshot_missing": 2,
    "advisories_missing": 2,
    "healthscore_missing": 2
  },
  "dependency_details_top": [
    {
      "plugin_id": "script-security",
      "advisory_count": 26,
      "latest_advisory_date": "2026-06-24",
      "recent_advisory_365d": true,
      "max_cvss": 8.8,
      "security_warning_count": 28,
      "active_security_warning_count": 0,
      "healthscore": 100,
      "risk_points": 17,
      "reasons": [
        "26 advisories (+10).",
        "Max CVSS 8.8 (+4).",
        "Recent advisory within 365d (+3)."
      ]
    },
    {
      "plugin_id": "htmlpublisher",
      "advisory_count": 5,
      "latest_advisory_date": "2026-04-29",
      "recent_advisory_365d": true,
      "max_cvss": 8.0,
      "security_warning_count": 7,
      "active_security_warning_count": 0,
      "healthscore": 93,
      "risk_points": 17,
      "reasons": [
        "5 advisories (+10).",
        "Max CVSS 8.0 (+4).",
        "Recent advisory within 365d (+3)."
      ]
    },
    {
      "plugin_id": "credentials-binding",
      "advisory_count": 6,
      "latest_advisory_date": "2026-05-27",
      "recent_advisory_365d": true,
      "max_cvss": 7.5,
      "security_warning_count": 7,
      "active_security_warning_count": 0,
      "healthscore": 100,
      "risk_points": 17,
      "reasons": [
        "6 advisories (+10).",
        "Max CVSS 7.5 (+4).",
        "Recent advisory within 365d (+3)."
      ]
    },
    {
      "plugin_id": "junit",
      "advisory_count": 5,
      "latest_advisory_date": "2023-02-15",
      "recent_advisory_365d": false,
      "max_cvss": 8.0,
      "security_warning_count": 5,
      "active_security_warning_count": 0,
      "healthscore": 97,
      "risk_points": 14,
      "reasons": [
        "5 advisories (+10).",
        "Max CVSS 8.0 (+4)."
      ]
    },
    {
      "plugin_id": "config-file-provider",
      "advisory_count": 5,
      "latest_advisory_date": "2023-08-16",
      "recent_advisory_365d": false,
      "max_cvss": 7.1,
      "security_warning_count": 9,
      "active_security_warning_count": 0,
      "healthscore": 100,
      "risk_points": 14,
      "reasons": [
        "5 advisories (+10).",
        "Max CVSS 7.1 (+4)."
      ]
    }
  ],
  "healthscore_value": 100,
  "healthscore_date": "2026-02-27T23:27:11.761306Z",
  "healthscore_collected_at": "2026-02-28T16:43:20+00:00",
  "score_components": {
    "advisory_history": 10,
    "advisory_severity": 15,
    "staleness": 0,
    "active_warnings": 0,
    "governance": 8,
    "dependency": 5,
    "health_score": 0,
    "security_sensitivity": 0
  }
}
JSON payload
{
  "plugin": "pipeline-maven",
  "score": 38,
  "reasons": [
    "5 prior advisory record(s) — history +10, recency +0 (0 within 90d, 0 within 365 days); component total +10 (cap 30).",
    "No advisory activity in the last 365 days — historical record only.",
    "Advisory severity (max CVSS 8.0 — High): +15 (cap 15).",
    "Latest release: 2026-07-30.",
    "Requires Jenkins core 2.528.3.",
    "Recent commit activity (5 days ago) suggests active maintenance.",
    "Recent release activity supports active maintenance.",
    "6 historical security warning(s) — none currently active.",
    "No SECURITY.md — vulnerability reporting process undocumented (+3).",
    "No Dependabot or GitHub Actions detected — limited automated maintenance (+3).",
    "No changelog detected — release transparency limited (+2).",
    "Dependency risk: 12 of 22 dep(s) have advisories; worst: matrix-project (CVSS 8.8).",
    "Plugin health score 100/100 — acceptable maintenance posture."
  ],
  "features": {
    "advisory_count": 5,
    "latest_advisory_date": "2023-09-06",
    "days_since_latest_advisory": 1160,
    "advisory_within_90d": 0,
    "advisory_within_365d": 0,
    "had_advisory_within_365d": false,
    "max_cvss_base_score_observed": 8.0,
    "max_cvss_severity_label_observed": "High",
    "swh_present": true,
    "swh_days_since_last_commit": 5.5,
    "swh_commit_count": 34967,
    "swh_has_security_md": false,
    "swh_has_dependabot": false,
    "swh_has_github_actions": false,
    "swh_has_tests_directory": true,
    "swh_has_changelog": false,
    "swh_security_fix_commit_count": 707,
    "has_plugin_snapshot": true,
    "required_core": "2.528.3",
    "dependency_count": 22,
    "security_warning_count": 6,
    "active_security_warning_count": 0,
    "release_timestamp": "2026-07-30T22:20:22+00:00",
    "days_since_release": 101,
    "dependency_plugins": [
      "branch-api",
      "cloudbees-folder",
      "commons-lang3-api",
      "config-file-provider",
      "coverage",
      "credentials",
      "credentials-binding",
      "findbugs",
      "flaky-test-handler",
      "htmlpublisher",
      "jgiven",
      "junit",
      "junit-attachments",
      "matrix-project",
      "maven-invoker-plugin",
      "maven-plugin",
      "pipeline-build-step",
      "pipeline-maven-api",
      "script-security",
      "tasks",
      "workflow-api",
      "workflow-step-api"
    ],
    "dependency_total": 22,
    "dependency_risk_points": 79,
    "dependency_risk_summary": {
      "deps_with_any_advisory": 12,
      "deps_with_recent_advisory_365d": 4,
      "deps_with_active_warning": 0,
      "worst_dep_max_cvss": 8.8,
      "worst_dep_id": "matrix-project",
      "worst_dep_latest_advisory_date": "2024-01-24"
    },
    "dependency_missing_data": {
      "snapshot_missing": 2,
      "advisories_missing": 2,
      "healthscore_missing": 2
    },
    "dependency_details_top": [
      {
        "plugin_id": "script-security",
        "advisory_count": 26,
        "latest_advisory_date": "2026-06-24",
        "recent_advisory_365d": true,
        "max_cvss": 8.8,
        "security_warning_count": 28,
        "active_security_warning_count": 0,
        "healthscore": 100,
        "risk_points": 17,
        "reasons": [
          "26 advisories (+10).",
          "Max CVSS 8.8 (+4).",
          "Recent advisory within 365d (+3)."
        ]
      },
      {
        "plugin_id": "htmlpublisher",
        "advisory_count": 5,
        "latest_advisory_date": "2026-04-29",
        "recent_advisory_365d": true,
        "max_cvss": 8.0,
        "security_warning_count": 7,
        "active_security_warning_count": 0,
        "healthscore": 93,
        "risk_points": 17,
        "reasons": [
          "5 advisories (+10).",
          "Max CVSS 8.0 (+4).",
          "Recent advisory within 365d (+3)."
        ]
      },
      {
        "plugin_id": "credentials-binding",
        "advisory_count": 6,
        "latest_advisory_date": "2026-05-27",
        "recent_advisory_365d": true,
        "max_cvss": 7.5,
        "security_warning_count": 7,
        "active_security_warning_count": 0,
        "healthscore": 100,
        "risk_points": 17,
        "reasons": [
          "6 advisories (+10).",
          "Max CVSS 7.5 (+4).",
          "Recent advisory within 365d (+3)."
        ]
      },
      {
        "plugin_id": "junit",
        "advisory_count": 5,
        "latest_advisory_date": "2023-02-15",
        "recent_advisory_365d": false,
        "max_cvss": 8.0,
        "security_warning_count": 5,
        "active_security_warning_count": 0,
        "healthscore": 97,
        "risk_points": 14,
        "reasons": [
          "5 advisories (+10).",
          "Max CVSS 8.0 (+4)."
        ]
      },
      {
        "plugin_id": "config-file-provider",
        "advisory_count": 5,
        "latest_advisory_date": "2023-08-16",
        "recent_advisory_365d": false,
        "max_cvss": 7.1,
        "security_warning_count": 9,
        "active_security_warning_count": 0,
        "healthscore": 100,
        "risk_points": 14,
        "reasons": [
          "5 advisories (+10).",
          "Max CVSS 7.1 (+4)."
        ]
      }
    ],
    "healthscore_value": 100,
    "healthscore_date": "2026-02-27T23:27:11.761306Z",
    "healthscore_collected_at": "2026-02-28T16:43:20+00:00",
    "score_components": {
      "advisory_history": 10,
      "advisory_severity": 15,
      "staleness": 0,
      "active_warnings": 0,
      "governance": 8,
      "dependency": 5,
      "health_score": 0,
      "security_sensitivity": 0
    }
  }
}