Repository navigation
feat(grafana): ai-ops-quality に v1 是正系列と unknown の理由分類を追加 (BOXP-360) - #972
Merged
boxp merged 2 commits intoOct 31, 2026
Conversation
- 測れる指標 (品質・進行) を先頭へ、未計測の指標と理由 (4 分類の表と件数) を末尾へ - correction-rules/v1: Owner に見える是正 / 内部 gate 再作業 / gate 別内訳 / 反復ループ / Review 停滞 - v0 の是正 panel は比較用として残す。unknown は 0 や成功に置き換えない - 既存 panel の query は維持。新 panel id 40-50、末尾 (id 31) は配列最後のまま (#969 と競合しない) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
ArgoCD Diff ResultAuth path: tailscale アプリケーション: prometheus-operator の差分パス: argoproj/prometheus-operator ===== /ConfigMap monitoring/grafana-dashboard-ai-ops-quality ======
31c31
< "version" : 1,
---
> "version" : 2,
35c35
< "title" : "このdashboardの読み方 (definition: ai-ops-event/v0, sli/v1)",
---
> "title" : "このdashboardの読み方 (definition: ai-ops-event/v0, sli/v1, correction-rules/v1 (v0 比較用))",
44c44
< "content" : "**目的**: Board/Hermes の運用品質を本文なしの metadata だけで見る (BOXP-360)。暫定 baseline 観測期間: **2026-10-29 〜 2026-11-12 (最長 11-26)**。SLO は未確定で、ここの値は目標ではない。\n\n- **品質/進行の SLI** は runner が `ai_ops_sli.bb` で全履歴から再計算した **snapshot gauge** (既定15分毎)。`rate()`/`increase()`/合計をかけない。母数 (分母) と未評価件数を必ず並べて読む。\n- **unknown**: source 未接続・欠落 event がある SLI は値を出さず「判定不能/未接続」と表示する (0 や合格には数えない)。\n- **counter** (ledger/Hermes の `*_total`) は表示期間内の `increase()` で見る。runner ledger は 2026-10-29 14:33Z、Hermes ledger は同日配備以降のみ。\n- 是正分類は rule による **暫定分類** (correction-rules/v1 候補、原因 unknown を含む)。モデル別ランキングには使わない。lead time は frontmatter 日粒度。\n- 小母数: 率は必ず件数/分母と一緒に読む。p90 や % の過信禁止。"
---
> "content" : "**目的**: Board/Hermes の運用品質を本文なしの metadata で見る。SLI と v1 は全履歴の snapshot gauge。率は件数と分母を併読する。counter は期間内増分。\n\n- **未接続**: source が無い / 配線されていない。 **履歴欠損**: 入力の欠落・拒否・読めない run により確定できない。\n- **分類不能**: metadata だけでは判別できない。 **対象外**: 取得しない方針。unknown は 0 や成功ではない。\n- v1 の **Owner に見える是正** は Owner 差戻し率ではない。本文を読まないため差戻し・承認後の継続・新 scope は区別しない。"
48c48
< "title" : "観測信頼性 (まずここを確認)",
---
> "title" : "観測信頼性",
53c53
< "y" : 6,
---
> "y" : 31,
66c66
< "y" : 7,
---
> "y" : 32,
68c68
< "h" : 4
---
> "h" : 3
131c131
< "y" : 7,
---
> "y" : 32,
133c133
< "h" : 4
---
> "h" : 3
196,198c196,198
< "y" : 7,
< "w" : 5,
< "h" : 4
---
> "y" : 32,
> "w" : 4,
> "h" : 3
248,251c248,251
< "x" : 13,
< "y" : 7,
< "w" : 5,
< "h" : 4
---
> "x" : 12,
> "y" : 32,
> "w" : 4,
> "h" : 3
301,304c301,304
< "x" : 18,
< "y" : 7,
< "w" : 6,
< "h" : 4
---
> "x" : 16,
> "y" : 32,
> "w" : 4,
> "h" : 3
356,358c356,358
< "y" : 11,
< "w" : 8,
< "h" : 4
---
> "y" : 35,
> "w" : 6,
> "h" : 3
419,422c419,422
< "x" : 8,
< "y" : 11,
< "w" : 8,
< "h" : 4
---
> "x" : 6,
> "y" : 35,
> "w" : 6,
> "h" : 3
503,506c503,506
< "x" : 16,
< "y" : 11,
< "w" : 8,
< "h" : 4
---
> "x" : 12,
> "y" : 35,
> "w" : 6,
> "h" : 3
568c568
< "y" : 15,
---
> "y" : 38,
570c570
< "h" : 7
---
> "h" : 5
641c641
< "y" : 15,
---
> "y" : 38,
643c643
< "h" : 7
---
> "h" : 5
704c704
< "title" : "品質",
---
> "title" : "品質 (測れる指標)",
709c709
< "y" : 22,
---
> "y" : 6,
721,722c721,722
< "x" : 0,
< "y" : 23,
---
> "x" : 12,
> "y" : 10,
724c724
< "h" : 5
---
> "h" : 3
738c738
< "title" : "agent-system 是正を含む task 割合",
---
> "title" : "agent-system 是正を含む task 割合 (v0 比較用)",
775,776c775,776
< "x" : 6,
< "y" : 23,
---
> "x" : 0,
> "y" : 13,
778c778
< "h" : 5
---
> "h" : 3
812c812
< "title" : "是正 task 件数 / 分母",
---
> "title" : "是正 task 件数 / 分母 (v0 比較用)",
849,850c849,850
< "x" : 12,
< "y" : 23,
---
> "x" : 6,
> "y" : 13,
852c852
< "h" : 5
---
> "h" : 3
913,914c913,914
< "x" : 18,
< "y" : 23,
---
> "x" : 12,
> "y" : 13,
916c916
< "h" : 5
---
> "h" : 3
988c988
< "y" : 28,
---
> "y" : 16,
990c990
< "h" : 7
---
> "h" : 6
1045c1045
< "y" : 28,
---
> "y" : 16,
1047c1047
< "h" : 7
---
> "h" : 6
1086c1086,1932
< }, {
---
> },
> {
> "description" : "v1 の Owner 可視是正 (succeeded した review-fix run を持つ task、または Review 後に implement が再開した task) / Review 到達 task。差戻し率ではない。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 0,
> "y" : 7,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"owner_visible\"} / ignoring(kind) ai_ops_v1_reached_review_tasks{job=\"codex-workspace-ai-ops-metrics\"} and on() (ai_ops_v1_export_ok{job=\"codex-workspace-ai-ops-metrics\"} == 1)",
> "legendFormat" : "割合",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "Owner に見える是正 task 割合 (v1)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "percentunit",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 40,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 6,
> "y" : 7,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"owner_visible_agent_system\"}",
> "legendFormat" : "agent 起因で Owner 可視",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"agent_system\"}",
> "legendFormat" : "agent 起因 全体、内部 gate 含む",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"owner_visible\"}",
> "legendFormat" : "Owner 可視 全体",
> "refId" : "C",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_reached_review_tasks{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "分母: Review 到達 task",
> "refId" : "D",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "是正の内訳 (v1, task 数)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 41,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 12,
> "y" : 7,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_runs{job=\"codex-workspace-ai-ops-metrics\",part=\"total\"}",
> "legendFormat" : "run 数",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_tasks{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "task 数",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_runs{job=\"codex-workspace-ai-ops-metrics\",part=\"pending\"}",
> "legendFormat" : "後続 run 未開始",
> "refId" : "C",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "内部 gate 再作業 (v1, Owner に届く前)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 42,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "gate 別の再作業 run 数。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 18,
> "y" : 7,
> "w" : 6,
> "h" : 6
> },
> "transformations" : [
> {
> "id" : "organize",
> "options" : {
> "excludeByName" : {
> "__name__" : true,
> "job" : true,
> "instance" : true,
> "pod" : true,
> "service" : true,
> "namespace" : true,
> "endpoint" : true,
> "container" : true,
> "Time" : true,
> "prometheus" : true
> },
> "renameByName" : {}
> }
> }
> ],
> "type" : "table",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_runs_by_gate{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "",
> "refId" : "A",
> "instant" : true,
> "range" : false,
> "format" : "table"
> }
> ],
> "title" : "gate 再作業の内訳 (gate 別, v1)",
> "fieldConfig" : {
> "defaults" : {
> "noValue" : "未出力",
> "mappings" : []
> },
> "overrides" : []
> },
> "id" : 43,
> "options" : {
> "showHeader" : true,
> "cellHeight" : "sm"
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 0,
> "y" : 10,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_loops{job=\"codex-workspace-ai-ops-metrics\",part=\"series\"}",
> "legendFormat" : "系列",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_loops{job=\"codex-workspace-ai-ops-metrics\",part=\"tasks\"}",
> "legendFormat" : "task",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_loops{job=\"codex-workspace-ai-ops-metrics\",part=\"max_length\"}",
> "legendFormat" : "最長",
> "refId" : "C",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "レビュー反復ループ (v1, 10 連続以上の gate 失敗)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 44,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "Review 後に run が再開した task。是正か継続か新 scope か本文を読まないため分類不能。v1 では groom→implement や中断再開を除外している。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 6,
> "y" : 10,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",origin=\"unknown\"}",
> "legendFormat" : "task 数",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "分類不能の再開 (v0 unknown cause)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 45,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 18,
> "y" : 23,
> "w" : 6,
> "h" : 4
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait_hours{job=\"codex-workspace-ai-ops-metrics\",quantile=\"0.5\"}",
> "legendFormat" : "p50 h",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait_hours{job=\"codex-workspace-ai-ops-metrics\",quantile=\"0.9\"}",
> "legendFormat" : "p90 h",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait{job=\"codex-workspace-ai-ops-metrics\",part=\"over_24h\"}",
> "legendFormat" : "24h 超",
> "refId" : "C",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait{job=\"codex-workspace-ai-ops-metrics\",part=\"not_followed\"}",
> "legendFormat" : "再開なし",
> "refId" : "D",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "Review 停滞 (v1, review 終了→次 run 開始)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : [
> {
> "matcher" : {
> "id" : "byName",
> "options" : "p50 h"
> },
> "properties" : [
> {
> "id" : "unit",
> "value" : "h"
> }
> ]
> },
> {
> "matcher" : {
> "id" : "byName",
> "options" : "p90 h"
> },
> "properties" : [
> {
> "id" : "unit",
> "value" : "h"
> }
> ]
> }
> ]
> },
> "id" : 46,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 20,
> "y" : 32,
> "w" : 4,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_export_ok{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "export",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "v1 export 状態",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "未配備",
> "mappings" : [
> {
> "type" : "value",
> "options" : {
> "1" : {
> "text" : "出力あり",
> "color" : "green"
> },
> "0" : {
> "text" : "失敗",
> "color" : "red"
> }
> }
> }
> ],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 47,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 18,
> "y" : 35,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "time() - ai_ops_v1_generated_timestamp_seconds{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "経過時間",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "v1 snapshot 経過時間",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "s",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 48,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "SLI ごとの未計測理由。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 0,
> "y" : 44,
> "w" : 12,
> "h" : 6
> },
> "transformations" : [
> {
> "id" : "organize",
> "options" : {
> "excludeByName" : {
> "__name__" : true,
> "job" : true,
> "instance" : true,
> "pod" : true,
> "service" : true,
> "namespace" : true,
> "endpoint" : true,
> "container" : true,
> "Time" : true,
> "prometheus" : true,
> "Value" : true
> },
> "renameByName" : {}
> }
> }
> ],
> "type" : "table",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_sli_unknown_info{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "",
> "refId" : "A",
> "instant" : true,
> "range" : false,
> "format" : "table"
> }
> ],
> "title" : "unknown の理由 (分類)",
> "fieldConfig" : {
> "defaults" : {
> "noValue" : "未出力",
> "mappings" : []
> },
> "overrides" : [
> {
> "matcher" : {
> "id" : "byName",
> "options" : "category"
> },
> "properties" : [
> {
> "id" : "mappings",
> "value" : [
> {
> "type" : "value",
> "options" : {
> "not_connected" : {
> "text" : "未接続 (source が無い / 配線されていない)"
> },
> "history_missing" : {
> "text" : "履歴欠損 (入力の欠落・拒否・読めない run があり確定できない)"
> },
> "unclassifiable" : {
> "text" : "分類不能 (metadata だけでは判別できない)"
> },
> "out_of_scope" : {
> "text" : "対象外 (取得しない方針)"
> }
> }
> }
> ]
> }
> ]
> }
> ]
> },
> "id" : 49,
> "options" : {
> "showHeader" : true,
> "cellHeight" : "sm"
> }
> },
> {
> "description" : "欠落・拒否・読めない run などの件数。1 件でもあれば該当 SLI は確定値を出さない。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 12,
> "y" : 44,
> "w" : 12,
> "h" : 6
> },
> "transformations" : [
> {
> "id" : "organize",
> "options" : {
> "excludeByName" : {
> "__name__" : true,
> "job" : true,
> "instance" : true,
> "pod" : true,
> "service" : true,
> "namespace" : true,
> "endpoint" : true,
> "container" : true,
> "Time" : true,
> "prometheus" : true
> },
> "renameByName" : {
> "Value" : "件数"
> }
> }
> }
> ],
> "type" : "table",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_sli_unknown_detail{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "",
> "refId" : "A",
> "instant" : true,
> "range" : false,
> "format" : "table"
> }
> ],
> "title" : "unknown の件数 (詳細)",
> "fieldConfig" : {
> "defaults" : {
> "noValue" : "未出力",
> "mappings" : []
> },
> "overrides" : []
> },
> "id" : 50,
> "options" : {
> "showHeader" : true,
> "cellHeight" : "sm"
> }
> }, {
1088c1934
< "title" : "負担 (Owner)",
---
> "title" : "未計測の指標と理由 (unknown は 0 ではない)",
1093c1939
< "y" : 35,
---
> "y" : 43,
1099c1945
< "description" : "状況催促・同承認繰返し等の救援 event の source が未接続のため現在は unknown",
---
> "description" : "状況催促・同承認繰返し等の救援 event の source が未接続のため現在は unknown 理由カテゴリ: 未接続。",
1106,1107c1952,1953
< "y" : 36,
< "w" : 8,
---
> "y" : 50,
> "w" : 6,
1168c2014
< "description" : "approval_key 付き承認 event の source が未接続のため unknown",
---
> "description" : "approval_key 付き承認 event の source が未接続のため unknown 理由カテゴリ: 未接続。",
1174,1176c2020,2022
< "x" : 8,
< "y" : 36,
< "w" : 8,
---
> "x" : 6,
> "y" : 50,
> "w" : 6,
1237c2083
< "description" : "Hermes observer の approval.requested/resolved hook 件数 (0 は hook 未発火で、承認なしの証明ではない)",
---
> "description" : "Hermes observer の approval.requested/resolved hook 件数 (0 は hook 未発火で、承認なしの証明ではない) Hermes 側の承認 event はこの Prom 系列で直接観測する (SLI 集計入力への join は会話 ID が opaque のため未実施、現在 0 件)。",
1243,1245c2089,2091
< "x" : 16,
< "y" : 36,
< "w" : 8,
---
> "x" : 12,
> "y" : 50,
> "w" : 6,
1297c2143
< "y" : 40,
---
> "y" : 22,
1310,1312c2156,2158
< "y" : 41,
< "w" : 8,
< "h" : 7
---
> "y" : 23,
> "w" : 6,
> "h" : 4
1366,1369c2212,2215
< "x" : 8,
< "y" : 41,
< "w" : 8,
< "h" : 7
---
> "x" : 6,
> "y" : 23,
> "w" : 6,
> "h" : 4
1449,1452c2295,2298
< "x" : 16,
< "y" : 41,
< "w" : 8,
< "h" : 7
---
> "x" : 12,
> "y" : 23,
> "w" : 6,
> "h" : 4
1504c2350
< "y" : 48,
---
> "y" : 27,
1506c2352
< "h" : 7
---
> "h" : 4
1557c2403
< "y" : 48,
---
> "y" : 27,
1559c2405
< "h" : 7
---
> "h" : 4
1603c2449
< "description" : "Ready 遷移時刻 event が無いため unknown",
---
> "description" : "Ready 遷移時刻 event が無いため unknown 理由カテゴリ: 未接続。",
1609,1611c2455,2457
< "x" : 0,
< "y" : 55,
< "w" : 12,
---
> "x" : 18,
> "y" : 50,
> "w" : 6,
1672c2518
< "description" : "subscription CLI は token/cost を返さないため unknown (API 単価換算はしない)",
---
> "description" : "subscription CLI は token/cost を返さないため unknown (API 単価換算はしない) 理由カテゴリ: 対象外。",
1678,1679c2524,2525
< "x" : 12,
< "y" : 55,
---
> "x" : 0,
> "y" : 54,
ℹ️ 上記の差分が見つかりました |
…注記 (BOXP-360)
codex-review 指摘: exporter は読めない run を持つ task を v1 集計から除外し
ai_ops_v1_snapshot{part="unevaluated_tasks"} に別掲するが、dashboard は件数を
表示せず v1 値を確定値として見せていた。未評価件数の stat panel (id 51) を追加し、
v1 の割合/内訳/gate 再作業/反復ループ/Review 停滞 panel の説明に下限であることを注記。
全 60 query を Grafana datasource proxy で実行し status=success を確認。
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
ArgoCD Diff ResultAuth path: tailscale アプリケーション: prometheus-operator の差分パス: argoproj/prometheus-operator ===== /ConfigMap monitoring/grafana-dashboard-ai-ops-quality ======
31c31
< "version" : 1,
---
> "version" : 2,
35c35
< "title" : "このdashboardの読み方 (definition: ai-ops-event/v0, sli/v1)",
---
> "title" : "このdashboardの読み方 (definition: ai-ops-event/v0, sli/v1, correction-rules/v1 (v0 比較用))",
44c44
< "content" : "**目的**: Board/Hermes の運用品質を本文なしの metadata だけで見る (BOXP-360)。暫定 baseline 観測期間: **2026-10-29 〜 2026-11-12 (最長 11-26)**。SLO は未確定で、ここの値は目標ではない。\n\n- **品質/進行の SLI** は runner が `ai_ops_sli.bb` で全履歴から再計算した **snapshot gauge** (既定15分毎)。`rate()`/`increase()`/合計をかけない。母数 (分母) と未評価件数を必ず並べて読む。\n- **unknown**: source 未接続・欠落 event がある SLI は値を出さず「判定不能/未接続」と表示する (0 や合格には数えない)。\n- **counter** (ledger/Hermes の `*_total`) は表示期間内の `increase()` で見る。runner ledger は 2026-10-29 14:33Z、Hermes ledger は同日配備以降のみ。\n- 是正分類は rule による **暫定分類** (correction-rules/v1 候補、原因 unknown を含む)。モデル別ランキングには使わない。lead time は frontmatter 日粒度。\n- 小母数: 率は必ず件数/分母と一緒に読む。p90 や % の過信禁止。"
---
> "content" : "**目的**: Board/Hermes の運用品質を本文なしの metadata で見る。SLI と v1 は全履歴の snapshot gauge。率は件数と分母を併読する。counter は期間内増分。\n\n- **未接続**: source が無い / 配線されていない。 **履歴欠損**: 入力の欠落・拒否・読めない run により確定できない。\n- **分類不能**: metadata だけでは判別できない。 **対象外**: 取得しない方針。unknown は 0 や成功ではない。\n- v1 の **Owner に見える是正** は Owner 差戻し率ではない。本文を読まないため差戻し・承認後の継続・新 scope は区別しない。"
48c48
< "title" : "観測信頼性 (まずここを確認)",
---
> "title" : "観測信頼性",
53c53
< "y" : 6,
---
> "y" : 31,
66c66
< "y" : 7,
---
> "y" : 32,
68c68
< "h" : 4
---
> "h" : 3
131c131
< "y" : 7,
---
> "y" : 32,
133c133
< "h" : 4
---
> "h" : 3
196,198c196,198
< "y" : 7,
< "w" : 5,
< "h" : 4
---
> "y" : 32,
> "w" : 4,
> "h" : 3
248,251c248,251
< "x" : 13,
< "y" : 7,
< "w" : 5,
< "h" : 4
---
> "x" : 12,
> "y" : 32,
> "w" : 4,
> "h" : 3
301,304c301,304
< "x" : 18,
< "y" : 7,
< "w" : 6,
< "h" : 4
---
> "x" : 16,
> "y" : 32,
> "w" : 4,
> "h" : 3
356,358c356,358
< "y" : 11,
< "w" : 8,
< "h" : 4
---
> "y" : 35,
> "w" : 6,
> "h" : 3
419,422c419,422
< "x" : 8,
< "y" : 11,
< "w" : 8,
< "h" : 4
---
> "x" : 6,
> "y" : 35,
> "w" : 6,
> "h" : 3
503,506c503,506
< "x" : 16,
< "y" : 11,
< "w" : 8,
< "h" : 4
---
> "x" : 12,
> "y" : 35,
> "w" : 6,
> "h" : 3
568c568
< "y" : 15,
---
> "y" : 38,
570c570
< "h" : 7
---
> "h" : 5
641c641
< "y" : 15,
---
> "y" : 38,
643c643
< "h" : 7
---
> "h" : 5
704c704
< "title" : "品質",
---
> "title" : "品質 (測れる指標)",
709c709
< "y" : 22,
---
> "y" : 6,
721,722c721,722
< "x" : 0,
< "y" : 23,
---
> "x" : 12,
> "y" : 10,
724c724
< "h" : 5
---
> "h" : 3
738c738
< "title" : "agent-system 是正を含む task 割合",
---
> "title" : "agent-system 是正を含む task 割合 (v0 比較用)",
775,776c775,776
< "x" : 6,
< "y" : 23,
---
> "x" : 0,
> "y" : 13,
778c778
< "h" : 5
---
> "h" : 3
812c812
< "title" : "是正 task 件数 / 分母",
---
> "title" : "是正 task 件数 / 分母 (v0 比較用)",
849,850c849,850
< "x" : 12,
< "y" : 23,
---
> "x" : 6,
> "y" : 13,
852c852
< "h" : 5
---
> "h" : 3
913,914c913,914
< "x" : 18,
< "y" : 23,
---
> "x" : 12,
> "y" : 13,
916c916
< "h" : 5
---
> "h" : 3
988c988
< "y" : 28,
---
> "y" : 16,
990c990
< "h" : 7
---
> "h" : 6
1045c1045
< "y" : 28,
---
> "y" : 16,
1047c1047
< "h" : 7
---
> "h" : 6
1086c1086,1932
< }, {
---
> },
> {
> "description" : "v1 の Owner 可視是正 (succeeded した review-fix run を持つ task、または Review 後に implement が再開した task) / Review 到達 task。差戻し率ではない。 読めない run を持つ task は除外し『未評価 task (v1)』に別掲。未評価が 1 件以上ならこの値は下限。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 0,
> "y" : 7,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"owner_visible\"} / ignoring(kind) ai_ops_v1_reached_review_tasks{job=\"codex-workspace-ai-ops-metrics\"} and on() (ai_ops_v1_export_ok{job=\"codex-workspace-ai-ops-metrics\"} == 1)",
> "legendFormat" : "割合",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "Owner に見える是正 task 割合 (v1)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "percentunit",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 40,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "Owner 可視是正の内訳 (task 数)。 読めない run を持つ task は除外し『未評価 task (v1)』に別掲。未評価が 1 件以上ならこの値は下限。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 6,
> "y" : 7,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"owner_visible_agent_system\"}",
> "legendFormat" : "agent 起因で Owner 可視",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"agent_system\"}",
> "legendFormat" : "agent 起因 全体、内部 gate 含む",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",kind=\"owner_visible\"}",
> "legendFormat" : "Owner 可視 全体",
> "refId" : "C",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_reached_review_tasks{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "分母: Review 到達 task",
> "refId" : "D",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "是正の内訳 (v1, task 数)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 41,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "gate 失敗 run (CI / codex-review 等) とその後の再作業。Owner に届く前の内部再作業で、v0 是正率には含まれない。 読めない run を持つ task は除外し『未評価 task (v1)』に別掲。未評価が 1 件以上ならこの値は下限。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 12,
> "y" : 7,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_runs{job=\"codex-workspace-ai-ops-metrics\",part=\"total\"}",
> "legendFormat" : "run 数",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_tasks{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "task 数",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_runs{job=\"codex-workspace-ai-ops-metrics\",part=\"pending\"}",
> "legendFormat" : "後続 run 未開始",
> "refId" : "C",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "内部 gate 再作業 (v1, Owner に届く前)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 42,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "gate 別の再作業 run 数。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 18,
> "y" : 7,
> "w" : 6,
> "h" : 6
> },
> "transformations" : [
> {
> "id" : "organize",
> "options" : {
> "excludeByName" : {
> "__name__" : true,
> "job" : true,
> "instance" : true,
> "pod" : true,
> "service" : true,
> "namespace" : true,
> "endpoint" : true,
> "container" : true,
> "Time" : true,
> "prometheus" : true
> },
> "renameByName" : {}
> }
> }
> ],
> "type" : "table",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_gate_rework_runs_by_gate{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "",
> "refId" : "A",
> "instant" : true,
> "range" : false,
> "format" : "table"
> }
> ],
> "title" : "gate 再作業の内訳 (gate 別, v1)",
> "fieldConfig" : {
> "defaults" : {
> "noValue" : "未出力",
> "mappings" : []
> },
> "overrides" : []
> },
> "id" : 43,
> "options" : {
> "showHeader" : true,
> "cellHeight" : "sm"
> }
> },
> {
> "description" : "gate 情報のある retrying が 10 連続以上続いた系列。 読めない run を持つ task は除外し『未評価 task (v1)』に別掲。未評価が 1 件以上ならこの値は下限。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 0,
> "y" : 10,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_loops{job=\"codex-workspace-ai-ops-metrics\",part=\"series\"}",
> "legendFormat" : "系列",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_loops{job=\"codex-workspace-ai-ops-metrics\",part=\"tasks\"}",
> "legendFormat" : "task",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_loops{job=\"codex-workspace-ai-ops-metrics\",part=\"max_length\"}",
> "legendFormat" : "最長",
> "refId" : "C",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "レビュー反復ループ (v1, 10 連続以上の gate 失敗)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 44,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "Review 後に run が再開した task。是正か継続か新 scope か本文を読まないため分類不能。v1 では groom→implement や中断再開を除外している。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 6,
> "y" : 10,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_correction_tasks{job=\"codex-workspace-ai-ops-metrics\",origin=\"unknown\"}",
> "legendFormat" : "task 数",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "分類不能の再開 (v0 unknown cause)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 45,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "review 終了から次 run 開始までの停滞。 読めない run を持つ task は除外し『未評価 task (v1)』に別掲。未評価が 1 件以上ならこの値は下限。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 18,
> "y" : 23,
> "w" : 6,
> "h" : 4
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait_hours{job=\"codex-workspace-ai-ops-metrics\",quantile=\"0.5\"}",
> "legendFormat" : "p50 h",
> "refId" : "A",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait_hours{job=\"codex-workspace-ai-ops-metrics\",quantile=\"0.9\"}",
> "legendFormat" : "p90 h",
> "refId" : "B",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait{job=\"codex-workspace-ai-ops-metrics\",part=\"over_24h\"}",
> "legendFormat" : "24h 超",
> "refId" : "C",
> "instant" : true,
> "range" : false
> },
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_review_wait{job=\"codex-workspace-ai-ops-metrics\",part=\"not_followed\"}",
> "legendFormat" : "再開なし",
> "refId" : "D",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "Review 停滞 (v1, review 終了→次 run 開始)",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : [
> {
> "matcher" : {
> "id" : "byName",
> "options" : "p50 h"
> },
> "properties" : [
> {
> "id" : "unit",
> "value" : "h"
> }
> ]
> },
> {
> "matcher" : {
> "id" : "byName",
> "options" : "p90 h"
> },
> "properties" : [
> {
> "id" : "unit",
> "value" : "h"
> }
> ]
> }
> ]
> },
> "id" : 46,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 20,
> "y" : 32,
> "w" : 4,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_export_ok{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "export",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "v1 export 状態",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "未配備",
> "mappings" : [
> {
> "type" : "value",
> "options" : {
> "1" : {
> "text" : "出力あり",
> "color" : "green"
> },
> "0" : {
> "text" : "失敗",
> "color" : "red"
> }
> }
> }
> ],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 47,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 18,
> "y" : 35,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "time() - ai_ops_v1_generated_timestamp_seconds{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "経過時間",
> "refId" : "A",
> "instant" : true,
> "range" : false
> }
> ],
> "title" : "v1 snapshot 経過時間",
> "fieldConfig" : {
> "defaults" : {
> "unit" : "s",
> "noValue" : "v1 未出力",
> "mappings" : [],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [
> {
> "color" : "blue",
> "value" : null
> }
> ]
> }
> },
> "overrides" : []
> },
> "id" : 48,
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [
> "lastNotNull"
> ],
> "fields" : "",
> "values" : false
> }
> }
> },
> {
> "description" : "SLI ごとの未計測理由。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 0,
> "y" : 44,
> "w" : 12,
> "h" : 6
> },
> "transformations" : [
> {
> "id" : "organize",
> "options" : {
> "excludeByName" : {
> "__name__" : true,
> "job" : true,
> "instance" : true,
> "pod" : true,
> "service" : true,
> "namespace" : true,
> "endpoint" : true,
> "container" : true,
> "Time" : true,
> "prometheus" : true,
> "Value" : true
> },
> "renameByName" : {}
> }
> }
> ],
> "type" : "table",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_sli_unknown_info{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "",
> "refId" : "A",
> "instant" : true,
> "range" : false,
> "format" : "table"
> }
> ],
> "title" : "unknown の理由 (分類)",
> "fieldConfig" : {
> "defaults" : {
> "noValue" : "未出力",
> "mappings" : []
> },
> "overrides" : [
> {
> "matcher" : {
> "id" : "byName",
> "options" : "category"
> },
> "properties" : [
> {
> "id" : "mappings",
> "value" : [
> {
> "type" : "value",
> "options" : {
> "not_connected" : {
> "text" : "未接続 (source が無い / 配線されていない)"
> },
> "history_missing" : {
> "text" : "履歴欠損 (入力の欠落・拒否・読めない run があり確定できない)"
> },
> "unclassifiable" : {
> "text" : "分類不能 (metadata だけでは判別できない)"
> },
> "out_of_scope" : {
> "text" : "対象外 (取得しない方針)"
> }
> }
> }
> ]
> }
> ]
> }
> ]
> },
> "id" : 49,
> "options" : {
> "showHeader" : true,
> "cellHeight" : "sm"
> }
> },
> {
> "description" : "欠落・拒否・読めない run などの件数。1 件でもあれば該当 SLI は確定値を出さない。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 12,
> "y" : 44,
> "w" : 12,
> "h" : 6
> },
> "transformations" : [
> {
> "id" : "organize",
> "options" : {
> "excludeByName" : {
> "__name__" : true,
> "job" : true,
> "instance" : true,
> "pod" : true,
> "service" : true,
> "namespace" : true,
> "endpoint" : true,
> "container" : true,
> "Time" : true,
> "prometheus" : true
> },
> "renameByName" : {
> "Value" : "件数"
> }
> }
> }
> ],
> "type" : "table",
> "targets" : [
> {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_sli_unknown_detail{job=\"codex-workspace-ai-ops-metrics\"}",
> "legendFormat" : "",
> "refId" : "A",
> "instant" : true,
> "range" : false,
> "format" : "table"
> }
> ],
> "title" : "unknown の件数 (詳細)",
> "fieldConfig" : {
> "defaults" : {
> "noValue" : "未出力",
> "mappings" : []
> },
> "overrides" : []
> },
> "id" : 50,
> "options" : {
> "showHeader" : true,
> "cellHeight" : "sm"
> }
> }, {
1088c1934
< "title" : "負担 (Owner)",
---
> "title" : "未計測の指標と理由 (unknown は 0 ではない)",
1093c1939
< "y" : 35,
---
> "y" : 43,
1099c1945
< "description" : "状況催促・同承認繰返し等の救援 event の source が未接続のため現在は unknown",
---
> "description" : "状況催促・同承認繰返し等の救援 event の source が未接続のため現在は unknown 理由カテゴリ: 未接続。",
1106,1107c1952,1953
< "y" : 36,
< "w" : 8,
---
> "y" : 50,
> "w" : 6,
1168c2014
< "description" : "approval_key 付き承認 event の source が未接続のため unknown",
---
> "description" : "approval_key 付き承認 event の source が未接続のため unknown 理由カテゴリ: 未接続。",
1174,1176c2020,2022
< "x" : 8,
< "y" : 36,
< "w" : 8,
---
> "x" : 6,
> "y" : 50,
> "w" : 6,
1237c2083
< "description" : "Hermes observer の approval.requested/resolved hook 件数 (0 は hook 未発火で、承認なしの証明ではない)",
---
> "description" : "Hermes observer の approval.requested/resolved hook 件数 (0 は hook 未発火で、承認なしの証明ではない) Hermes 側の承認 event はこの Prom 系列で直接観測する (SLI 集計入力への join は会話 ID が opaque のため未実施、現在 0 件)。",
1243,1245c2089,2091
< "x" : 16,
< "y" : 36,
< "w" : 8,
---
> "x" : 12,
> "y" : 50,
> "w" : 6,
1297c2143
< "y" : 40,
---
> "y" : 22,
1310,1312c2156,2158
< "y" : 41,
< "w" : 8,
< "h" : 7
---
> "y" : 23,
> "w" : 6,
> "h" : 4
1366,1369c2212,2215
< "x" : 8,
< "y" : 41,
< "w" : 8,
< "h" : 7
---
> "x" : 6,
> "y" : 23,
> "w" : 6,
> "h" : 4
1449,1452c2295,2298
< "x" : 16,
< "y" : 41,
< "w" : 8,
< "h" : 7
---
> "x" : 12,
> "y" : 23,
> "w" : 6,
> "h" : 4
1504c2350
< "y" : 48,
---
> "y" : 27,
1506c2352
< "h" : 7
---
> "h" : 4
1557c2403
< "y" : 48,
---
> "y" : 27,
1559c2405
< "h" : 7
---
> "h" : 4
1603c2449
< "description" : "Ready 遷移時刻 event が無いため unknown",
---
> "description" : "Ready 遷移時刻 event が無いため unknown 理由カテゴリ: 未接続。",
1609,1611c2455,2457
< "x" : 0,
< "y" : 55,
< "w" : 12,
---
> "x" : 18,
> "y" : 50,
> "w" : 6,
1672c2518
< "description" : "subscription CLI は token/cost を返さないため unknown (API 単価換算はしない)",
---
> "description" : "subscription CLI は token/cost を返さないため unknown (API 単価換算はしない) 理由カテゴリ: 対象外。",
1678,1679c2524,2525
< "x" : 12,
< "y" : 55,
---
> "x" : 0,
> "y" : 54,
1727a2574,2629
> "options" : {
> "colorMode" : "value",
> "graphMode" : "none",
> "justifyMode" : "center",
> "orientation" : "auto",
> "textMode" : "value_and_name",
> "reduceOptions" : {
> "calcs" : [ "lastNotNull" ],
> "fields" : "",
> "values" : false
> }
> }
> }, {
> "title" : "未評価 task (v1, 読めない run を持つ task)",
> "description" : "summary.edn が欠落/破損している run を持つ task。どの v1 分類だったか分からないため、v1 の分母・分子・遷移・gate 再作業・反復ループ・Review 停滞のすべてから除外し、件数だけをここに出す。1 件以上なら他の v1 値は下限(確定値ではない)。v0 の unevaluated-input-missing と同じ扱い。",
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "gridPos" : {
> "x" : 18,
> "y" : 13,
> "w" : 6,
> "h" : 3
> },
> "type" : "stat",
> "targets" : [ {
> "datasource" : {
> "type" : "prometheus",
> "uid" : "${datasource}"
> },
> "expr" : "ai_ops_v1_snapshot{job=\"codex-workspace-ai-ops-metrics\",part=\"unevaluated_tasks\"} and on() (ai_ops_v1_export_ok{job=\"codex-workspace-ai-ops-metrics\"} == 1)",
> "legendFormat" : "task",
> "refId" : "A",
> "instant" : true,
> "range" : false
> } ],
> "fieldConfig" : {
> "defaults" : {
> "unit" : "short",
> "noValue" : "v1 未出力",
> "mappings" : [ ],
> "thresholds" : {
> "mode" : "absolute",
> "steps" : [ {
> "color" : "blue",
> "value" : null
> }, {
> "color" : "orange",
> "value" : 1
> } ]
> }
> },
> "overrides" : [ ]
> },
> "id" : 51,
ℹ️ 上記の差分が見つかりました |
boxp
deleted the
codex-task-board/BOXP-360-20261031T000556Z-587aa903-29ea-4b7a-960e-159a97e8111e
branch
October 31, 2026 05:22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
BOXP-360。Owner 指摘「Grafana の AI dashboard は unknown が多すぎる」への対応の dashboard 側。arch 側は boxp/arch#14249 (
ai_ops_v1_*とai_ops_sli_unknown_*の export)。ai_ops_sli_unknown_infoの表で SLI ごとに 未接続 / 履歴欠損 / 分類不能 / 対象外 を表示し、ai_ops_sli_unknown_detailの表で件数 (拒否 event・読めない run・欠落 marker 等) を出す。Owner 救援率・重複承認率・Ready→ack・token/cost・Hermes 承認 event はこの row に移し、理由カテゴリを description に追記。検証
jq emptyok、panel id 一意、最大 y+h = 58 (feat(grafana): ai-ops-quality にsubscription利用枠と追加利用状態を追加 (BOXP-372) #969 BOXP-372 が末尾に追加する row (y=59, id 100-108) と競合しない。配列末尾 id 31 は最後のまま)。kustomize build argoproj/prometheus-operatorok。ai_ops_v1_*/ai_ops_sli_unknown_*は arch #14249 配備前のため現時点は結果 0 件 (noValue 表示)。🤖 Generated with Claude Code