monitoring(testing): clarify run and compliance history

This commit is contained in:
jenkins 2026-05-15 20:00:40 -03:00
parent 944a778c0a
commit 792ac2b946
6 changed files with 702 additions and 239 deletions

View File

@ -3426,15 +3426,25 @@ def build_jobs_dashboard():
f'/ clamp_min(sum by (suite) (max by (suite, check) (({{{checks_selector}}} > bool 0))), 1)) '
f'or on(suite) ({selected_suite_zero})'
)
success_history_runs = f'sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[$__interval]))'
success_history_runs = f'sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[7d]))'
success_history_by_suite = (
f'(100 * sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[$__interval])) '
f'(100 * sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[7d])) '
f'/ ({success_history_runs})) and on(suite) (({success_history_runs}) > 0)'
)
daily_success_volume = (
f'sum(increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[24h])) or on() vector(0)'
)
daily_failure_volume = (
f'sum(increase(platform_quality_gate_runs_total{{{runs_failure_selector}}}[24h])) or on() vector(0)'
)
coverage_by_suite = (
f'(max by (suite) ({{{coverage_metric_selector}}})) '
f'or on(suite) (max by (suite) (platform_quality_gate_workspace_line_coverage_percent{{{workspace_coverage_selector}}}))'
)
coverage_history_by_suite = (
f'(max by (suite) (platform_quality_gate_workspace_line_coverage_percent{{{workspace_coverage_selector}}})) '
f'or on(suite) (max by (suite) ({{{coverage_metric_selector}}}))'
)
coverage_with_missing = (
f"({coverage_by_suite}) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d])))) - 1)"
)
@ -3452,25 +3462,9 @@ def build_jobs_dashboard():
f"or on(suite) (100 * (1 - clamp_max(({smell_by_suite}), 1))) "
f"or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d])))) - 1)"
)
loc_files_history = (
f"max by (suite) (max_over_time(platform_quality_gate_source_files_total{{{smell_selector}}}[$__interval]))"
)
loc_violations_history = (
f"max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{{{smell_selector}}}[$__interval]))"
)
loc_limit_compliance_history = (
f"(100 * clamp_min(({loc_files_history}) - ({loc_violations_history}), 0) / ({loc_files_history})) "
f"and on(suite) (({loc_files_history}) > 0) "
f"or on(suite) (100 * (1 - clamp_max(({loc_violations_history}), 1))) "
f"or on(suite) ({selected_suite_zero})"
)
coverage_loc_compliance_history = (
"min by (suite) ("
f'label_replace(max_over_time(platform_quality_gate_workspace_line_coverage_percent{{{workspace_coverage_selector}}}[$__interval]), '
'"dimension", "coverage", "__name__", ".*") '
"or "
f'label_replace(({loc_limit_compliance_history}), "dimension", "loc", "__name__", ".*")'
")"
f"({loc_limit_compliance_by_suite}) "
f"or on(suite) (100 * (1 - clamp_max(({smell_by_suite}), 1)))"
)
average_coverage = f"(avg(({coverage_by_suite})) or on() vector(0))"
suites_loc_violating = f'(sum((({smell_by_suite}) > bool 0)) or on() vector(0))'
@ -3626,6 +3620,47 @@ def build_jobs_dashboard():
],
}
def _state_timeline_panel(
panel_id: int,
title: str,
expr: str,
grid: dict,
*,
description: str,
thresholds: dict,
) -> dict:
panel = {
"id": panel_id,
"type": "state-timeline",
"title": title,
"description": description,
"datasource": PROM_DS,
"gridPos": grid,
"targets": [{"expr": expr, "refId": "A", "legendFormat": "{{suite}}"}],
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": thresholds,
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": True,
},
},
"overrides": [],
},
"options": {
"mergeValues": True,
"showValue": "never",
"legend": {"displayMode": "list", "placement": "bottom"},
"tooltip": {"mode": "single", "sort": "none"},
},
}
return panel
panels.append(
stat_panel(
2,
@ -3737,81 +3772,73 @@ def build_jobs_dashboard():
{"type": "value", "options": {"-1": {"text": "no runs"}}}
]
panels.append(reliability_suite_panel)
history_panel = timeseries_panel(
history_panel = _state_timeline_panel(
11,
"Run Reliability History by Suite",
"Run Reliability by Suite (7d rolling)",
success_history_by_suite,
{"h": 8, "w": 24, "x": 0, "y": 13},
unit="percent",
legend="{{suite}}",
legend_display="list",
legend_placement="bottom",
thresholds=success_thresholds,
description=(
"Seven-day rolling run success rate per suite. Each suite gets its own lane, "
"so brief failed/debug runs lower the lane color without creating unreadable 0/100 spikes."
),
)
history_panel["fieldConfig"]["defaults"]["min"] = 0
history_panel["fieldConfig"]["defaults"]["max"] = 100
history_panel["fieldConfig"]["defaults"]["custom"] = {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "always",
"pointSize": 3,
"spanNulls": True,
}
panels.append(history_panel)
panels.append(
timeseries_panel(
12,
"Run Outcomes (Selected Scope)",
None,
{"h": 8, "w": 8, "x": 0, "y": 21},
unit="none",
targets=[
{
"refId": "A",
"expr": f'sum(increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[$__interval])) or on() vector(0)',
"legendFormat": "Success",
},
{
"refId": "B",
"expr": f'sum(increase(platform_quality_gate_runs_total{{{runs_failure_selector}}}[$__interval])) or on() vector(0)',
"legendFormat": "Failure",
},
],
legend_display="list",
legend_placement="bottom",
legend_calcs=[],
)
run_volume_panel = timeseries_panel(
12,
"Daily Run Volume (Selected Scope)",
None,
{"h": 8, "w": 8, "x": 0, "y": 21},
unit="none",
targets=[
{"refId": "A", "expr": daily_success_volume, "legendFormat": "Success"},
{"refId": "B", "expr": daily_failure_volume, "legendFormat": "Failure"},
],
legend_display="list",
legend_placement="bottom",
legend_calcs=[],
)
run_volume_panel["description"] = (
"Twenty-four-hour rolling run counts for the selected suite/branch scope. "
"This is volume, not a pass-rate percentage."
)
run_volume_panel["fieldConfig"]["defaults"]["min"] = 0
run_volume_panel["fieldConfig"]["defaults"]["custom"] = {
"drawStyle": "bars",
"barAlignment": 0,
"lineWidth": 0,
"fillOpacity": 70,
"stacking": {"mode": "normal", "group": "A"},
}
panels.append(run_volume_panel)
panels.append(
timeseries_panel(
_state_timeline_panel(
13,
"Coverage & LOC Compliance History",
None,
"Coverage History by Suite",
coverage_history_by_suite,
{"h": 8, "w": 8, "x": 8, "y": 21},
unit="percent",
targets=[
{
"refId": "A",
"expr": coverage_loc_compliance_history,
"legendFormat": "{{suite}}",
},
],
legend_display="list",
legend_placement="bottom",
legend_calcs=[],
thresholds=coverage_thresholds,
description=(
"Latest reported line coverage per suite over time. Coverage is separate "
"from LOC compliance so one signal cannot hide the other."
),
)
)
run_mix_panel = pie_panel(
14,
"Run Status Mix (30d)",
f'sum by (status) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d]))',
{"h": 8, "w": 8, "x": 16, "y": 21},
panels.append(
_state_timeline_panel(
14,
"Files <=500 LOC History by Suite",
loc_limit_compliance_history,
{"h": 8, "w": 8, "x": 16, "y": 21},
thresholds=success_thresholds,
description=(
"Percent of LOC-gated source files at or under the 500-line limit. "
"This uses the existing file-count telemetry; longest-file history needs a new publisher metric."
),
)
)
run_mix_panel["targets"][0]["legendFormat"] = "{{status}}"
run_mix_panel["fieldConfig"]["defaults"]["unit"] = "none"
panels.append(run_mix_panel)
check_dimensions = [
("Tests", check_regex_tests),

View File

@ -97,7 +97,13 @@ def test_jobs_dashboard_separates_current_gate_health_from_reliability():
assert "Current Gate Health by Suite" in panels_by_title
assert "Run Reliability by Suite (24h)" in panels_by_title
assert "Run Reliability History by Suite" in panels_by_title
assert "Run Reliability by Suite (7d rolling)" in panels_by_title
assert "Daily Run Volume (Selected Scope)" in panels_by_title
assert "Coverage History by Suite" in panels_by_title
assert "Files <=500 LOC History by Suite" in panels_by_title
assert "Run Reliability History by Suite" not in panels_by_title
assert "Coverage & LOC Compliance History" not in panels_by_title
assert "Run Status Mix (30d)" not in panels_by_title
assert "Failures by Suite (24h)" not in panels_by_title
assert "Success Rate by Suite (24h)" not in panels_by_title
@ -114,6 +120,20 @@ def test_jobs_dashboard_separates_current_gate_health_from_reliability():
{"type": "value", "options": {"-1": {"text": "no runs"}}}
]
rolling_panel = panels_by_title["Run Reliability by Suite (7d rolling)"]
assert rolling_panel["type"] == "state-timeline"
assert "[7d]" in rolling_panel["targets"][0]["expr"]
coverage_panel = panels_by_title["Coverage History by Suite"]
loc_panel = panels_by_title["Files <=500 LOC History by Suite"]
assert coverage_panel["type"] == "state-timeline"
assert loc_panel["type"] == "state-timeline"
assert coverage_panel["targets"][0]["expr"] != loc_panel["targets"][0]["expr"]
run_volume_panel = panels_by_title["Daily Run Volume (Selected Scope)"]
assert run_volume_panel["fieldConfig"]["defaults"]["custom"]["drawStyle"] == "bars"
assert "[$__interval]" not in run_volume_panel["targets"][0]["expr"]
def test_jobs_dashboard_bar_gauges_use_solid_threshold_colors():
mod = load_module()

View File

@ -804,8 +804,9 @@
"panels": [
{
"id": 11,
"type": "timeseries",
"title": "Run Reliability History by Suite",
"type": "state-timeline",
"title": "Run Reliability by Suite (7d rolling)",
"description": "Seven-day rolling run success rate per suite. Each suite gets its own lane, so brief failed/debug runs lower the lane color without creating unreadable 0/100 spikes.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -818,42 +819,69 @@
},
"targets": [
{
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0)",
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[7d])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d]))) > 0)",
"refId": "A",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "always",
"pointSize": 3,
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 12,
"type": "timeseries",
"title": "Run Outcomes (Selected Scope)",
"title": "Daily Run Volume (Selected Scope)",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -867,18 +895,29 @@
"targets": [
{
"refId": "A",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Success"
},
{
"refId": "B",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Failure"
}
],
"fieldConfig": {
"defaults": {
"unit": "none"
"unit": "none",
"min": 0,
"custom": {
"drawStyle": "bars",
"barAlignment": 0,
"lineWidth": 0,
"fillOpacity": 70,
"stacking": {
"mode": "normal",
"group": "A"
}
}
},
"overrides": []
},
@ -890,12 +929,14 @@
"tooltip": {
"mode": "multi"
}
}
},
"description": "Twenty-four-hour rolling run counts for the selected suite/branch scope. This is volume, not a pass-rate percentage."
},
{
"id": 13,
"type": "timeseries",
"title": "Coverage & LOC Compliance History",
"type": "state-timeline",
"title": "Coverage History by Suite",
"description": "Latest reported line coverage per suite over time. Coverage is separate from LOC compliance so one signal cannot hide the other.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -908,31 +949,70 @@
},
"targets": [
{
"expr": "(max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))",
"refId": "A",
"expr": "min by (suite) (label_replace(max_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]), \"dimension\", \"coverage\", \"__name__\", \".*\") or label_replace(((100 * clamp_min((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) - (max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 0) / (max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0) or on(suite) (100 * (1 - clamp_max((max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))), \"dimension\", \"loc\", \"__name__\", \".*\"))",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "percent"
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 14,
"type": "piechart",
"title": "Run Status Mix (30d)",
"type": "state-timeline",
"title": "Files <=500 LOC History by Suite",
"description": "Percent of LOC-gated source files at or under the 500-line limit. This uses the existing file-count telemetry; longest-file history needs a new publisher metric.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -945,38 +1025,62 @@
},
"targets": [
{
"expr": "sum by (status) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))",
"expr": "((100 * clamp_min((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) - (max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 0) / (max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) and on(suite) ((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 1)))",
"refId": "A",
"legendFormat": "{{status}}"
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "none",
"color": {
"mode": "palette-classic"
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "right"
"placement": "bottom"
},
"pieType": "pie",
"displayLabels": [],
"tooltip": {
"mode": "single"
},
"colorScheme": "interpolateSpectral",
"colorBy": "value",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
"mode": "single",
"sort": "none"
}
}
}

