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 pipeline-model-declarative-agent 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 1.6% of plugins (top 0.73% 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 7 of 2053 · 100th percentile · score 0.835 no advisory within 180 days2023-06 · rank 27 of 2053 · 99th percentile · score 0.845 no advisory within 180 days2023-07 · rank 31 of 2053 · 99th percentile · score 0.828 no advisory within 180 days2023-08 · rank 34 of 2053 · 98th percentile · score 0.814 no advisory within 180 days2023-09 · rank 39 of 2053 · 98th percentile · score 0.791 no advisory within 180 days2023-10 · rank 44 of 2053 · 98th percentile · score 0.785 no advisory within 180 days2023-11 · rank 32 of 2053 · 98th percentile · score 0.818 no advisory within 180 days2023-12 · rank 33 of 2053 · 98th percentile · score 0.832 no advisory within 180 days2024-01 · rank 27 of 2053 · 99th percentile · score 0.849 no advisory within 180 days2024-02 · rank 27 of 2053 · 99th percentile · score 0.854 no advisory within 180 days2024-03 · rank 24 of 2053 · 99th percentile · score 0.863 no advisory within 180 days2024-04 · rank 31 of 2053 · 99th percentile · score 0.824 no advisory within 180 days2024-05 · rank 36 of 2053 · 98th percentile · score 0.788 no advisory within 180 days2024-06 · rank 38 of 2053 · 98th percentile · score 0.789 no advisory within 180 days2024-07 · rank 41 of 2053 · 98th percentile · score 0.781 no advisory within 180 days2024-08 · rank 17 of 2053 · 99th percentile · score 0.795 no advisory within 180 days2024-09 · rank 15 of 2053 · 99th percentile · score 0.796 no advisory within 180 days2024-10 · rank 18 of 2053 · 99th percentile · score 0.796 no advisory within 180 days2024-11 · rank 56 of 2053 · 97th percentile · score 0.746 no advisory within 180 days2024-12 · rank 72 of 2053 · 97th percentile · score 0.701 no advisory within 180 days2025-01 · rank 214 of 2053 · 90th percentile · score 0.630 no advisory within 180 days2025-02 · rank 38 of 2053 · 98th percentile · score 0.718 no advisory within 180 days2025-03 · rank 31 of 2053 · 99th percentile · score 0.734 no advisory within 180 days2025-04 · rank 26 of 2053 · 99th percentile · score 0.740 no advisory within 180 days2025-05 · rank 21 of 2053 · 99th percentile · score 0.753 no advisory within 180 days2025-06 · rank 19 of 2053 · 99th percentile · score 0.759 no advisory within 180 days2025-07 · rank 19 of 2053 · 99th percentile · score 0.766 no advisory within 180 days2025-08 · rank 18 of 2053 · 99th percentile · score 0.750 no advisory within 180 days2025-09 · rank 18 of 2053 · 99th percentile · score 0.746 no advisory within 180 days2025-10 · rank 16 of 2053 · 99th percentile · score 0.745 no advisory within 180 days2025-11 · rank 15 of 2053 · 99th percentile · score 0.725 no advisory within 180 days2025-12 · rank 10 of 2053 · 100th percentile · score 0.758 no advisory within 180 daysadvisory followed within 180 daysno advisory in window
Holdout monthScoreRankShare of panelWhat followed
2025-0776.6%19 of 2,053top 0.88%none within 180 days
2025-0875.0%18 of 2,053top 0.83%none within 180 days
2025-0974.6%18 of 2,053top 0.83%none within 180 days
2025-1074.5%16 of 2,053top 0.73%none within 180 days
2025-1172.5%15 of 2,053top 0.68%none within 180 days
2025-1275.8%10 of 2,053top 0.44%none within 180 days

Risk context

Supporting signals

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

Key risk signals

  • No advisories found in local dataset.
  • Latest release: 2017-03-14.
  • Requires Jenkins core 2.7.1.
  • Recent commit activity (6 days ago) suggests active maintenance.
  • No release in over 9 year(s) (+8 additional staleness).
  • No SECURITY.md — vulnerability reporting process undocumented (+3).
  • No Dependabot or GitHub Actions detected — limited automated maintenance (+3).
  • Dependency risk: 1 of 10 dep(s) have advisories; worst: trilead-api (CVSS 5.9).
  • Plugin health score 45/100 — below-average maintenance posture (+2).
Feature details (34 keys)
{
  "advisory_count": 0,
  "latest_advisory_date": null,
  "days_since_latest_advisory": null,
  "advisory_within_90d": 0,
  "advisory_within_365d": 0,
  "had_advisory_within_365d": false,
  "max_cvss_base_score_observed": null,
  "max_cvss_severity_label_observed": null,
  "swh_present": true,
  "swh_days_since_last_commit": 6.0,
  "swh_commit_count": 32171,
  "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": 431,
  "has_plugin_snapshot": true,
  "required_core": "2.7.1",
  "dependency_count": 10,
  "security_warning_count": 0,
  "active_security_warning_count": 0,
  "release_timestamp": "2017-03-14T05:35:46+00:00",
  "days_since_release": 3481,
  "dependency_plugins": [
    "bouncycastle-api",
    "command-launcher",
    "instance-identity",
    "javax-activation-api",
    "javax-mail-api",
    "jaxb",
    "jdk-tool",
    "pipeline-model-extensions",
    "sshd",
    "trilead-api"
  ],
  "dependency_total": 10,
  "dependency_risk_points": 5,
  "dependency_risk_summary": {
    "deps_with_any_advisory": 1,
    "deps_with_recent_advisory_365d": 0,
    "deps_with_active_warning": 0,
    "worst_dep_max_cvss": 5.9,
    "worst_dep_id": "trilead-api",
    "worst_dep_latest_advisory_date": "2024-03-06"
  },
  "dependency_missing_data": {
    "snapshot_missing": 0,
    "advisories_missing": 0,
    "healthscore_missing": 0
  },
  "dependency_details_top": [
    {
      "plugin_id": "trilead-api",
      "advisory_count": 1,
      "latest_advisory_date": "2024-03-06",
      "recent_advisory_365d": false,
      "max_cvss": 5.9,
      "security_warning_count": 1,
      "active_security_warning_count": 0,
      "healthscore": 100,
      "risk_points": 4,
      "reasons": [
        "1 advisories (+2).",
        "Max CVSS 5.9 (+2)."
      ]
    },
    {
      "plugin_id": "jaxb",
      "advisory_count": 0,
      "latest_advisory_date": null,
      "recent_advisory_365d": false,
      "max_cvss": null,
      "security_warning_count": 0,
      "active_security_warning_count": 0,
      "healthscore": 80,
      "risk_points": 1,
      "reasons": [
        "Health score 80 (+1)."
      ]
    }
  ],
  "healthscore_value": 45,
  "healthscore_date": "2026-01-23T19:29:21.962244Z",
  "healthscore_collected_at": "2026-02-28T16:43:20+00:00",
  "score_components": {
    "advisory_history": 0,
    "advisory_severity": 0,
    "staleness": 8,
    "active_warnings": 0,
    "governance": 6,
    "dependency": 1,
    "health_score": 2,
    "security_sensitivity": 0
  }
}
JSON payload
{
  "plugin": "pipeline-model-declarative-agent",
  "score": 17,
  "reasons": [
    "No advisories found in local dataset.",
    "Latest release: 2017-03-14.",
    "Requires Jenkins core 2.7.1.",
    "Recent commit activity (6 days ago) suggests active maintenance.",
    "No release in over 9 year(s) (+8 additional staleness).",
    "No SECURITY.md — vulnerability reporting process undocumented (+3).",
    "No Dependabot or GitHub Actions detected — limited automated maintenance (+3).",
    "Dependency risk: 1 of 10 dep(s) have advisories; worst: trilead-api (CVSS 5.9).",
    "Plugin health score 45/100 — below-average maintenance posture (+2)."
  ],
  "features": {
    "advisory_count": 0,
    "latest_advisory_date": null,
    "days_since_latest_advisory": null,
    "advisory_within_90d": 0,
    "advisory_within_365d": 0,
    "had_advisory_within_365d": false,
    "max_cvss_base_score_observed": null,
    "max_cvss_severity_label_observed": null,
    "swh_present": true,
    "swh_days_since_last_commit": 6.0,
    "swh_commit_count": 32171,
    "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": 431,
    "has_plugin_snapshot": true,
    "required_core": "2.7.1",
    "dependency_count": 10,
    "security_warning_count": 0,
    "active_security_warning_count": 0,
    "release_timestamp": "2017-03-14T05:35:46+00:00",
    "days_since_release": 3481,
    "dependency_plugins": [
      "bouncycastle-api",
      "command-launcher",
      "instance-identity",
      "javax-activation-api",
      "javax-mail-api",
      "jaxb",
      "jdk-tool",
      "pipeline-model-extensions",
      "sshd",
      "trilead-api"
    ],
    "dependency_total": 10,
    "dependency_risk_points": 5,
    "dependency_risk_summary": {
      "deps_with_any_advisory": 1,
      "deps_with_recent_advisory_365d": 0,
      "deps_with_active_warning": 0,
      "worst_dep_max_cvss": 5.9,
      "worst_dep_id": "trilead-api",
      "worst_dep_latest_advisory_date": "2024-03-06"
    },
    "dependency_missing_data": {
      "snapshot_missing": 0,
      "advisories_missing": 0,
      "healthscore_missing": 0
    },
    "dependency_details_top": [
      {
        "plugin_id": "trilead-api",
        "advisory_count": 1,
        "latest_advisory_date": "2024-03-06",
        "recent_advisory_365d": false,
        "max_cvss": 5.9,
        "security_warning_count": 1,
        "active_security_warning_count": 0,
        "healthscore": 100,
        "risk_points": 4,
        "reasons": [
          "1 advisories (+2).",
          "Max CVSS 5.9 (+2)."
        ]
      },
      {
        "plugin_id": "jaxb",
        "advisory_count": 0,
        "latest_advisory_date": null,
        "recent_advisory_365d": false,
        "max_cvss": null,
        "security_warning_count": 0,
        "active_security_warning_count": 0,
        "healthscore": 80,
        "risk_points": 1,
        "reasons": [
          "Health score 80 (+1)."
        ]
      }
    ],
    "healthscore_value": 45,
    "healthscore_date": "2026-01-23T19:29:21.962244Z",
    "healthscore_collected_at": "2026-02-28T16:43:20+00:00",
    "score_components": {
      "advisory_history": 0,
      "advisory_severity": 0,
      "staleness": 8,
      "active_warnings": 0,
      "governance": 6,
      "dependency": 1,
      "health_score": 2,
      "security_sensitivity": 0
    }
  }
}