grafana: the by-label panel has data, so drop its empty-panel warning

The forge restarted (new forgejo PID at 12:36), so it re-read [metrics]
and gitea_issues_by_label now exists -- 24 series carrying real label
names, read back out of the store rather than inferred from the metric
name appearing in a label-values list.

The panel shipped deliberately empty with EMPTY UNTIL THE FORGE RESTARTS
in its title and a matching noValue, because an empty graph and an
undeployed metric look identical. That warning is now false, and a stale
warning is worse than none: it tells a reader the panel cannot have data
at the moment it does.

Keeps the operational half rather than deleting it -- the restart
requirement is a fact about the NEXT metric someone enables, so it moves
into the description as a note and into noValue, where it fires only when
the series really is missing.
This commit is contained in:
atlas 2026-08-27 12:41:55 +02:00 committed by mara
commit 05552e5115

View file

@ -380,8 +380,8 @@
{
"id": 30,
"type": "timeseries",
"title": "Open issues by label — EMPTY UNTIL THE FORGE RESTARTS",
"description": "Deliberately shipped empty, and this text is the panel's real content. The per-label and per-repository breakdowns are enabled in the forge's config, but forgejo reads its [metrics] section at STARTUP — so the series do not exist until that process restarts, which a config merge alone does not do. An empty panel here means 'not deployed yet', NOT 'no issues have labels'. Confirm which you are looking at by checking whether the forgejo process has restarted, not by re-querying the metric: an absent series says absent and never says why. Once it fills, this becomes the per-label backlog view and this warning should be deleted.",
"title": "Open issues by label",
"description": "Per-label backlog. Like every panel on this board it is an INVENTORY gauge: it says how many open issues carry each label right now, never how fast they arrive or close. A flat line is a real reading, not a broken scrape. Note for whoever enables the next forge metric: forgejo reads its [metrics] section at STARTUP, so a newly enabled series does not exist until that process restarts — a config merge alone does not do it, and an absent series says absent without ever saying why. Check the process, not the metric.",
"datasource": { "type": "prometheus", "uid": "@datasourceUid@" },
"gridPos": { "h": 7, "w": 24, "x": 0, "y": 19 },
"targets": [
@ -405,7 +405,7 @@
"spanNulls": false,
"axisSoftMin": 0
},
"noValue": "no data yet — the forge process has not restarted since the metric was enabled"
"noValue": "no series — check whether the forgejo process restarted since [metrics] last changed; an absent series never says why it is absent"
},
"overrides": []
},