View File

@ -804,8 +804,9 @@
"panels": [
{
"id": 11,
"type": "timeseries",
"title": "Run Reliability History by Suite",
"type": "state-timeline",
"title": "Run Reliability by Suite (7d rolling)",
"description": "Seven-day rolling run success rate per suite. Each suite gets its own lane, so brief failed/debug runs lower the lane color without creating unreadable 0/100 spikes.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -818,42 +819,69 @@
},
"targets": [
{
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0)",
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[7d])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d]))) > 0)",
"refId": "A",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "always",
"pointSize": 3,
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 12,
"type": "timeseries",
"title": "Run Outcomes (Selected Scope)",
"title": "Daily Run Volume (Selected Scope)",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -867,18 +895,29 @@
"targets": [
{
"refId": "A",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Success"
},
{
"refId": "B",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Failure"
}
],
"fieldConfig": {
"defaults": {
"unit": "none"
"unit": "none",
"min": 0,
"custom": {
"drawStyle": "bars",
"barAlignment": 0,
"lineWidth": 0,
"fillOpacity": 70,
"stacking": {
"mode": "normal",
"group": "A"
}
}
},
"overrides": []
},
@ -890,12 +929,14 @@
"tooltip": {
"mode": "multi"
}
}
},
"description": "Twenty-four-hour rolling run counts for the selected suite/branch scope. This is volume, not a pass-rate percentage."
},
{
"id": 13,
"type": "timeseries",
"title": "Coverage & LOC Compliance History",
"type": "state-timeline",
"title": "Coverage History by Suite",
"description": "Latest reported line coverage per suite over time. Coverage is separate from LOC compliance so one signal cannot hide the other.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -908,31 +949,70 @@
},
"targets": [
{
"expr": "(max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))",
"refId": "A",
"expr": "min by (suite) (label_replace(max_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]), \"dimension\", \"coverage\", \"__name__\", \".*\") or label_replace(((100 * clamp_min((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) - (max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 0) / (max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0) or on(suite) (100 * (1 - clamp_max((max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))), \"dimension\", \"loc\", \"__name__\", \".*\"))",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "percent"
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 14,
"type": "piechart",
"title": "Run Status Mix (30d)",
"type": "state-timeline",
"title": "Files <=500 LOC History by Suite",
"description": "Percent of LOC-gated source files at or under the 500-line limit. This uses the existing file-count telemetry; longest-file history needs a new publisher metric.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -945,38 +1025,62 @@
},
"targets": [
{
"expr": "sum by (status) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))",
"expr": "((100 * clamp_min((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) - (max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 0) / (max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) and on(suite) ((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 1)))",
"refId": "A",
"legendFormat": "{{status}}"
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "none",
"color": {
"mode": "palette-classic"
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "right"
"placement": "bottom"
},
"pieType": "pie",
"displayLabels": [],
"tooltip": {
"mode": "single"
},
"colorScheme": "interpolateSpectral",
"colorBy": "value",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
"mode": "single",
"sort": "none"
}
}
}

