Web interface

CANARY Web Console

A lightweight web UI for scoring Jenkins plugins and exploring ML-based advisory risk.

Plugin scoring

Score a plugin

Review the CANARY score, rationale, and supporting evidence.

Core workflow
Resolved model: baseline_6m

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 score

Advisory risk score

Select a model

Select an algorithm, feature set, and evaluation strategy on the left.

Honest track record

Where ec2 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 11% of plugins (top 0.00% across the holdout). No advisory followed any of those dates within 180 days.

out-of-time holdout0255075100top 20%2023-052023-092024-012024-052024-092025-012025-052025-092025-122023-05 · rank 1017 of 2053 · 50th percentile · score 0.526 no advisory within 180 days2023-06 · rank 984 of 2053 · 52th percentile · score 0.540 no advisory within 180 days2023-07 · rank 949 of 2053 · 54th percentile · score 0.551 no advisory within 180 days2023-08 · rank 979 of 2053 · 52th percentile · score 0.542 no advisory within 180 days2023-09 · rank 1150 of 2053 · 44th percentile · score 0.491 no advisory within 180 days2023-10 · rank 1160 of 2053 · 44th percentile · score 0.486 no advisory within 180 days2023-11 · rank 55 of 2053 · 97th percentile · score 0.763 no advisory within 180 days2023-12 · rank 55 of 2053 · 97th percentile · score 0.757 no advisory within 180 days2024-01 · rank 73 of 2053 · 96th percentile · score 0.727 no advisory within 180 days2024-02 · rank 81 of 2053 · 96th percentile · score 0.718 no advisory within 180 days2024-03 · rank 60 of 2053 · 97th percentile · score 0.748 no advisory within 180 days2024-04 · rank 45 of 2053 · 98th percentile · score 0.776 no advisory within 180 days2024-05 · rank 42 of 2053 · 98th percentile · score 0.776 no advisory within 180 days2024-06 · rank 42 of 2053 · 98th percentile · score 0.788 no advisory within 180 days2024-07 · rank 55 of 2053 · 97th percentile · score 0.749 no advisory within 180 days2024-08 · rank 59 of 2053 · 97th percentile · score 0.734 no advisory within 180 days2024-09 · rank 122 of 2053 · 94th percentile · score 0.662 no advisory within 180 days2024-10 · rank 26 of 2053 · 99th percentile · score 0.772 no advisory within 180 days2024-11 · rank 10 of 2053 · 100th percentile · score 0.835 no advisory within 180 days2024-12 · rank 5 of 2053 · 100th percentile · score 0.854 no advisory within 180 days2025-01 · rank 5 of 2053 · 100th percentile · score 0.860 no advisory within 180 days2025-02 · rank 3 of 2053 · 100th percentile · score 0.850 no advisory within 180 days2025-03 · rank 2 of 2053 · 100th percentile · score 0.871 no advisory within 180 days2025-04 · rank 3 of 2053 · 100th percentile · score 0.876 no advisory within 180 days2025-05 · rank 3 of 2053 · 100th percentile · score 0.871 no advisory within 180 days2025-06 · rank 1 of 2053 · 100th percentile · score 0.894 no advisory within 180 days2025-07 · rank 1 of 2053 · 100th percentile · score 0.881 no advisory within 180 days2025-08 · rank 1 of 2053 · 100th percentile · score 0.887 no advisory within 180 days2025-09 · rank 1 of 2053 · 100th percentile · score 0.905 no advisory within 180 days2025-10 · rank 1 of 2053 · 100th percentile · score 0.915 no advisory within 180 days2025-11 · rank 1 of 2053 · 100th percentile · score 0.915 no advisory within 180 days2025-12 · rank 1 of 2053 · 100th percentile · score 0.886 no advisory within 180 daysadvisory followed within 180 daysno advisory in window
Holdout monthScoreRankShare of panelWhat followed
2025-0788.1%1 of 2,053top 0.00%none within 180 days
2025-0888.7%1 of 2,053top 0.00%none within 180 days
2025-0990.5%1 of 2,053top 0.00%none within 180 days
2025-1091.5%1 of 2,053top 0.00%none within 180 days
2025-1191.5%1 of 2,053top 0.00%none within 180 days
2025-1288.6%1 of 2,053top 0.00%none within 180 days

Risk context

Supporting signals

Maintenance history, governance, and dependency risk indicators for this plugin.