View File

@ -813,8 +813,9 @@ data:
"panels": [
{
"id": 11,
"type": "timeseries",
"title": "Run Reliability History by Suite",
"type": "state-timeline",
"title": "Run Reliability by Suite (7d rolling)",
"description": "Seven-day rolling run success rate per suite. Each suite gets its own lane, so brief failed/debug runs lower the lane color without creating unreadable 0/100 spikes.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -827,42 +828,69 @@ data:
},
"targets": [
{
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0)",
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[7d])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d]))) > 0)",
"refId": "A",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "always",
"pointSize": 3,
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 12,
"type": "timeseries",
"title": "Run Outcomes (Selected Scope)",
"title": "Daily Run Volume (Selected Scope)",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -876,18 +904,29 @@ data:
"targets": [
{
"refId": "A",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Success"
},
{
"refId": "B",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Failure"
}
],
"fieldConfig": {
"defaults": {
"unit": "none"
"unit": "none",
"min": 0,
"custom": {
"drawStyle": "bars",
"barAlignment": 0,
"lineWidth": 0,
"fillOpacity": 70,
"stacking": {
"mode": "normal",
"group": "A"
}
}
},
"overrides": []
},
@ -899,12 +938,14 @@ data:
"tooltip": {
"mode": "multi"
}
}
},
"description": "Twenty-four-hour rolling run counts for the selected suite/branch scope. This is volume, not a pass-rate percentage."
},
{
"id": 13,
"type": "timeseries",
"title": "Coverage & LOC Compliance History",
"type": "state-timeline",
"title": "Coverage History by Suite",
"description": "Latest reported line coverage per suite over time. Coverage is separate from LOC compliance so one signal cannot hide the other.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -917,31 +958,70 @@ data:
},
"targets": [
{
"expr": "(max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))",
"refId": "A",
"expr": "min by (suite) (label_replace(max_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]), \"dimension\", \"coverage\", \"__name__\", \".*\") or label_replace(((100 * clamp_min((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) - (max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 0) / (max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0) or on(suite) (100 * (1 - clamp_max((max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))), \"dimension\", \"loc\", \"__name__\", \".*\"))",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "percent"
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 14,
"type": "piechart",
"title": "Run Status Mix (30d)",
"type": "state-timeline",
"title": "Files <=500 LOC History by Suite",
"description": "Percent of LOC-gated source files at or under the 500-line limit. This uses the existing file-count telemetry; longest-file history needs a new publisher metric.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -954,38 +1034,62 @@ data:
},
"targets": [
{
"expr": "sum by (status) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))",
"expr": "((100 * clamp_min((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) - (max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 0) / (max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) and on(suite) ((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 1)))",
"refId": "A",
"legendFormat": "{{status}}"
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "none",
"color": {
"mode": "palette-classic"
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "right"
"placement": "bottom"
},
"pieType": "pie",
"displayLabels": [],
"tooltip": {
"mode": "single"
},
"colorScheme": "interpolateSpectral",
"colorBy": "value",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
"mode": "single",
"sort": "none"
}
}
}

View File

@ -813,8 +813,9 @@ data:
"panels": [
{
"id": 11,
"type": "timeseries",
"title": "Run Reliability History by Suite",
"type": "state-timeline",
"title": "Run Reliability by Suite (7d rolling)",
"description": "Seven-day rolling run success rate per suite. Each suite gets its own lane, so brief failed/debug runs lower the lane color without creating unreadable 0/100 spikes.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -827,42 +828,69 @@ data:
},
"targets": [
{
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0)",
"expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[7d])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d]))) > 0)",
"refId": "A",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"drawStyle": "line",
"lineInterpolation": "linear",
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "always",
"pointSize": 3,
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 12,
"type": "timeseries",
"title": "Run Outcomes (Selected Scope)",
"title": "Daily Run Volume (Selected Scope)",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -876,18 +904,29 @@ data:
"targets": [
{
"refId": "A",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Success"
},
{
"refId": "B",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[$__interval])) or on() vector(0)",
"expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0)",
"legendFormat": "Failure"
}
],
"fieldConfig": {
"defaults": {
"unit": "none"
"unit": "none",
"min": 0,
"custom": {
"drawStyle": "bars",
"barAlignment": 0,
"lineWidth": 0,
"fillOpacity": 70,
"stacking": {
"mode": "normal",
"group": "A"
}
}
},
"overrides": []
},
@ -899,12 +938,14 @@ data:
"tooltip": {
"mode": "multi"
}
}
},
"description": "Twenty-four-hour rolling run counts for the selected suite/branch scope. This is volume, not a pass-rate percentage."
},
{
"id": 13,
"type": "timeseries",
"title": "Coverage & LOC Compliance History",
"type": "state-timeline",
"title": "Coverage History by Suite",
"description": "Latest reported line coverage per suite over time. Coverage is separate from LOC compliance so one signal cannot hide the other.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -917,31 +958,70 @@ data:
},
"targets": [
{
"expr": "(max by (suite) (platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) or on(suite) (max by (suite) ({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))",
"refId": "A",
"expr": "min by (suite) (label_replace(max_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]), \"dimension\", \"coverage\", \"__name__\", \".*\") or label_replace(((100 * clamp_min((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) - (max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 0) / (max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval])))) and on(suite) ((max by (suite) (max_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))) > 0) or on(suite) (100 * (1 - clamp_max((max by (suite) (max_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[$__interval]))), 1))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))), \"dimension\", \"loc\", \"__name__\", \".*\"))",
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "percent"
"color": {
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "multi"
"mode": "single",
"sort": "none"
}
}
},
{
"id": 14,
"type": "piechart",
"title": "Run Status Mix (30d)",
"type": "state-timeline",
"title": "Files <=500 LOC History by Suite",
"description": "Percent of LOC-gated source files at or under the 500-line limit. This uses the existing file-count telemetry; longest-file history needs a new publisher metric.",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
@ -954,38 +1034,62 @@ data:
},
"targets": [
{
"expr": "sum by (status) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))",
"expr": "((100 * clamp_min((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) - (max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 0) / (max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))) and on(suite) ((max by (suite) (platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) (platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"})), 1)))",
"refId": "A",
"legendFormat": "{{status}}"
"legendFormat": "{{suite}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "none",
"color": {
"mode": "palette-classic"
"mode": "thresholds"
},
"unit": "percent",
"min": 0,
"max": 100,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-red",
"value": null
},
{
"color": "dark-orange",
"value": 90
},
{
"color": "dark-yellow",
"value": 93
},
{
"color": "dark-green",
"value": 95
},
{
"color": "dark-blue",
"value": 100
}
]
},
"custom": {
"fillOpacity": 70,
"lineWidth": 0,
"spanNulls": true
}
},
"overrides": []
},
"options": {
"mergeValues": true,
"showValue": "never",
"legend": {
"displayMode": "list",
"placement": "right"
"placement": "bottom"
},
"pieType": "pie",
"displayLabels": [],
"tooltip": {
"mode": "single"
},
"colorScheme": "interpolateSpectral",
"colorBy": "value",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
"mode": "single",
"sort": "none"
}
}
}