Key risk signals

  • 4 prior advisory record(s) — history +8, recency +0 (0 within 90d, 0 within 365 days); component total +8 (cap 30).
  • No advisory activity in the last 365 days — historical record only.
  • Advisory severity (max CVSS 5.6 — Medium): +7 (cap 15).
  • Latest release: 2026-07-20.
  • Requires Jenkins core 2.479.3.
  • Last commit: September 16, 2026 — live data from GitHub.
  • Recent release activity supports active maintenance.
  • 7 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).
  • Dependency risk: 3 of 12 dep(s) have advisories; worst: ssh-credentials (CVSS 6.5).
  • Plugin health score 94/100 — acceptable maintenance posture.
Feature details (34 keys)
{
  "advisory_count": 4,
  "latest_advisory_date": "2020-05-06",
  "days_since_latest_advisory": 2332,
  "advisory_within_90d": 0,
  "advisory_within_365d": 0,
  "had_advisory_within_365d": false,
  "max_cvss_base_score_observed": 5.6,
  "max_cvss_severity_label_observed": "Medium",
  "swh_present": true,
  "swh_days_since_last_commit": 5.5,
  "swh_commit_count": 43414,
  "swh_has_security_md": false,
  "swh_has_dependabot": false,
  "swh_has_github_actions": false,
  "swh_has_tests_directory": true,
  "swh_has_changelog": true,
  "swh_security_fix_commit_count": 616,
  "has_plugin_snapshot": true,
  "required_core": "2.479.3",
  "dependency_count": 12,
  "security_warning_count": 7,
  "active_security_warning_count": 0,
  "release_timestamp": "2026-07-20T15:27:44+00:00",
  "days_since_release": 66,
  "dependency_plugins": [
    "apache-httpcomponents-client-4-api",
    "aws-credentials",
    "aws-java-sdk2-core",
    "aws-java-sdk2-ec2",
    "bouncycastle-api",
    "command-launcher",
    "credentials",
    "mina-sshd-api-core",
    "mina-sshd-api-scp",
    "node-iterator-api",
    "ssh-credentials",
    "workflow-step-api"
  ],
  "dependency_total": 12,
  "dependency_risk_points": 20,
  "dependency_risk_summary": {
    "deps_with_any_advisory": 3,
    "deps_with_recent_advisory_365d": 0,
    "deps_with_active_warning": 0,
    "worst_dep_max_cvss": 6.5,
    "worst_dep_id": "ssh-credentials",
    "worst_dep_latest_advisory_date": "2018-06-25"
  },
  "dependency_missing_data": {
    "snapshot_missing": 0,
    "advisories_missing": 0,
    "healthscore_missing": 0
  },
  "dependency_details_top": [
    {
      "plugin_id": "credentials",
      "advisory_count": 4,
      "latest_advisory_date": "2024-10-02",
      "recent_advisory_365d": false,
      "max_cvss": 4.3,
      "security_warning_count": 4,
      "active_security_warning_count": 0,
      "healthscore": 100,
      "risk_points": 10,
      "reasons": [
        "4 advisories (+8).",
        "Max CVSS 4.3 (+2)."
      ]
    },
    {
      "plugin_id": "aws-credentials",
      "advisory_count": 2,
      "latest_advisory_date": "2022-03-15",
      "recent_advisory_365d": false,
      "max_cvss": 4.3,
      "security_warning_count": 2,
      "active_security_warning_count": 0,
      "healthscore": 96,
      "risk_points": 6,
      "reasons": [
        "2 advisories (+4).",
        "Max CVSS 4.3 (+2)."
      ]
    },
    {
      "plugin_id": "ssh-credentials",
      "advisory_count": 1,
      "latest_advisory_date": "2018-06-25",
      "recent_advisory_365d": false,
      "max_cvss": 6.5,
      "security_warning_count": 1,
      "active_security_warning_count": 0,
      "healthscore": 96,
      "risk_points": 4,
      "reasons": [
        "1 advisories (+2).",
        "Max CVSS 6.5 (+2)."
      ]
    }
  ],
  "healthscore_value": 94,
  "healthscore_date": "2026-02-27T10:28:52.40022Z",
  "healthscore_collected_at": "2026-02-28T16:43:20+00:00",
  "score_components": {
    "advisory_history": 8,
    "advisory_severity": 7,
    "staleness": 0,
    "active_warnings": 0,
    "governance": 6,
    "dependency": 5,
    "health_score": 0,
    "security_sensitivity": 0
  }
}
JSON payload
{
  "plugin": "ec2",
  "score": 26,
  "reasons": [
    "4 prior advisory record(s) — history +8, recency +0 (0 within 90d, 0 within 365 days); component total +8 (cap 30).",
    "No advisory activity in the last 365 days — historical record only.",
    "Advisory severity (max CVSS 5.6 — Medium): +7 (cap 15).",
    "Latest release: 2026-07-20.",
    "Requires Jenkins core 2.479.3.",
    "Recent commit activity (5 days ago) suggests active maintenance.",
    "Recent release activity supports active maintenance.",
    "7 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).",
    "Dependency risk: 3 of 12 dep(s) have advisories; worst: ssh-credentials (CVSS 6.5).",
    "Plugin health score 94/100 — acceptable maintenance posture."
  ],
  "features": {
    "advisory_count": 4,
    "latest_advisory_date": "2020-05-06",
    "days_since_latest_advisory": 2332,
    "advisory_within_90d": 0,
    "advisory_within_365d": 0,
    "had_advisory_within_365d": false,
    "max_cvss_base_score_observed": 5.6,
    "max_cvss_severity_label_observed": "Medium",
    "swh_present": true,
    "swh_days_since_last_commit": 5.5,
    "swh_commit_count": 43414,
    "swh_has_security_md": false,
    "swh_has_dependabot": false,
    "swh_has_github_actions": false,
    "swh_has_tests_directory": true,
    "swh_has_changelog": true,
    "swh_security_fix_commit_count": 616,
    "has_plugin_snapshot": true,
    "required_core": "2.479.3",
    "dependency_count": 12,
    "security_warning_count": 7,
    "active_security_warning_count": 0,
    "release_timestamp": "2026-07-20T15:27:44+00:00",
    "days_since_release": 66,
    "dependency_plugins": [
      "apache-httpcomponents-client-4-api",
      "aws-credentials",
      "aws-java-sdk2-core",
      "aws-java-sdk2-ec2",
      "bouncycastle-api",
      "command-launcher",
      "credentials",
      "mina-sshd-api-core",
      "mina-sshd-api-scp",
      "node-iterator-api",
      "ssh-credentials",
      "workflow-step-api"
    ],
    "dependency_total": 12,
    "dependency_risk_points": 20,
    "dependency_risk_summary": {
      "deps_with_any_advisory": 3,
      "deps_with_recent_advisory_365d": 0,
      "deps_with_active_warning": 0,
      "worst_dep_max_cvss": 6.5,
      "worst_dep_id": "ssh-credentials",
      "worst_dep_latest_advisory_date": "2018-06-25"
    },
    "dependency_missing_data": {
      "snapshot_missing": 0,
      "advisories_missing": 0,
      "healthscore_missing": 0
    },
    "dependency_details_top": [
      {
        "plugin_id": "credentials",
        "advisory_count": 4,
        "latest_advisory_date": "2024-10-02",
        "recent_advisory_365d": false,
        "max_cvss": 4.3,
        "security_warning_count": 4,
        "active_security_warning_count": 0,
        "healthscore": 100,
        "risk_points": 10,
        "reasons": [
          "4 advisories (+8).",
          "Max CVSS 4.3 (+2)."
        ]
      },
      {
        "plugin_id": "aws-credentials",
        "advisory_count": 2,
        "latest_advisory_date": "2022-03-15",
        "recent_advisory_365d": false,
        "max_cvss": 4.3,
        "security_warning_count": 2,
        "active_security_warning_count": 0,
        "healthscore": 96,
        "risk_points": 6,
        "reasons": [
          "2 advisories (+4).",
          "Max CVSS 4.3 (+2)."
        ]
      },
      {
        "plugin_id": "ssh-credentials",
        "advisory_count": 1,
        "latest_advisory_date": "2018-06-25",
        "recent_advisory_365d": false,
        "max_cvss": 6.5,
        "security_warning_count": 1,
        "active_security_warning_count": 0,
        "healthscore": 96,
        "risk_points": 4,
        "reasons": [
          "1 advisories (+2).",
          "Max CVSS 6.5 (+2)."
        ]
      }
    ],
    "healthscore_value": 94,
    "healthscore_date": "2026-02-27T10:28:52.40022Z",
    "healthscore_collected_at": "2026-02-28T16:43:20+00:00",
    "score_components": {
      "advisory_history": 8,
      "advisory_severity": 7,
      "staleness": 0,
      "active_warnings": 0,
      "governance": 6,
      "dependency": 5,
      "health_score": 0,
      "security_sensitivity": 0
    }
  }
}