chore(deps): update ghcr.io/perfectra1n/kubesearch-mcp docker tag to v1.3.0 #130

Open
renovate-bot wants to merge 1 commit from renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x into main
Member

This PR contains the following updates:

Package Update Change
ghcr.io/perfectra1n/kubesearch-mcp minor 1.0.1 → 1.3.0

Release Notes

perfectra1n/kubesearch-mcp (ghcr.io/perfectra1n/kubesearch-mcp)

v1.3.0

Compare Source

Features
  • renovate: implement renovate (cd849d9)
Bug Fixes
  • data: wait for both downloads to settle before rejecting (9f4d257)
Continuous Integration
  • target main, move off deprecated Node 20 actions (5c028a4)
Miscellaneous Chores
  • data: escape the NUL in the SQLite magic string (3873c52)

v1.2.0

Compare Source

Features
  • always-warm pool of top repos + repo_grep_all (dd69d4e)
  • repo: grepAll across pinned pool clones (663a8d7)
  • repo: pinned pool clones in RepoStore, pool config and member selection (498138d)
  • repo: RepoPool keeps the top indexed repos permanently cloned (e6aa902)
  • tools: repo_grep_all greps the always-warm pool of top repos (6ff2dac)
Documentation
  • readme: document the always-warm repo pool and repo_grep_all (fffe7a4)
Continuous Integration
  • release: manage versions with release-please (4b0de15)
  • release: manage versions with release-please (07ddc6e)

v1.1.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/perfectra1n/kubesearch-mcp](https://github.com/perfectra1n/kubesearch-mcp) | minor | `1.0.1` → `1.3.0` | --- ### Release Notes <details> <summary>perfectra1n/kubesearch-mcp (ghcr.io/perfectra1n/kubesearch-mcp)</summary> ### [`v1.3.0`](https://github.com/perfectra1n/kubesearch-mcp/blob/HEAD/CHANGELOG.md#130-2026-10-22) [Compare Source](https://github.com/perfectra1n/kubesearch-mcp/compare/v1.2.0...v1.3.0) ##### Features - **renovate:** implement renovate ([cd849d9](https://github.com/perfectra1n/kubesearch-mcp/commit/cd849d9429cc7907ad1e15ef31a823453edf668d)) ##### Bug Fixes - **data:** wait for both downloads to settle before rejecting ([9f4d257](https://github.com/perfectra1n/kubesearch-mcp/commit/9f4d2571286a41cabd48c46a1cb0432a08cd9e5d)) ##### Continuous Integration - target main, move off deprecated Node 20 actions ([5c028a4](https://github.com/perfectra1n/kubesearch-mcp/commit/5c028a42e48a3247d2d4ad897d2accd26b500a4e)) ##### Miscellaneous Chores - **data:** escape the NUL in the SQLite magic string ([3873c52](https://github.com/perfectra1n/kubesearch-mcp/commit/3873c52f10e3cd7f4098169fcfb7d3eb56e7bb21)) ### [`v1.2.0`](https://github.com/perfectra1n/kubesearch-mcp/blob/HEAD/CHANGELOG.md#120-2026-09-08) [Compare Source](https://github.com/perfectra1n/kubesearch-mcp/compare/v1.1.0...v1.2.0) ##### Features - always-warm pool of top repos + repo\_grep\_all ([dd69d4e](https://github.com/perfectra1n/kubesearch-mcp/commit/dd69d4eea53c8e7506e33bf00de4bbcf3077fb6e)) - **repo:** grepAll across pinned pool clones ([663a8d7](https://github.com/perfectra1n/kubesearch-mcp/commit/663a8d7cde85598be2beaf2c112fe487d1ddab4a)) - **repo:** pinned pool clones in RepoStore, pool config and member selection ([498138d](https://github.com/perfectra1n/kubesearch-mcp/commit/498138def9bfbdd454fbd44bf2425574843d9f1e)) - **repo:** RepoPool keeps the top indexed repos permanently cloned ([e6aa902](https://github.com/perfectra1n/kubesearch-mcp/commit/e6aa90258e615c15a3a2f057177e3f77943b6905)) - **tools:** repo\_grep\_all greps the always-warm pool of top repos ([6ff2dac](https://github.com/perfectra1n/kubesearch-mcp/commit/6ff2daca4b07b11b7ff25ba28b4992cb853f8adc)) ##### Documentation - **readme:** document the always-warm repo pool and repo\_grep\_all ([fffe7a4](https://github.com/perfectra1n/kubesearch-mcp/commit/fffe7a44fe4dfa464a95b50e98be00babb54a031)) ##### Continuous Integration - **release:** manage versions with release-please ([4b0de15](https://github.com/perfectra1n/kubesearch-mcp/commit/4b0de15f7e2b47314d2904a0e57cbc40c846107d)) - **release:** manage versions with release-please ([07ddc6e](https://github.com/perfectra1n/kubesearch-mcp/commit/07ddc6ef46e292c97b524c45d1cdb030771fc31f)) ### [`v1.1.0`](https://github.com/perfectra1n/kubesearch-mcp/compare/v1.0.1...v1.1.0) [Compare Source](https://github.com/perfectra1n/kubesearch-mcp/compare/v1.0.1...v1.1.0) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTMuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
renovate-bot force-pushed renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x from 3409cb99ee to fc1db8babc
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
2026-10-22 17:09:20 +00:00
Compare
renovate-bot changed title from chore(deps): update ghcr.io/perfectra1n/kubesearch-mcp docker tag to v1.1.0 to chore(deps): update ghcr.io/perfectra1n/kubesearch-mcp docker tag to v1.2.0 2026-10-22 17:09:20 +00:00
Member

flate diff

data.memini.json  (v1/ConfigMap/local-ai/memini-memini)
  ± value change in multiline text (271 inserts, 314 deletions)
      
      {
        "annotations": {
          "list": []
        },
    -   "description": "memini operator dashboard \u2014 top-to-bottom narrative: live headline health (including the deferred-repair backlog), the write path, recall & retrieval quality, aging & maintenance jobs, embedder & rerank, LLM-backed consolidation/answer, the HTTP surface, and client injection telemetry.",
    +   "description": "memini \u2014 what the service is actually doing for your agents. Live memory counts, write/recall traffic by tier, consolidation outcomes, store health, embedder & rerank latency & saturation, HTTP surface.",
        "editable": true,
        "graphTooltip": 1,
        "id": null,
        "links": [],
      
      [14 lines unchanged)]
      
          {
            "id": 2,
            "type": "stat",
            "title": "Live memories",
    -       "description": "Total live (non-superseded, non-expired) memories across all tiers; a sudden drop means a sweep or dedup pass removed more than expected.",
    +       "description": "Live (non-superseded, non-expired) memories by tier.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 5,
    -         "w": 4,
    +         "h": 6,
    +         "w": 6,
              "x": 0,
              "y": 1
            },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none"
    -         },
    -         "overrides": []
    -       },
            "options": {
              "colorMode": "value",
              "graphMode": "area",
              "justifyMode": "auto",
    -         "orientation": "auto",
    +         "orientation": "horizontal",
              "reduceOptions": {
                "calcs": ["lastNotNull"],
                "fields": "",
                "values": false
      
      [five lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum(memini_memories_active)",
    -           "refId": "A",
    -           "legendFormat": "live"
    +           "expr": "memini_memories_active",
    +           "legendFormat": "{{tier}}",
    +           "refId": "A"
              }
            ]
          },
          {
            "id": 3,
            "type": "stat",
    -       "title": "Writes /s (5m)",
    -       "description": "Successful Remember writes per second over the last 5m; zero during active agent sessions means writes are failing upstream.",
    +       "title": "Writes (5m rate)",
    +       "description": "Successful Remember calls per second, by tier.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 5,
    -         "w": 3,
    -         "x": 4,
    +         "h": 6,
    +         "w": 6,
    +         "x": 6,
              "y": 1
            },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "decimals": 2
    -         },
    -         "overrides": []
    -       },
            "options": {
              "colorMode": "value",
              "graphMode": "area",
              "justifyMode": "auto",
    -         "orientation": "auto",
    +         "orientation": "horizontal",
              "reduceOptions": {
                "calcs": ["lastNotNull"],
                "fields": "",
                "values": false
              },
              "textMode": "auto"
            },
    +       "fieldConfig": {
    +         "defaults": {
    +           "unit": "ops"
    +         }
    +       },
            "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum(rate(memini_remember_results_total{result=\"ok\"}[5m]))",
    -           "refId": "A",
    -           "legendFormat": "writes/s"
    +           "expr": "sum by (tier) (rate(memini_remember_results_total{result=\"ok\"}[5m]))",
    +           "legendFormat": "{{tier}}",
    +           "refId": "A"
              }
            ]
          },
          {
            "id": 4,
            "type": "stat",
    -       "title": "Recalls /s (5m)",
    -       "description": "Successful Recall searches per second over the last 5m; the primary read-traffic pulse.",
    +       "title": "Recalls (5m rate)",
    +       "description": "Successful Recall calls per second.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 5,
    -         "w": 3,
    -         "x": 7,
    +         "h": 6,
    +         "w": 6,
    +         "x": 12,
              "y": 1
            },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "decimals": 2
    -         },
    -         "overrides": []
    -       },
            "options": {
              "colorMode": "value",
              "graphMode": "area",
              "justifyMode": "auto",
    -         "orientation": "auto",
    +         "orientation": "horizontal",
              "reduceOptions": {
                "calcs": ["lastNotNull"],
                "fields": "",
                "values": false
              },
              "textMode": "auto"
            },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[5m]))",
    -           "refId": "A",
    -           "legendFormat": "recalls/s"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 5,
    -       "type": "stat",
    -       "title": "HTTP 5xx ratio (15m)",
    -       "description": "Share of HTTP requests answered 5xx over 15m; anything above zero deserves a look, above 5% is an outage.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 5,
    -         "w": 3,
    -         "x": 10,
    -         "y": 1
    -       },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               },
    -               {
    -                 "color": "orange",
    -                 "value": 0.01
    -               },
    -               {
    -                 "color": "red",
    -                 "value": 0.05
    -               }
    -             ]
    -           },
    -           "unit": "percentunit"
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "colorMode": "value",
    -         "graphMode": "area",
    -         "justifyMode": "auto",
    -         "orientation": "auto",
    -         "reduceOptions": {
    -           "calcs": ["lastNotNull"],
    -           "fields": "",
    -           "values": false
    -         },
    -         "textMode": "auto"
    +           "unit": "ops"
    +         }
            },
            "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum(rate(memini_http_requests_total{status=~\"5..\"}[15m])) / clamp_min(sum(rate(memini_http_requests_total[15m])), 1e-9)",
    -           "refId": "A",
    -           "legendFormat": "5xx ratio"
    +           "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[5m]))",
    +           "legendFormat": "recalls/s",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 6,
    +       "id": 18,
            "type": "stat",
    -       "title": "Repair backlog depth",
    -       "description": "Memories currently owing deferred repair (pending + enrich + failed); green is empty, any sustained backlog means writes are storing degraded faster than repairs drain.",
    +       "title": "Consolidation queue",
    +       "description": "Backlog of memories awaiting async consolidation. Sustained > 0 means the worker can't keep up with Remember writes.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 5,
    -         "w": 4,
    -         "x": 13,
    +         "h": 6,
    +         "w": 6,
    +         "x": 18,
              "y": 1
            },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               },
    -               {
    -                 "color": "orange",
    -                 "value": 1
    -               }
    -             ]
    -           },
    -           "unit": "none"
    -         },
    -         "overrides": []
    -       },
            "options": {
              "colorMode": "value",
              "graphMode": "area",
              "justifyMode": "auto",
    -         "orientation": "auto",
    +         "orientation": "horizontal",
              "reduceOptions": {
                "calcs": ["lastNotNull"],
                "fields": "",
                "values": false
              },
              "textMode": "auto"
            },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum(memini_repair_depth)",
    -           "refId": "A",
    -           "legendFormat": "backlog"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 7,
    -       "type": "stat",
    -       "title": "Repair oldest age",
    -       "description": "Age of the oldest memory still awaiting repair; amber the moment anything waits, red past 1h means the repair loop is stuck or starved.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 5,
    -         "w": 4,
    -         "x": 17,
    -         "y": 1
    -       },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    +           "unit": "short",
                "thresholds": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "green",
                      "value": null
                    },
                    {
    -                 "color": "orange",
    -                 "value": 1
    +                 "color": "yellow",
    +                 "value": 50
                    },
                    {
                      "color": "red",
    -                 "value": 3600
    +                 "value": 500
                    }
                  ]
    -           },
    -           "unit": "s"
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "colorMode": "value",
    -         "graphMode": "area",
    -         "justifyMode": "auto",
    -         "orientation": "auto",
    -         "reduceOptions": {
    -           "calcs": ["lastNotNull"],
    -           "fields": "",
    -           "values": false
    -         },
    -         "textMode": "auto"
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "max(memini_repair_oldest_age_seconds)",
    -           "refId": "A",
    -           "legendFormat": "oldest"
    +           }
              }
    -       ]
    -     },
    -     {
    -       "id": 8,
    -       "type": "stat",
    -       "title": "Consolidation queue",
    -       "description": "Depth of the async consolidation queue; a queue that grows without draining delays dedup/supersede decisions.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 5,
    -         "w": 3,
    -         "x": 21,
    -         "y": 1
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               },
    -               {
    -                 "color": "orange",
    -                 "value": 100
    -               }
    -             ]
    -           },
    -           "unit": "none"
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "colorMode": "value",
    -         "graphMode": "area",
    -         "justifyMode": "auto",
    -         "orientation": "auto",
    -         "reduceOptions": {
    -           "calcs": ["lastNotNull"],
    -           "fields": "",
    -           "values": false
    -         },
    -         "textMode": "auto"
            },
            "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
                "expr": "memini_consolidate_queue_depth",
    -           "refId": "A",
    -           "legendFormat": "queued"
    +           "legendFormat": "queued",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 9,
    +       "id": 5,
            "type": "row",
    -       "title": "Write path",
    +       "title": "Writes & Recalls",
            "gridPos": {
              "h": 1,
              "w": 24,
              "x": 0,
    -         "y": 6
    +         "y": 7
            },
            "collapsed": false,
            "panels": []
          },
          {
    -       "id": 10,
    +       "id": 6,
            "type": "timeseries",
    -       "title": "Remember rate by tier",
    -       "description": "Successful Remember writes per second split by tier, plus error/dropped outcomes; red or orange series above zero mean writes are being lost.",
    +       "title": "Remembers per second (by tier)",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 0,
    -         "y": 7
    +         "y": 8
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           },
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "dropped"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +           "unit": "ops"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (tier) (rate(memini_remember_results_total{result=\"ok\"}[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{tier}}"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum(rate(memini_remember_results_total{result=\"error\"}[$__rate_interval]))",
    -           "refId": "B",
    -           "legendFormat": "error"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum(rate(memini_remember_results_total{result=\"dropped\"}[$__rate_interval]))",
    -           "refId": "C",
    -           "legendFormat": "dropped"
    +           "expr": "sum by (tier) (rate(memini_remember_results_total{result=\"ok\"}[5m]))",
    +           "legendFormat": "{{tier}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 11,
    +       "id": 7,
            "type": "timeseries",
    -       "title": "Degraded (vectorless) writes by reason",
    -       "description": "Writes stored without a vector (keyword-searchable only, queued for deferred repair) because the embedder timed out or errored; any sustained rate means the embedder is unhealthy.",
    +       "title": "Recalls per second (by hit-count bucket)",
    +       "description": "How many memories a typical recall returns. '0' means no matches \u2014 investigate if persistent.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 12,
    -         "y": 7
    +         "y": 8
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "embed_error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           },
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "embed_timeout"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +           "unit": "ops"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (reason) (rate(memini_remember_degraded_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{reason}}"
    +           "expr": "sum by (hits_bucket) (rate(memini_recall_results_total{result=\"ok\"}[5m]))",
    +           "legendFormat": "{{hits_bucket}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 12,
    +       "id": 19,
    +       "type": "row",
    +       "title": "Retrieval quality",
    +       "gridPos": {
    +         "h": 1,
    +         "w": 24,
    +         "x": 0,
    +         "y": 16
    +       },
    +       "collapsed": false,
    +       "panels": []
    +     },
    +     {
    +       "id": 20,
            "type": "timeseries",
    -       "title": "Store mutations",
    -       "description": "Raw store write traffic: inserts vs updates (by upsert op), hard deletes from Forget, and tombstones written by consolidation; updates dominating inserts means most writes reinforce existing memories.",
    +       "title": "Rerank outcomes by backend",
    +       "description": "Per-recall reranker traffic: ok = reranker reordered the fused candidates; fallback = reranker timed out / errored and the fused order was kept.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 0,
    -         "y": 14
    +         "y": 17
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "lineInterpolation": "smooth",
    +             "fillOpacity": 15,
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": []
    +           "unit": "ops"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (op) (rate(memini_store_upserts_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "upsert: {{op}}"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "rate(memini_store_deletes_total[$__rate_interval])",
    -           "refId": "B",
    -           "legendFormat": "hard delete (forget)"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "rate(memini_store_soft_deletes_total[$__rate_interval])",
    -           "refId": "C",
    -           "legendFormat": "tombstone (supersede)"
    +           "expr": "sum by (backend, result) (rate(memini_rerank_results_total[5m]))",
    +           "legendFormat": "{{backend}}/{{result}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 13,
    +       "id": 21,
            "type": "timeseries",
    -       "title": "Forget & supersede outcomes",
    -       "description": "Forget and Supersede API outcomes per second; red error series should stay at zero, orange not_found spikes usually mean a client is retrying stale ids.",
    +       "title": "Recall degradation reasons",
    +       "description": "Recalls that fell back to keyword-only search because the embedder was slow or errored. embed_timeout = the recall embed budget elapsed; embed_error = the embed call failed.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 12,
    -         "y": 14
    +         "y": 17
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "lineInterpolation": "smooth",
    +             "fillOpacity": 15,
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byRegexp",
    -               "options": ".*error.*"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           },
    -           {
    -             "matcher": {
    -               "id": "byRegexp",
    -               "options": ".*not_found.*"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +           "unit": "ops"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (result) (rate(memini_forget_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "forget: {{result}}"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (result) (rate(memini_supersede_results_total[$__rate_interval]))",
    -           "refId": "B",
    -           "legendFormat": "supersede: {{result}}"
    +           "expr": "sum by (reason) (rate(memini_recall_degraded_total[5m]))",
    +           "legendFormat": "{{reason}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 14,
    +       "id": 22,
            "type": "timeseries",
    -       "title": "Content hygiene (sanitizer)",
    -       "description": "Ingestion sanitizer actions: cleaned content was rewritten in place, quarantined (orange) content was judged unsafe to store as-is and needs review if it becomes frequent.",
    +       "title": "Recall reinforcement (best-effort)",
    +       "description": "Background access-count bump on recalled memories. Errors are swallowed \u2014 a sustained nonzero error rate means the store write path is unhealthy but recall still served.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 8,
    +         "h": 8,
    +         "w": 12,
              "x": 0,
    -         "y": 21
    +         "y": 25
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "lineInterpolation": "smooth",
    +             "fillOpacity": 15,
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "quarantined"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +           "unit": "ops"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (action) (rate(memini_write_sanitized_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{action}}"
    +           "expr": "sum by (result) (rate(memini_reinforce_results_total[5m]))",
    +           "legendFormat": "{{result}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 15,
    -       "type": "timeseries",
    -       "title": "Corroboration routing",
    -       "description": "Corroboration attempts on fresh short-term writes (did this confirm something we already know); a rising red error rate means the corroboration path is failing writes silently.",
    +       "id": 23,
    +       "type": "stat",
    +       "title": "Recall success ratio",
    +       "description": "Fraction of recall calls that succeeded. A drop means the recall path is erroring (embed + keyword + rerank + RRF + everything).",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 8,
    -         "x": 8,
    -         "y": 21
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +         "h": 8,
    +         "w": 12,
    +         "x": 12,
    +         "y": 25
            },
            "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    +         "colorMode": "value",
    +         "graphMode": "area",
    +         "reduceOptions": {
    +           "calcs": ["lastNotNull"],
    +           "fields": "",
    +           "values": false
              },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (result) (rate(memini_corroborate_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{result}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 16,
    -       "type": "timeseries",
    -       "title": "Contradiction routing",
    -       "description": "Contradiction attempts on fresh durable writes (did this contradict an existing fact); contradicted events drive supersession, red errors mean conflicts are going undetected.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 8,
    -         "x": 16,
    -         "y": 21
    +         "textMode": "auto"
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    +           "unit": "percentunit",
    +           "min": 0,
    +           "max": 1,
                "thresholds": {
                  "mode": "absolute",
                  "steps": [
                    {
    -                 "color": "green",
    +                 "color": "red",
                      "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    +               },
    +               {
    +                 "color": "yellow",
    +                 "value": 0.95
    +               },
                    {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    +                 "color": "green",
    +                 "value": 0.99
                    }
                  ]
                }
    -         ]
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
              }
            },
            "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (result) (rate(memini_contradict_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{result}}"
    +           "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[15m])) / clamp_min(sum(rate(memini_recall_results_total[15m])), 1e-9)",
    +           "legendFormat": "ok ratio",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 17,
    +       "id": 8,
            "type": "row",
    -       "title": "Recall & retrieval quality",
    +       "title": "Consolidation (LLM dedup)",
            "gridPos": {
              "h": 1,
              "w": 24,
              "x": 0,
    -         "y": 28
    +         "y": 33
            },
            "collapsed": false,
            "panels": []
          },
          {
    -       "id": 18,
    +       "id": 9,
            "type": "timeseries",
    -       "title": "Recall rate by hit-count bucket",
    -       "description": "Successful recalls per second split by how many hits they returned, plus errors; a shift toward the 0-hits bucket means retrieval quality is degrading.",
    +       "title": "Consolidation outcomes per minute",
    +       "description": "gated = similarity gate skipped the LLM; new = nothing to merge; update = merged into an existing memory; supersede = contradiction-tombstoned an old one; noop = nothing to do; error/dropped = failure modes.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 12,
    +         "h": 8,
    +         "w": 16,
              "x": 0,
    -         "y": 29
    +         "y": 34
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    +             "lineInterpolation": "smooth",
    +             "fillOpacity": 20,
                  "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
                  "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    +               "mode": "normal"
                  }
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    +           "unit": "ops"
              }
            },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (hits_bucket) (rate(memini_recall_results_total{result=\"ok\"}[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{hits_bucket}} hits"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum(rate(memini_recall_results_total{result=\"error\"}[$__rate_interval]))",
    -           "refId": "B",
    -           "legendFormat": "error"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 19,
    -       "type": "timeseries",
    -       "title": "Recall degradation (keyword-only fallback)",
    -       "description": "Recalls that fell back to keyword-only search because embedding the query timed out or errored; these return without semantic ranking, so any sustained rate hurts result quality.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 12,
    -         "x": 12,
    -         "y": 29
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "embed_error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           },
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "embed_timeout"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    -       },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (reason) (rate(memini_recall_degraded_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{reason}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 20,
    -       "type": "timeseries",
    -       "title": "Recall candidates floored (by tier filter)",
    -       "description": "Candidates dropped from recall responses by the min_rank_score composite floor; a jump means the floor (or a scoring regression) is hiding results users would previously have seen.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 8,
    -         "x": 0,
    -         "y": 36
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (tier_filter) (rate(memini_recall_floored_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{tier_filter}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 21,
    -       "type": "timeseries",
    -       "title": "Recall reinforcement",
    -       "description": "Best-effort reinforcement writes triggered by recall hits (strengthening recalled memories); red errors mean reinforcement is silently failing and ranking will slowly stale.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 8,
    -         "x": 8,
    -         "y": 36
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    +           "displayMode": "table",
    +           "placement": "right",
    +           "showLegend": true,
    +           "calcs": ["sum"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (result) (rate(memini_reinforce_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{result}}"
    +           "expr": "sum by (result) (rate(memini_consolidate_results_total[5m]))",
    +           "legendFormat": "{{result}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 22,
    +       "id": 10,
            "type": "stat",
    -       "title": "Recall success ratio (15m)",
    -       "description": "Share of Recall calls that completed without error over 15m; below 99% something in the search path is failing.",
    +       "title": "Dedup effectiveness",
    +       "description": "Fraction of consolidations that actually used the LLM (update+supersede+new+noop) vs the similarity gate skipping it. Higher = busier corpus or noisier dedup signal.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 8,
              "x": 16,
    -         "y": 36
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "red",
    -                 "value": null
    -               },
    -               {
    -                 "color": "orange",
    -                 "value": 0.9
    -               },
    -               {
    -                 "color": "green",
    -                 "value": 0.99
    -               }
    -             ]
    -           },
    -           "unit": "percentunit"
    -         },
    -         "overrides": []
    +         "y": 34
            },
            "options": {
              "colorMode": "value",
              "graphMode": "area",
    -         "justifyMode": "auto",
    -         "orientation": "auto",
              "reduceOptions": {
                "calcs": ["lastNotNull"],
                "fields": "",
                "values": false
              },
              "textMode": "auto"
            },
    +       "fieldConfig": {
    +         "defaults": {
    +           "unit": "percentunit",
    +           "min": 0,
    +           "max": 1
    +         }
    +       },
            "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[15m])) / clamp_min(sum(rate(memini_recall_results_total[15m])), 1e-9)",
    -           "refId": "A",
    -           "legendFormat": "ok ratio"
    +           "expr": "sum(rate(memini_consolidate_results_total{result=~\"update|supersede|new|noop\"}[15m])) / clamp_min(sum(rate(memini_consolidate_results_total{result!~\"error|dropped\"}[15m])), 1e-9)",
    +           "legendFormat": "LLM use ratio",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 23,
    +       "id": 11,
            "type": "row",
    -       "title": "Aging & maintenance",
    +       "title": "Storage & decay",
            "gridPos": {
              "h": 1,
              "w": 24,
              "x": 0,
    -         "y": 43
    +         "y": 42
            },
            "collapsed": false,
            "panels": []
          },
          {
    -       "id": 24,
    +       "id": 12,
            "type": "timeseries",
            "title": "Live memories by tier",
    -       "description": "Live memory count per tier over time; working/episodic should churn while semantic/procedural grow slowly \u2014 a cliff in any tier means a sweep or dedup removed too much.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 0,
    -         "y": 44
    +         "y": 43
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    +             "lineInterpolation": "stepAfter",
    +             "fillOpacity": 15,
                  "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
                  "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    +               "mode": "normal"
                  }
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": []
    +           "unit": "short"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    +           "displayMode": "table",
    +           "placement": "right",
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (tier) (memini_memories_active)",
    -           "refId": "A",
    -           "legendFormat": "{{tier}}"
    +           "expr": "memini_memories_active",
    +           "legendFormat": "{{tier}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 25,
    +       "id": 13,
            "type": "timeseries",
    -       "title": "Promotion, classification & demotion (per hour)",
    -       "description": "Hourly outcomes of the episodic-to-semantic promotion pass, durable facts it wrote, and omitted-tier writes the marker classifier routed; red promote errors mean durable knowledge is not being distilled. Demotions are the mirror image: stale, never-recalled durable memories retiered down to episodic \u2014 a steady demotion stream usually means bulk-imported debris aging out.",
    +       "title": "Decay sweep + tombstones (per minute)",
    +       "description": "Swept = memories purged by TTL; soft deletes = contradictions tombstoned by consolidation; dedup tombstones = tombstoned by the periodic dedup pass.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 12,
    -         "y": 44
    +         "y": 43
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    +             "lineInterpolation": "stepAfter",
    +             "fillOpacity": 15,
    +             "showPoints": "never"
                },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "promote: error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +           "unit": "ops"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["sum"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (result) (increase(memini_promote_results_total[1h]))",
    -           "refId": "A",
    -           "legendFormat": "promote: {{result}}"
    +           "expr": "sum by (tier) (rate(memini_store_swept_total[5m]))",
    +           "legendFormat": "swept/{{tier}}",
    +           "refId": "A"
              },
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum(increase(memini_promote_facts_total[1h]))",
    -           "refId": "B",
    -           "legendFormat": "facts promoted"
    +           "expr": "rate(memini_store_soft_deletes_total[5m])",
    +           "legendFormat": "consolidate tombstones",
    +           "refId": "B"
              },
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (tier) (increase(memini_tier_classified_total[1h]))",
    -           "refId": "C",
    -           "legendFormat": "classified \u2192 {{tier}}"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (tier) (increase(memini_demoted_total[1h]))",
    -           "legendFormat": "demoted from {{tier}}",
    -           "refId": "D"
    +           "expr": "rate(memini_dedup_tombstoned_total[5m])",
    +           "legendFormat": "dedup tombstones",
    +           "refId": "C"
              }
            ]
          },
          {
    -       "id": 26,
    -       "type": "timeseries",
    -       "title": "Decay sweeps & dedup tombstones",
    -       "description": "Memories purged by the decay sweeper (by tier) and tombstoned by the dedup pass, per second; sustained zero forever means aging jobs are not running.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    +       "id": 14,
    +       "type": "row",
    +       "title": "Embedder & rerank",
            "gridPos": {
    -         "h": 7,
    -         "w": 12,
    +         "h": 1,
    +         "w": 24,
              "x": 0,
              "y": 51
            },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (tier) (rate(memini_store_swept_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "swept: {{tier}}"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "rate(memini_dedup_tombstoned_total[$__rate_interval])",
    -           "refId": "B",
    -           "legendFormat": "dedup tombstoned"
    -         }
    -       ]
    +       "collapsed": false,
    +       "panels": []
          },
          {
    -       "id": 27,
    +       "id": 15,
            "type": "timeseries",
    -       "title": "Fsck outcomes (per hour)",
    -       "description": "Hourly consistency-sweep outcomes; red errors mean the store's self-check cannot complete and silent corruption may go unnoticed.",
    +       "title": "Embedder p95 latency (by backend)",
    +       "description": "openai = real network calls; cached/diskcache/batched = local cache or fan-out; disabled = no endpoint configured.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
    -         "x": 12,
    -         "y": 51
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (result) (increase(memini_fsck_results_total[1h]))",
    -           "refId": "A",
    -           "legendFormat": "{{result}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 28,
    -       "type": "timeseries",
    -       "title": "Repair backlog depth by state",
    -       "description": "Memories owing deferred repair, split by state; red failed entries are permanently vectorless without operator action, and a growing pending line means the repair loop cannot keep up.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 8,
              "x": 0,
    -         "y": 58
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "failed"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (state) (memini_repair_depth)",
    -           "refId": "A",
    -           "legendFormat": "{{state}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 29,
    -       "type": "timeseries",
    -       "title": "Repair oldest age by state",
    -       "description": "Age of the oldest memory in each repair state; growth without bound means repairs are queued faster than they drain (the red line marks the 1h alarm threshold).",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 8,
    -         "x": 8,
    -         "y": 58
    +         "y": 52
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "line"
    -             }
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               },
    -               {
    -                 "color": "red",
    -                 "value": 3600
    -               }
    -             ]
    -           },
    -           "unit": "s",
    -           "min": 0
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    +           "unit": "s"
              }
            },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "max by (state) (memini_repair_oldest_age_seconds)",
    -           "refId": "A",
    -           "legendFormat": "{{state}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 30,
    -       "type": "timeseries",
    -       "title": "Backfill pending",
    -       "description": "Memories still awaiting embedding backfill and long memories still without chunk vectors; a number that never falls means those memories are unreachable by semantic (or chunked) recall.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 8,
    -         "x": 16,
    -         "y": 58
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": []
    -       },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "memini_embed_backfill_pending",
    -           "refId": "A",
    -           "legendFormat": "pending embed"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "memini_chunk_backfill_pending",
    -           "refId": "B",
    -           "legendFormat": "pending chunk vectors"
    +           "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_duration_seconds_bucket[5m])))",
    +           "legendFormat": "p95 {{backend}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 31,
    +       "id": 16,
            "type": "timeseries",
    -       "title": "Repair outcomes by stage",
    -       "description": "Deferred-repair attempt outcomes per second by stage; red parked means a memory gave up retrying and stays vectorless, orange retry churn means the embedder keeps failing under the repair loop.",
    +       "title": "Embedder tokens + error rate",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
    -         "x": 0,
    -         "y": 65
    +         "x": 12,
    +         "y": 52
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byRegexp",
    -               "options": ".*parked.*"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           },
    -           {
    -             "matcher": {
    -               "id": "byRegexp",
    -               "options": ".*retry.*"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    +             "showPoints": "never"
                }
    -         ]
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (stage, result) (rate(memini_repair_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{stage}}: {{result}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 32,
    -       "type": "timeseries",
    -       "title": "Repair duration p95 by stage",
    -       "description": "95th-percentile latency of a single deferred repair by stage; climbing durations shrink repair throughput and grow the backlog.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 12,
    -         "x": 12,
    -         "y": 65
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "s",
    -           "min": 0
    +           "expr": "sum by (backend) (rate(memini_embed_tokens_total[5m]))",
    +           "legendFormat": "tokens/s {{backend}}",
    +           "refId": "A"
              },
    -         "overrides": []
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "histogram_quantile(0.95, sum by (stage, le) (rate(memini_repair_duration_seconds_bucket[$__rate_interval])))",
    -           "refId": "A",
    -           "legendFormat": "{{stage}}"
    +           "expr": "sum by (backend) (rate(memini_embed_errors_total[5m]))",
    +           "legendFormat": "err/s {{backend}}",
    +           "refId": "B"
              }
            ]
          },
          {
    -       "id": 33,
    -       "type": "row",
    -       "title": "Embedder & rerank",
    -       "gridPos": {
    -         "h": 1,
    -         "w": 24,
    -         "x": 0,
    -         "y": 72
    -       },
    -       "collapsed": false,
    -       "panels": []
    -     },
    -     {
    -       "id": 34,
    -       "type": "timeseries",
    -       "title": "Embedder p95 latency by backend",
    -       "description": "95th-percentile embedder call latency per backend layer; the openai layer reflects the real provider, cached/diskcache should stay near zero.",
    +       "id": 24,
    +       "type": "stat",
    +       "title": "Embedder in-flight",
    +       "description": "Concurrent embed calls against the backend (post-cap, excludes cache hits). Spikes during ingest storms are normal; sustained values near the cap mean the embedder is the bottleneck.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 12,
    +         "h": 4,
    +         "w": 8,
              "x": 0,
    -         "y": 73
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "s",
    -           "min": 0
    -         },
    -         "overrides": []
    +         "y": 60
            },
            "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    +         "colorMode": "value",
    +         "graphMode": "area",
    +         "justifyMode": "auto",
    +         "orientation": "horizontal",
    +         "reduceOptions": {
    +           "calcs": ["lastNotNull"],
    +           "fields": "",
    +           "values": false
              },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_duration_seconds_bucket[$__rate_interval])))",
    -           "refId": "A",
    -           "legendFormat": "{{backend}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 35,
    -       "type": "timeseries",
    -       "title": "Rerank outcomes by backend",
    -       "description": "Recall rerank attempts per second by backend and result; orange fallback means the reranker failed or timed out and results shipped with pre-rerank ordering.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 12,
    -         "x": 12,
    -         "y": 73
    +         "textMode": "auto"
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byRegexp",
    -               "options": ".*fallback.*"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    +           "unit": "short"
              }
            },
            "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (backend, result) (rate(memini_rerank_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{backend}}: {{result}}"
    +           "expr": "memini_embed_in_flight",
    +           "legendFormat": "embed in-flight",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 36,
    -       "type": "timeseries",
    -       "title": "Embedder tokens/s by backend",
    -       "description": "Embedding tokens consumed per second as reported by the API (openai backend only); this is the embed cost driver.",
    +       "id": 25,
    +       "type": "stat",
    +       "title": "Rerank in-flight",
    +       "description": "Concurrent rerank calls. A nonzero value indicates rerank is configured; if this stays pinned at the cap, the reranker is the bottleneck.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 4,
              "w": 8,
    -         "x": 0,
    -         "y": 80
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": []
    +         "x": 8,
    +         "y": 60
            },
            "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    +         "colorMode": "value",
    +         "graphMode": "area",
    +         "justifyMode": "auto",
    +         "orientation": "horizontal",
    +         "reduceOptions": {
    +           "calcs": ["lastNotNull"],
    +           "fields": "",
    +           "values": false
              },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum by (backend) (rate(memini_embed_tokens_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{backend}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 37,
    -       "type": "timeseries",
    -       "title": "Embedder errors by backend",
    -       "description": "Embedder failures per second by backend; any sustained nonzero rate here explains degraded writes and keyword-only recalls elsewhere on this board.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 8,
    -         "x": 8,
    -         "y": 80
    +         "textMode": "auto"
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    +           "unit": "short"
              }
            },
            "targets": [
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (backend) (rate(memini_embed_errors_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{backend}}"
    +           "expr": "memini_rerank_in_flight",
    +           "legendFormat": "rerank in-flight",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 38,
    +       "id": 26,
            "type": "timeseries",
    -       "title": "Embedder batch size (p50 / p95)",
    -       "description": "Texts per Embed call at the median and 95th percentile; batches stuck at 1 mean the batcher is not coalescing and each write pays a full round trip.",
    +       "title": "Embedder batch size (p50 vs p95)",
    +       "description": "Items per embed call, by backend. batched shows a single high-p95 bar; cached should be ~1.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 4,
              "w": 8,
              "x": 16,
    -         "y": 80
    +         "y": 60
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    +             "lineInterpolation": "smooth",
    +             "fillOpacity": 5,
    +             "showPoints": "never"
    +           }
              }
            },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "histogram_quantile(0.50, sum by (backend, le) (rate(memini_embed_items_bucket[$__rate_interval])))",
    -           "refId": "A",
    -           "legendFormat": "p50 {{backend}}"
    -         },
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_items_bucket[$__rate_interval])))",
    -           "refId": "B",
    -           "legendFormat": "p95 {{backend}}"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 39,
    -       "type": "timeseries",
    -       "title": "In-flight embed & rerank calls",
    -       "description": "Concurrent calls currently held against the embedding and rerank backends; pinned at the concurrency cap means requests are queueing behind the limiter.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 6,
    -         "w": 24,
    -         "x": 0,
    -         "y": 87
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": []
    -       },
            "options": {
              "legend": {
    -           "calcs": [],
                "displayMode": "list",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "memini_embed_in_flight",
    -           "refId": "A",
    -           "legendFormat": "embed"
    +           "expr": "histogram_quantile(0.5, sum by (backend, le) (rate(memini_embed_items_bucket[5m])))",
    +           "legendFormat": "p50 {{backend}}",
    +           "refId": "A"
              },
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "memini_rerank_in_flight",
    -           "refId": "B",
    -           "legendFormat": "rerank"
    +           "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_items_bucket[5m])))",
    +           "legendFormat": "p95 {{backend}}",
    +           "refId": "B"
              }
            ]
          },
          {
    -       "id": 40,
    +       "id": 27,
            "type": "row",
    -       "title": "LLM \u2014 consolidation & answer (empty without an LLM configured)",
    +       "title": "HTTP surface",
            "gridPos": {
              "h": 1,
              "w": 24,
              "x": 0,
    -         "y": 93
    +         "y": 64
            },
            "collapsed": false,
            "panels": []
          },
          {
    -       "id": 41,
    +       "id": 28,
            "type": "timeseries",
    -       "title": "Consolidation outcomes",
    -       "description": "LLM consolidation decisions per second (gated, new, update, supersede, noop); red errors or orange drops mean writes are skipping dedup and duplicates will accumulate.",
    +       "title": "HTTP requests by route (status class)",
    +       "description": "Per-route request rate broken down by 2xx / 4xx / 5xx. 5xx spikes point at a broken handler; 4xx spikes usually mean client misuse or a misconfigured agent.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 12,
    +         "h": 8,
    +         "w": 16,
              "x": 0,
    -         "y": 94
    +         "y": 65
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    +             "lineInterpolation": "smooth",
    +             "fillOpacity": 15,
                  "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
                  "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    +               "mode": "normal"
                  }
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           },
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "dropped"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +           "unit": "ops"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    +           "displayMode": "table",
    +           "placement": "right",
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (result) (rate(memini_consolidate_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{result}}"
    +           "expr": "sum by (route, status) (label_replace(rate(memini_http_requests_total[5m]), \"status_class\", \"$1\", \"status\", \"(...).\"))",
    +           "legendFormat": "{{route}} {{status_class}}xx",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 42,
    +       "id": 29,
            "type": "timeseries",
    -       "title": "Consolidation queue depth",
    -       "description": "Async consolidation queue depth over time; a sawtooth is normal, monotonic growth means the LLM cannot keep pace with write volume.",
    +       "title": "HTTP p95 latency by route",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 6,
    -         "x": 12,
    -         "y": 94
    +         "h": 8,
    +         "w": 8,
    +         "x": 16,
    +         "y": 65
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": []
    +           "unit": "s"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": false
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "memini_consolidate_queue_depth",
    -           "refId": "A",
    -           "legendFormat": "queue depth"
    +           "expr": "histogram_quantile(0.95, sum by (route, le) (rate(memini_http_request_duration_seconds_bucket[5m])))",
    +           "legendFormat": "p95 {{route}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 43,
    -       "type": "stat",
    -       "title": "Dedup effectiveness (15m)",
    -       "description": "Share of consolidated writes that matched an existing memory (update/supersede/noop) rather than creating a new one; a sudden drop to zero suggests the matcher is broken.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 6,
    -         "x": 18,
    -         "y": 94
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "thresholds"
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "percentunit"
    -         },
    -         "overrides": []
    -       },
    -       "options": {
    -         "colorMode": "value",
    -         "graphMode": "area",
    -         "justifyMode": "auto",
    -         "orientation": "auto",
    -         "reduceOptions": {
    -           "calcs": ["lastNotNull"],
    -           "fields": "",
    -           "values": false
    -         },
    -         "textMode": "auto"
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    -           },
    -           "expr": "sum(rate(memini_consolidate_results_total{result=~\"update|supersede|noop\"}[15m])) / clamp_min(sum(rate(memini_consolidate_results_total{result=~\"new|update|supersede|noop\"}[15m])), 1e-9)",
    -           "refId": "A",
    -           "legendFormat": "matched"
    -         }
    -       ]
    -     },
    -     {
    -       "id": 44,
    +       "id": 17,
            "type": "timeseries",
    -       "title": "Answer outcomes",
    -       "description": "Answer API (LLM-synthesized answers over recall) outcomes per second; red errors mean answer requests are burning LLM budget without returning.",
    +       "title": "End-to-end op latency p95 (by op)",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 12,
    +         "h": 8,
    +         "w": 16,
              "x": 0,
    -         "y": 101
    +         "y": 73
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "lineInterpolation": "smooth",
    +             "fillOpacity": 5,
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byName",
    -               "options": "error"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    +           "unit": "s"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    +           "displayMode": "table",
    +           "placement": "right",
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (result) (rate(memini_answer_results_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{result}}"
    +           "expr": "histogram_quantile(0.95, sum by (op, le) (rate(memini_op_duration_seconds_bucket[5m])))",
    +           "legendFormat": "{{op}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 45,
    +       "id": 34,
            "type": "timeseries",
    -       "title": "LLM op latency p95",
    -       "description": "95th-percentile end-to-end latency of the LLM-backed service ops (answer, promote, dedup, semantic distillation wait); these dominate tail latency when the LLM slows down.",
    +       "title": "HTTP response size by route (p50/p90)",
    +       "description": "Body bytes shipped per response. The recall/briefing routes are what hooks inject from — watch these when tuning context-injection volume.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 12,
    -         "x": 12,
    -         "y": 101
    +         "h": 8,
    +         "w": 8,
    +         "x": 16,
    +         "y": 73
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    +             "showPoints": "never"
                },
    -           "unit": "s",
    -           "min": 0
    -         },
    -         "overrides": []
    +           "unit": "bytes"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "histogram_quantile(0.95, sum by (op, le) (rate(memini_op_duration_seconds_bucket{op=~\"answer|promote|dedup|distill_sem_wait\"}[$__rate_interval])))",
    -           "refId": "A",
    -           "legendFormat": "{{op}}"
    +           "expr": "histogram_quantile(0.90, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[5m])))",
    +           "legendFormat": "p90 {{route}}",
    +           "refId": "A"
    +         },
    +         {
    +           "datasource": {
    +             "type": "prometheus",
    +             "uid": "${DS_PROMETHEUS}"
    +           },
    +           "expr": "histogram_quantile(0.50, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[5m])))",
    +           "legendFormat": "p50 {{route}}",
    +           "refId": "B"
              }
            ]
          },
          {
    -       "id": 46,
    +       "id": 30,
            "type": "row",
    -       "title": "HTTP surface",
    +       "title": "Write-path signals",
    +       "collapsed": false,
            "gridPos": {
              "h": 1,
              "w": 24,
              "x": 0,
    -         "y": 108
    +         "y": 82
            },
    -       "collapsed": false,
            "panels": []
          },
          {
    -       "id": 47,
    +       "id": 31,
            "type": "timeseries",
    -       "title": "HTTP request rate by route & status class",
    -       "description": "Requests per second per route, grouped into status classes; red 5xx traffic is server failure, orange 4xx spikes usually mean a misconfigured client or expired key.",
    +       "title": "Corroboration routing",
    +       "description": "A fresh short-term write restating a durable fact: corroborated (confidence grown), cooldown (inside the 24h per-fact window), miss (no durable neighbour), error.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 0,
    -         "y": 109
    +         "y": 83
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "reqps",
    -           "min": 0
    -         },
    -         "overrides": [
    -           {
    -             "matcher": {
    -               "id": "byRegexp",
    -               "options": ".* 5xx"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "red"
    -                 }
    -               }
    -             ]
    -           },
    -           {
    -             "matcher": {
    -               "id": "byRegexp",
    -               "options": ".* 4xx"
    -             },
    -             "properties": [
    -               {
    -                 "id": "color",
    -                 "value": {
    -                   "mode": "fixed",
    -                   "fixedColor": "orange"
    -                 }
    -               }
    -             ]
    -           }
    -         ]
    -       },
    -       "options": {
    -         "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    -           "placement": "bottom",
    -           "showLegend": true
    -         },
    -         "tooltip": {
    -           "mode": "multi",
    -           "sort": "desc"
    -         }
    -       },
    -       "targets": [
    -         {
    -           "datasource": {
    -             "type": "prometheus",
    -             "uid": "${DS_PROMETHEUS}"
    +             "showPoints": "never"
                },
    -           "expr": "sum by (route, status_class) (label_replace(rate(memini_http_requests_total[$__rate_interval]), \"status_class\", \"$1\", \"status\", \"(.)..\"))",
    -           "refId": "A",
    -           "legendFormat": "{{route}} {{status_class}}xx"
    +           "unit": "short"
              }
    -       ]
    -     },
    -     {
    -       "id": 48,
    -       "type": "timeseries",
    -       "title": "HTTP p95 latency by route",
    -       "description": "95th-percentile HTTP latency per route as clients experience it; compare with the service-op view below to tell transport overhead from service work.",
    -       "datasource": {
    -         "type": "prometheus",
    -         "uid": "${DS_PROMETHEUS}"
    -       },
    -       "gridPos": {
    -         "h": 7,
    -         "w": 12,
    -         "x": 12,
    -         "y": 109
    -       },
    -       "fieldConfig": {
    -         "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
    -           "custom": {
    -             "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    -             "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "s",
    -           "min": 0
    -         },
    -         "overrides": []
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "histogram_quantile(0.95, sum by (route, le) (rate(memini_http_request_duration_seconds_bucket[$__rate_interval])))",
    -           "refId": "A",
    -           "legendFormat": "{{route}}"
    +           "expr": "sum by (result) (rate(memini_corroborate_results_total[5m]))",
    +           "legendFormat": "{{result}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 49,
    +       "id": 33,
            "type": "timeseries",
    -       "title": "Service op latency p95 by op",
    -       "description": "95th-percentile end-to-end latency of every public service operation (remember, recall, briefing, forget, ...); this is the service-internal view behind the HTTP numbers.",
    +       "title": "Contradiction routing",
    +       "description": "A fresh durable write that changes a fact's value or flips its polarity: contradicted (stale fact invalidated via valid_to + confidence shrink), no_signal (durable neighbour found but not a real change), cooldown (inside the 24h per-fact window), miss (no durable neighbour), error. Default-on; a contradicted rate far above expectation is the misfire smoke alarm (set MEMINI_CONTRADICT_DOWNRANK=false to disable).",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 0,
    -         "y": 116
    +         "y": 91
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "s",
    -           "min": 0
    -         },
    -         "overrides": []
    +           "unit": "short"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "histogram_quantile(0.95, sum by (op, le) (rate(memini_op_duration_seconds_bucket[$__rate_interval])))",
    -           "refId": "A",
    -           "legendFormat": "{{op}}"
    +           "expr": "sum by (result) (rate(memini_contradict_results_total[5m]))",
    +           "legendFormat": "{{result}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 50,
    +       "id": 32,
            "type": "timeseries",
    -       "title": "HTTP response size (search & briefing, p50 / p90)",
    -       "description": "Response body sizes for the two injection-critical routes; growth here directly inflates the tokens injected into agent context.",
    +       "title": "Tier classification & promotion",
    +       "description": "Omitted-tier writes the marker classifier routed to a durable tier, and facts produced by the promotion pass (LLM or marker extractor).",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    +         "h": 8,
              "w": 12,
              "x": 12,
    -         "y": 116
    +         "y": 83
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    +             "showPoints": "never"
                },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "bytes",
    -           "min": 0
    -         },
    -         "overrides": []
    +           "unit": "short"
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "histogram_quantile(0.50, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[$__rate_interval])))",
    -           "refId": "A",
    -           "legendFormat": "p50 {{route}}"
    +           "expr": "sum by (tier) (rate(memini_tier_classified_total[5m]))",
    +           "legendFormat": "classified -> {{tier}}",
    +           "refId": "A"
              },
              {
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "histogram_quantile(0.90, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[$__rate_interval])))",
    -           "refId": "B",
    -           "legendFormat": "p90 {{route}}"
    +           "expr": "sum(rate(memini_promote_facts_total[5m]))",
    +           "legendFormat": "promoted facts",
    +           "refId": "B"
              }
            ]
          },
          {
    -       "id": 51,
    +       "id": 40,
            "type": "row",
    -       "title": "Client injection telemetry",
    +       "title": "Injection efficiency (client telemetry)",
    +       "collapsed": false,
            "gridPos": {
              "h": 1,
              "w": 24,
              "x": 0,
    -         "y": 123
    +         "y": 99
            },
    -       "collapsed": false,
            "panels": []
          },
          {
    -       "id": 52,
    +       "id": 41,
            "type": "timeseries",
    -       "title": "Injection outcomes by result",
    -       "description": "Client-reported memory injections per second by outcome; suppressed_* series show why memories were withheld (already seen, cooldown, budget, unchanged, score) \u2014 a spike in suppressions with flat injections means the hooks are firing but delivering nothing.",
    +       "title": "Injection outcomes (by result)",
    +       "description": "What hooks reported actually reaching model context vs held back by their local gates (seen/cooldown/budget/unchanged/score). Absent entirely means no integration is reporting.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 12,
    +         "h": 8,
    +         "w": 8,
              "x": 0,
    -         "y": 124
    +         "y": 100
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
                  "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
                  "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    +               "mode": "normal"
                  }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": []
    +           }
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (result) (rate(memini_injected_memories_total[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{result}}"
    +           "expr": "sum by (result) (rate(memini_injected_memories_total[5m]))",
    +           "legendFormat": "{{result}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 53,
    +       "id": 42,
            "type": "timeseries",
    -       "title": "Injected memories by surface",
    -       "description": "Memories actually injected into model context per second, by hook surface (briefing, prompt, pretool); a silent surface means that hook is broken client-side.",
    +       "title": "Injected memories (by surface)",
    +       "description": "Memories that reached context, split by which hook surface put them there.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 6,
    -         "x": 12,
    -         "y": 124
    +         "h": 8,
    +         "w": 8,
    +         "x": 8,
    +         "y": 100
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "ops",
    -           "min": 0
    -         },
    -         "overrides": []
    +             "showPoints": "never"
    +           }
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [four lines unchanged)]
      
                "datasource": {
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
    -           "expr": "sum by (surface) (rate(memini_injected_memories_total{result=\"injected\"}[$__rate_interval]))",
    -           "refId": "A",
    -           "legendFormat": "{{surface}}"
    +           "expr": "sum by (surface) (rate(memini_injected_memories_total{result=\"injected\"}[5m]))",
    +           "legendFormat": "{{surface}}",
    +           "refId": "A"
              }
            ]
          },
          {
    -       "id": 54,
    +       "id": 43,
            "type": "timeseries",
    -       "title": "Injected tokens per hour by surface",
    -       "description": "Client-side estimate of context tokens injected per hour by surface; this is the direct context-budget cost of memini to the agent.",
    +       "title": "Injected tokens per hour (by surface)",
    +       "description": "Client-estimated tokens the hooks added to context. The number injection tuning should push down.",
            "datasource": {
              "type": "prometheus",
              "uid": "${DS_PROMETHEUS}"
            },
            "gridPos": {
    -         "h": 7,
    -         "w": 6,
    -         "x": 18,
    -         "y": 124
    +         "h": 8,
    +         "w": 8,
    +         "x": 16,
    +         "y": 100
            },
            "fieldConfig": {
              "defaults": {
    -           "color": {
    -             "mode": "palette-classic"
    -           },
                "custom": {
                  "drawStyle": "line",
    -             "lineInterpolation": "linear",
    -             "lineWidth": 1,
    +             "lineInterpolation": "smooth",
                  "fillOpacity": 10,
    -             "gradientMode": "none",
    -             "showPoints": "never",
    -             "pointSize": 5,
    -             "spanNulls": false,
    -             "stacking": {
    -               "mode": "none",
    -               "group": "A"
    -             },
    -             "axisPlacement": "auto",
    -             "axisLabel": "",
    -             "axisColorMode": "text",
    -             "scaleDistribution": {
    -               "type": "linear"
    -             },
    -             "hideFrom": {
    -               "legend": false,
    -               "tooltip": false,
    -               "viz": false
    -             },
    -             "thresholdsStyle": {
    -               "mode": "off"
    -             }
    -           },
    -           "thresholds": {
    -             "mode": "absolute",
    -             "steps": [
    -               {
    -                 "color": "green",
    -                 "value": null
    -               }
    -             ]
    -           },
    -           "unit": "none",
    -           "min": 0
    -         },
    -         "overrides": []
    +             "showPoints": "never"
    +           }
    +         }
            },
            "options": {
              "legend": {
    -           "calcs": [],
    -           "displayMode": "list",
    +           "displayMode": "table",
                "placement": "bottom",
    -           "showLegend": true
    +           "showLegend": true,
    +           "calcs": ["mean", "max"]
              },
              "tooltip": {
                "mode": "multi",
                "sort": "desc"
      
      [five lines unchanged)]
      
                  "type": "prometheus",
                  "uid": "${DS_PROMETHEUS}"
                },
                "expr": "sum by (surface) (increase(memini_injected_tokens_total[1h]))",
    -           "refId": "A",
    -           "legendFormat": "{{surface}}"
    +           "legendFormat": "{{surface}}",
    +           "refId": "A"
              }
            ]
          }
        ],
      
      [30 lines unchanged)]
      
        "timepicker": {},
        "timezone": "",
        "title": "memini",
        "uid": "memini",
    -   "version": 3,
    +   "version": 2,
        "weekStart": ""
      }
  
  

spec.template.spec.containers.main.image  (apps/v1/StatefulSet/local-ai/memini)
  ± value change
    - registry.erwanleboucher.dev/eleboucher/memini@sha256:6d28c3bc3a68ef3c528632a9b012144d4843f56a2f3f0c4812105d4713a49340
    + registry.erwanleboucher.dev/eleboucher/memini@sha256:2d388222bca3d65673a4072e99e0970fe0d5cdab0030ce0effdfdd78307ae7e2

Pipeline

## flate diff ``` data.memini.json (v1/ConfigMap/local-ai/memini-memini) ± value change in multiline text (271 inserts, 314 deletions) { "annotations": { "list": [] }, - "description": "memini operator dashboard \u2014 top-to-bottom narrative: live headline health (including the deferred-repair backlog), the write path, recall & retrieval quality, aging & maintenance jobs, embedder & rerank, LLM-backed consolidation/answer, the HTTP surface, and client injection telemetry.", + "description": "memini \u2014 what the service is actually doing for your agents. Live memory counts, write/recall traffic by tier, consolidation outcomes, store health, embedder & rerank latency & saturation, HTTP surface.", "editable": true, "graphTooltip": 1, "id": null, "links": [], [14 lines unchanged)] { "id": 2, "type": "stat", "title": "Live memories", - "description": "Total live (non-superseded, non-expired) memories across all tiers; a sudden drop means a sweep or dedup pass removed more than expected.", + "description": "Live (non-superseded, non-expired) memories by tier.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 5, - "w": 4, + "h": 6, + "w": 6, "x": 0, "y": 1 }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", - "orientation": "auto", + "orientation": "horizontal", "reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false [five lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum(memini_memories_active)", - "refId": "A", - "legendFormat": "live" + "expr": "memini_memories_active", + "legendFormat": "{{tier}}", + "refId": "A" } ] }, { "id": 3, "type": "stat", - "title": "Writes /s (5m)", - "description": "Successful Remember writes per second over the last 5m; zero during active agent sessions means writes are failing upstream.", + "title": "Writes (5m rate)", + "description": "Successful Remember calls per second, by tier.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 5, - "w": 3, - "x": 4, + "h": 6, + "w": 6, + "x": 6, "y": 1 }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "decimals": 2 - }, - "overrides": [] - }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", - "orientation": "auto", + "orientation": "horizontal", "reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false }, "textMode": "auto" }, + "fieldConfig": { + "defaults": { + "unit": "ops" + } + }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum(rate(memini_remember_results_total{result=\"ok\"}[5m]))", - "refId": "A", - "legendFormat": "writes/s" + "expr": "sum by (tier) (rate(memini_remember_results_total{result=\"ok\"}[5m]))", + "legendFormat": "{{tier}}", + "refId": "A" } ] }, { "id": 4, "type": "stat", - "title": "Recalls /s (5m)", - "description": "Successful Recall searches per second over the last 5m; the primary read-traffic pulse.", + "title": "Recalls (5m rate)", + "description": "Successful Recall calls per second.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 5, - "w": 3, - "x": 7, + "h": 6, + "w": 6, + "x": 12, "y": 1 }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "decimals": 2 - }, - "overrides": [] - }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", - "orientation": "auto", + "orientation": "horizontal", "reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false }, "textMode": "auto" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[5m]))", - "refId": "A", - "legendFormat": "recalls/s" - } - ] - }, - { - "id": 5, - "type": "stat", - "title": "HTTP 5xx ratio (15m)", - "description": "Share of HTTP requests answered 5xx over 15m; anything above zero deserves a look, above 5% is an outage.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 5, - "w": 3, - "x": 10, - "y": 1 - }, "fieldConfig": { "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "orange", - "value": 0.01 - }, - { - "color": "red", - "value": 0.05 - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" + "unit": "ops" + } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum(rate(memini_http_requests_total{status=~\"5..\"}[15m])) / clamp_min(sum(rate(memini_http_requests_total[15m])), 1e-9)", - "refId": "A", - "legendFormat": "5xx ratio" + "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[5m]))", + "legendFormat": "recalls/s", + "refId": "A" } ] }, { - "id": 6, + "id": 18, "type": "stat", - "title": "Repair backlog depth", - "description": "Memories currently owing deferred repair (pending + enrich + failed); green is empty, any sustained backlog means writes are storing degraded faster than repairs drain.", + "title": "Consolidation queue", + "description": "Backlog of memories awaiting async consolidation. Sustained > 0 means the worker can't keep up with Remember writes.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 5, - "w": 4, - "x": 13, + "h": 6, + "w": 6, + "x": 18, "y": 1 }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "orange", - "value": 1 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", - "orientation": "auto", + "orientation": "horizontal", "reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false }, "textMode": "auto" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum(memini_repair_depth)", - "refId": "A", - "legendFormat": "backlog" - } - ] - }, - { - "id": 7, - "type": "stat", - "title": "Repair oldest age", - "description": "Age of the oldest memory still awaiting repair; amber the moment anything waits, red past 1h means the repair loop is stuck or starved.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 5, - "w": 4, - "x": 17, - "y": 1 - }, "fieldConfig": { "defaults": { - "color": { - "mode": "thresholds" - }, + "unit": "short", "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { - "color": "orange", - "value": 1 + "color": "yellow", + "value": 50 }, { "color": "red", - "value": 3600 + "value": 500 } ] - }, - "unit": "s" - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "max(memini_repair_oldest_age_seconds)", - "refId": "A", - "legendFormat": "oldest" + } } - ] - }, - { - "id": 8, - "type": "stat", - "title": "Consolidation queue", - "description": "Depth of the async consolidation queue; a queue that grows without draining delays dedup/supersede decisions.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 5, - "w": 3, - "x": 21, - "y": 1 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "orange", - "value": 100 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "memini_consolidate_queue_depth", - "refId": "A", - "legendFormat": "queued" + "legendFormat": "queued", + "refId": "A" } ] }, { - "id": 9, + "id": 5, "type": "row", - "title": "Write path", + "title": "Writes & Recalls", "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 6 + "y": 7 }, "collapsed": false, "panels": [] }, { - "id": 10, + "id": 6, "type": "timeseries", - "title": "Remember rate by tier", - "description": "Successful Remember writes per second split by tier, plus error/dropped outcomes; red or orange series above zero mean writes are being lost.", + "title": "Remembers per second (by tier)", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 0, - "y": 7 + "y": 8 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "dropped" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] + "unit": "ops" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (tier) (rate(memini_remember_results_total{result=\"ok\"}[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{tier}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum(rate(memini_remember_results_total{result=\"error\"}[$__rate_interval]))", - "refId": "B", - "legendFormat": "error" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum(rate(memini_remember_results_total{result=\"dropped\"}[$__rate_interval]))", - "refId": "C", - "legendFormat": "dropped" + "expr": "sum by (tier) (rate(memini_remember_results_total{result=\"ok\"}[5m]))", + "legendFormat": "{{tier}}", + "refId": "A" } ] }, { - "id": 11, + "id": 7, "type": "timeseries", - "title": "Degraded (vectorless) writes by reason", - "description": "Writes stored without a vector (keyword-searchable only, queued for deferred repair) because the embedder timed out or errored; any sustained rate means the embedder is unhealthy.", + "title": "Recalls per second (by hit-count bucket)", + "description": "How many memories a typical recall returns. '0' means no matches \u2014 investigate if persistent.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 12, - "y": 7 + "y": 8 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "embed_error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "embed_timeout" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] + "unit": "ops" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (reason) (rate(memini_remember_degraded_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{reason}}" + "expr": "sum by (hits_bucket) (rate(memini_recall_results_total{result=\"ok\"}[5m]))", + "legendFormat": "{{hits_bucket}}", + "refId": "A" } ] }, { - "id": 12, + "id": 19, + "type": "row", + "title": "Retrieval quality", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "collapsed": false, + "panels": [] + }, + { + "id": 20, "type": "timeseries", - "title": "Store mutations", - "description": "Raw store write traffic: inserts vs updates (by upsert op), hard deletes from Forget, and tombstones written by consolidation; updates dominating inserts means most writes reinforce existing memories.", + "title": "Rerank outcomes by backend", + "description": "Per-recall reranker traffic: ok = reranker reordered the fused candidates; fallback = reranker timed out / errored and the fused order was kept.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 0, - "y": 14 + "y": 17 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "lineInterpolation": "smooth", + "fillOpacity": 15, + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [] + "unit": "ops" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (op) (rate(memini_store_upserts_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "upsert: {{op}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "rate(memini_store_deletes_total[$__rate_interval])", - "refId": "B", - "legendFormat": "hard delete (forget)" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "rate(memini_store_soft_deletes_total[$__rate_interval])", - "refId": "C", - "legendFormat": "tombstone (supersede)" + "expr": "sum by (backend, result) (rate(memini_rerank_results_total[5m]))", + "legendFormat": "{{backend}}/{{result}}", + "refId": "A" } ] }, { - "id": 13, + "id": 21, "type": "timeseries", - "title": "Forget & supersede outcomes", - "description": "Forget and Supersede API outcomes per second; red error series should stay at zero, orange not_found spikes usually mean a client is retrying stale ids.", + "title": "Recall degradation reasons", + "description": "Recalls that fell back to keyword-only search because the embedder was slow or errored. embed_timeout = the recall embed budget elapsed; embed_error = the embed call failed.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 12, - "y": 14 + "y": 17 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "lineInterpolation": "smooth", + "fillOpacity": 15, + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byRegexp", - "options": ".*error.*" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - }, - { - "matcher": { - "id": "byRegexp", - "options": ".*not_found.*" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] + "unit": "ops" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (result) (rate(memini_forget_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "forget: {{result}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (result) (rate(memini_supersede_results_total[$__rate_interval]))", - "refId": "B", - "legendFormat": "supersede: {{result}}" + "expr": "sum by (reason) (rate(memini_recall_degraded_total[5m]))", + "legendFormat": "{{reason}}", + "refId": "A" } ] }, { - "id": 14, + "id": 22, "type": "timeseries", - "title": "Content hygiene (sanitizer)", - "description": "Ingestion sanitizer actions: cleaned content was rewritten in place, quarantined (orange) content was judged unsafe to store as-is and needs review if it becomes frequent.", + "title": "Recall reinforcement (best-effort)", + "description": "Background access-count bump on recalled memories. Errors are swallowed \u2014 a sustained nonzero error rate means the store write path is unhealthy but recall still served.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 8, + "h": 8, + "w": 12, "x": 0, - "y": 21 + "y": 25 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "lineInterpolation": "smooth", + "fillOpacity": 15, + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "quarantined" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] + "unit": "ops" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (action) (rate(memini_write_sanitized_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{action}}" + "expr": "sum by (result) (rate(memini_reinforce_results_total[5m]))", + "legendFormat": "{{result}}", + "refId": "A" } ] }, { - "id": 15, - "type": "timeseries", - "title": "Corroboration routing", - "description": "Corroboration attempts on fresh short-term writes (did this confirm something we already know); a rising red error rate means the corroboration path is failing writes silently.", + "id": 23, + "type": "stat", + "title": "Recall success ratio", + "description": "Fraction of recall calls that succeeded. A drop means the recall path is erroring (embed + keyword + rerank + RRF + everything).", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 21 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - } - ] + "h": 8, + "w": 12, + "x": 12, + "y": 25 }, "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "colorMode": "value", + "graphMode": "area", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (result) (rate(memini_corroborate_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{result}}" - } - ] - }, - { - "id": 16, - "type": "timeseries", - "title": "Contradiction routing", - "description": "Contradiction attempts on fresh durable writes (did this contradict an existing fact); contradicted events drive supersession, red errors mean conflicts are going undetected.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 21 + "textMode": "auto" }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, + "unit": "percentunit", + "min": 0, + "max": 1, "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", + "color": "red", "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ + }, + { + "color": "yellow", + "value": 0.95 + }, { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } + "color": "green", + "value": 0.99 } ] } - ] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (result) (rate(memini_contradict_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{result}}" + "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[15m])) / clamp_min(sum(rate(memini_recall_results_total[15m])), 1e-9)", + "legendFormat": "ok ratio", + "refId": "A" } ] }, { - "id": 17, + "id": 8, "type": "row", - "title": "Recall & retrieval quality", + "title": "Consolidation (LLM dedup)", "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 28 + "y": 33 }, "collapsed": false, "panels": [] }, { - "id": 18, + "id": 9, "type": "timeseries", - "title": "Recall rate by hit-count bucket", - "description": "Successful recalls per second split by how many hits they returned, plus errors; a shift toward the 0-hits bucket means retrieval quality is degrading.", + "title": "Consolidation outcomes per minute", + "description": "gated = similarity gate skipped the LLM; new = nothing to merge; update = merged into an existing memory; supersede = contradiction-tombstoned an old one; noop = nothing to do; error/dropped = failure modes.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 12, + "h": 8, + "w": 16, "x": 0, - "y": 29 + "y": 34 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", + "lineInterpolation": "smooth", + "fillOpacity": 20, "showPoints": "never", - "pointSize": 5, - "spanNulls": false, "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" + "mode": "normal" } }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - } - ] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" + "unit": "ops" } }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (hits_bucket) (rate(memini_recall_results_total{result=\"ok\"}[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{hits_bucket}} hits" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum(rate(memini_recall_results_total{result=\"error\"}[$__rate_interval]))", - "refId": "B", - "legendFormat": "error" - } - ] - }, - { - "id": 19, - "type": "timeseries", - "title": "Recall degradation (keyword-only fallback)", - "description": "Recalls that fell back to keyword-only search because embedding the query timed out or errored; these return without semantic ranking, so any sustained rate hurts result quality.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 29 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "embed_error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "embed_timeout" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] - }, "options": { "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (reason) (rate(memini_recall_degraded_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{reason}}" - } - ] - }, - { - "id": 20, - "type": "timeseries", - "title": "Recall candidates floored (by tier filter)", - "description": "Candidates dropped from recall responses by the min_rank_score composite floor; a jump means the floor (or a scoring regression) is hiding results users would previously have seen.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 36 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (tier_filter) (rate(memini_recall_floored_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{tier_filter}}" - } - ] - }, - { - "id": 21, - "type": "timeseries", - "title": "Recall reinforcement", - "description": "Best-effort reinforcement writes triggered by recall hits (strengthening recalled memories); red errors mean reinforcement is silently failing and ranking will slowly stale.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 36 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - } - ] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "displayMode": "table", + "placement": "right", + "showLegend": true, + "calcs": ["sum"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (result) (rate(memini_reinforce_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{result}}" + "expr": "sum by (result) (rate(memini_consolidate_results_total[5m]))", + "legendFormat": "{{result}}", + "refId": "A" } ] }, { - "id": 22, + "id": 10, "type": "stat", - "title": "Recall success ratio (15m)", - "description": "Share of Recall calls that completed without error over 15m; below 99% something in the search path is failing.", + "title": "Dedup effectiveness", + "description": "Fraction of consolidations that actually used the LLM (update+supersede+new+noop) vs the similarity gate skipping it. Higher = busier corpus or noisier dedup signal.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 16, - "y": 36 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "orange", - "value": 0.9 - }, - { - "color": "green", - "value": 0.99 - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] + "y": 34 }, "options": { "colorMode": "value", "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", "reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false }, "textMode": "auto" }, + "fieldConfig": { + "defaults": { + "unit": "percentunit", + "min": 0, + "max": 1 + } + }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum(rate(memini_recall_results_total{result=\"ok\"}[15m])) / clamp_min(sum(rate(memini_recall_results_total[15m])), 1e-9)", - "refId": "A", - "legendFormat": "ok ratio" + "expr": "sum(rate(memini_consolidate_results_total{result=~\"update|supersede|new|noop\"}[15m])) / clamp_min(sum(rate(memini_consolidate_results_total{result!~\"error|dropped\"}[15m])), 1e-9)", + "legendFormat": "LLM use ratio", + "refId": "A" } ] }, { - "id": 23, + "id": 11, "type": "row", - "title": "Aging & maintenance", + "title": "Storage & decay", "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 43 + "y": 42 }, "collapsed": false, "panels": [] }, { - "id": 24, + "id": 12, "type": "timeseries", "title": "Live memories by tier", - "description": "Live memory count per tier over time; working/episodic should churn while semantic/procedural grow slowly \u2014 a cliff in any tier means a sweep or dedup removed too much.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 0, - "y": 44 + "y": 43 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", + "lineInterpolation": "stepAfter", + "fillOpacity": 15, "showPoints": "never", - "pointSize": 5, - "spanNulls": false, "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" + "mode": "normal" } }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [] + "unit": "short" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "displayMode": "table", + "placement": "right", + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (tier) (memini_memories_active)", - "refId": "A", - "legendFormat": "{{tier}}" + "expr": "memini_memories_active", + "legendFormat": "{{tier}}", + "refId": "A" } ] }, { - "id": 25, + "id": 13, "type": "timeseries", - "title": "Promotion, classification & demotion (per hour)", - "description": "Hourly outcomes of the episodic-to-semantic promotion pass, durable facts it wrote, and omitted-tier writes the marker classifier routed; red promote errors mean durable knowledge is not being distilled. Demotions are the mirror image: stale, never-recalled durable memories retiered down to episodic \u2014 a steady demotion stream usually means bulk-imported debris aging out.", + "title": "Decay sweep + tombstones (per minute)", + "description": "Swept = memories purged by TTL; soft deletes = contradictions tombstoned by consolidation; dedup tombstones = tombstoned by the periodic dedup pass.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 12, - "y": 44 + "y": 43 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] + "lineInterpolation": "stepAfter", + "fillOpacity": 15, + "showPoints": "never" }, - "unit": "none", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "promote: error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - } - ] + "unit": "ops" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["sum"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (result) (increase(memini_promote_results_total[1h]))", - "refId": "A", - "legendFormat": "promote: {{result}}" + "expr": "sum by (tier) (rate(memini_store_swept_total[5m]))", + "legendFormat": "swept/{{tier}}", + "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum(increase(memini_promote_facts_total[1h]))", - "refId": "B", - "legendFormat": "facts promoted" + "expr": "rate(memini_store_soft_deletes_total[5m])", + "legendFormat": "consolidate tombstones", + "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (tier) (increase(memini_tier_classified_total[1h]))", - "refId": "C", - "legendFormat": "classified \u2192 {{tier}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (tier) (increase(memini_demoted_total[1h]))", - "legendFormat": "demoted from {{tier}}", - "refId": "D" + "expr": "rate(memini_dedup_tombstoned_total[5m])", + "legendFormat": "dedup tombstones", + "refId": "C" } ] }, { - "id": 26, - "type": "timeseries", - "title": "Decay sweeps & dedup tombstones", - "description": "Memories purged by the decay sweeper (by tier) and tombstoned by the dedup pass, per second; sustained zero forever means aging jobs are not running.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, + "id": 14, + "type": "row", + "title": "Embedder & rerank", "gridPos": { - "h": 7, - "w": 12, + "h": 1, + "w": 24, "x": 0, "y": 51 }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (tier) (rate(memini_store_swept_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "swept: {{tier}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "rate(memini_dedup_tombstoned_total[$__rate_interval])", - "refId": "B", - "legendFormat": "dedup tombstoned" - } - ] + "collapsed": false, + "panels": [] }, { - "id": 27, + "id": 15, "type": "timeseries", - "title": "Fsck outcomes (per hour)", - "description": "Hourly consistency-sweep outcomes; red errors mean the store's self-check cannot complete and silent corruption may go unnoticed.", + "title": "Embedder p95 latency (by backend)", + "description": "openai = real network calls; cached/diskcache/batched = local cache or fan-out; disabled = no endpoint configured.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, - "x": 12, - "y": 51 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - } - ] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (result) (increase(memini_fsck_results_total[1h]))", - "refId": "A", - "legendFormat": "{{result}}" - } - ] - }, - { - "id": 28, - "type": "timeseries", - "title": "Repair backlog depth by state", - "description": "Memories owing deferred repair, split by state; red failed entries are permanently vectorless without operator action, and a growing pending line means the repair loop cannot keep up.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 8, "x": 0, - "y": 58 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "failed" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - } - ] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (state) (memini_repair_depth)", - "refId": "A", - "legendFormat": "{{state}}" - } - ] - }, - { - "id": 29, - "type": "timeseries", - "title": "Repair oldest age by state", - "description": "Age of the oldest memory in each repair state; growth without bound means repairs are queued faster than they drain (the red line marks the 1h alarm threshold).", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 58 + "y": 52 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "line" - } + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 3600 - } - ] - }, - "unit": "s", - "min": 0 - }, - "overrides": [] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" + "unit": "s" } }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "max by (state) (memini_repair_oldest_age_seconds)", - "refId": "A", - "legendFormat": "{{state}}" - } - ] - }, - { - "id": 30, - "type": "timeseries", - "title": "Backfill pending", - "description": "Memories still awaiting embedding backfill and long memories still without chunk vectors; a number that never falls means those memories are unreachable by semantic (or chunked) recall.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 58 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [] - }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "memini_embed_backfill_pending", - "refId": "A", - "legendFormat": "pending embed" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "memini_chunk_backfill_pending", - "refId": "B", - "legendFormat": "pending chunk vectors" + "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_duration_seconds_bucket[5m])))", + "legendFormat": "p95 {{backend}}", + "refId": "A" } ] }, { - "id": 31, + "id": 16, "type": "timeseries", - "title": "Repair outcomes by stage", - "description": "Deferred-repair attempt outcomes per second by stage; red parked means a memory gave up retrying and stays vectorless, orange retry churn means the embedder keeps failing under the repair loop.", + "title": "Embedder tokens + error rate", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, - "x": 0, - "y": 65 + "x": 12, + "y": 52 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byRegexp", - "options": ".*parked.*" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - }, - { - "matcher": { - "id": "byRegexp", - "options": ".*retry.*" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] + "showPoints": "never" } - ] + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (stage, result) (rate(memini_repair_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{stage}}: {{result}}" - } - ] - }, - { - "id": 32, - "type": "timeseries", - "title": "Repair duration p95 by stage", - "description": "95th-percentile latency of a single deferred repair by stage; climbing durations shrink repair throughput and grow the backlog.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 65 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "s", - "min": 0 + "expr": "sum by (backend) (rate(memini_embed_tokens_total[5m]))", + "legendFormat": "tokens/s {{backend}}", + "refId": "A" }, - "overrides": [] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "histogram_quantile(0.95, sum by (stage, le) (rate(memini_repair_duration_seconds_bucket[$__rate_interval])))", - "refId": "A", - "legendFormat": "{{stage}}" + "expr": "sum by (backend) (rate(memini_embed_errors_total[5m]))", + "legendFormat": "err/s {{backend}}", + "refId": "B" } ] }, { - "id": 33, - "type": "row", - "title": "Embedder & rerank", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 72 - }, - "collapsed": false, - "panels": [] - }, - { - "id": 34, - "type": "timeseries", - "title": "Embedder p95 latency by backend", - "description": "95th-percentile embedder call latency per backend layer; the openai layer reflects the real provider, cached/diskcache should stay near zero.", + "id": 24, + "type": "stat", + "title": "Embedder in-flight", + "description": "Concurrent embed calls against the backend (post-cap, excludes cache hits). Spikes during ingest storms are normal; sustained values near the cap mean the embedder is the bottleneck.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 12, + "h": 4, + "w": 8, "x": 0, - "y": 73 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "s", - "min": 0 - }, - "overrides": [] + "y": 60 }, "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_duration_seconds_bucket[$__rate_interval])))", - "refId": "A", - "legendFormat": "{{backend}}" - } - ] - }, - { - "id": 35, - "type": "timeseries", - "title": "Rerank outcomes by backend", - "description": "Recall rerank attempts per second by backend and result; orange fallback means the reranker failed or timed out and results shipped with pre-rerank ordering.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 73 + "textMode": "auto" }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byRegexp", - "options": ".*fallback.*" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" + "unit": "short" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (backend, result) (rate(memini_rerank_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{backend}}: {{result}}" + "expr": "memini_embed_in_flight", + "legendFormat": "embed in-flight", + "refId": "A" } ] }, { - "id": 36, - "type": "timeseries", - "title": "Embedder tokens/s by backend", - "description": "Embedding tokens consumed per second as reported by the API (openai backend only); this is the embed cost driver.", + "id": 25, + "type": "stat", + "title": "Rerank in-flight", + "description": "Concurrent rerank calls. A nonzero value indicates rerank is configured; if this stays pinned at the cap, the reranker is the bottleneck.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 4, "w": 8, - "x": 0, - "y": 80 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [] + "x": 8, + "y": 60 }, "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum by (backend) (rate(memini_embed_tokens_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{backend}}" - } - ] - }, - { - "id": 37, - "type": "timeseries", - "title": "Embedder errors by backend", - "description": "Embedder failures per second by backend; any sustained nonzero rate here explains degraded writes and keyword-only recalls elsewhere on this board.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 80 + "textMode": "auto" }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" + "unit": "short" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (backend) (rate(memini_embed_errors_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{backend}}" + "expr": "memini_rerank_in_flight", + "legendFormat": "rerank in-flight", + "refId": "A" } ] }, { - "id": 38, + "id": 26, "type": "timeseries", - "title": "Embedder batch size (p50 / p95)", - "description": "Texts per Embed call at the median and 95th percentile; batches stuck at 1 mean the batcher is not coalescing and each write pays a full round trip.", + "title": "Embedder batch size (p50 vs p95)", + "description": "Items per embed call, by backend. batched shows a single high-p95 bar; cached should be ~1.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 4, "w": 8, "x": 16, - "y": 80 + "y": 60 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" + "lineInterpolation": "smooth", + "fillOpacity": 5, + "showPoints": "never" + } } }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "histogram_quantile(0.50, sum by (backend, le) (rate(memini_embed_items_bucket[$__rate_interval])))", - "refId": "A", - "legendFormat": "p50 {{backend}}" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_items_bucket[$__rate_interval])))", - "refId": "B", - "legendFormat": "p95 {{backend}}" - } - ] - }, - { - "id": 39, - "type": "timeseries", - "title": "In-flight embed & rerank calls", - "description": "Concurrent calls currently held against the embedding and rerank backends; pinned at the concurrency cap means requests are queueing behind the limiter.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 6, - "w": 24, - "x": 0, - "y": 87 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [] - }, "options": { "legend": { - "calcs": [], "displayMode": "list", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "memini_embed_in_flight", - "refId": "A", - "legendFormat": "embed" + "expr": "histogram_quantile(0.5, sum by (backend, le) (rate(memini_embed_items_bucket[5m])))", + "legendFormat": "p50 {{backend}}", + "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "memini_rerank_in_flight", - "refId": "B", - "legendFormat": "rerank" + "expr": "histogram_quantile(0.95, sum by (backend, le) (rate(memini_embed_items_bucket[5m])))", + "legendFormat": "p95 {{backend}}", + "refId": "B" } ] }, { - "id": 40, + "id": 27, "type": "row", - "title": "LLM \u2014 consolidation & answer (empty without an LLM configured)", + "title": "HTTP surface", "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 93 + "y": 64 }, "collapsed": false, "panels": [] }, { - "id": 41, + "id": 28, "type": "timeseries", - "title": "Consolidation outcomes", - "description": "LLM consolidation decisions per second (gated, new, update, supersede, noop); red errors or orange drops mean writes are skipping dedup and duplicates will accumulate.", + "title": "HTTP requests by route (status class)", + "description": "Per-route request rate broken down by 2xx / 4xx / 5xx. 5xx spikes point at a broken handler; 4xx spikes usually mean client misuse or a misconfigured agent.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 12, + "h": 8, + "w": 16, "x": 0, - "y": 94 + "y": 65 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", + "lineInterpolation": "smooth", + "fillOpacity": 15, "showPoints": "never", - "pointSize": 5, - "spanNulls": false, "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" + "mode": "normal" } }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "dropped" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] + "unit": "ops" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "displayMode": "table", + "placement": "right", + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (result) (rate(memini_consolidate_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{result}}" + "expr": "sum by (route, status) (label_replace(rate(memini_http_requests_total[5m]), \"status_class\", \"$1\", \"status\", \"(...).\"))", + "legendFormat": "{{route}} {{status_class}}xx", + "refId": "A" } ] }, { - "id": 42, + "id": 29, "type": "timeseries", - "title": "Consolidation queue depth", - "description": "Async consolidation queue depth over time; a sawtooth is normal, monotonic growth means the LLM cannot keep pace with write volume.", + "title": "HTTP p95 latency by route", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 6, - "x": 12, - "y": 94 + "h": 8, + "w": 8, + "x": 16, + "y": 65 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [] + "unit": "s" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": false + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "memini_consolidate_queue_depth", - "refId": "A", - "legendFormat": "queue depth" + "expr": "histogram_quantile(0.95, sum by (route, le) (rate(memini_http_request_duration_seconds_bucket[5m])))", + "legendFormat": "p95 {{route}}", + "refId": "A" } ] }, { - "id": 43, - "type": "stat", - "title": "Dedup effectiveness (15m)", - "description": "Share of consolidated writes that matched an existing memory (update/supersede/noop) rather than creating a new one; a sudden drop to zero suggests the matcher is broken.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 94 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "expr": "sum(rate(memini_consolidate_results_total{result=~\"update|supersede|noop\"}[15m])) / clamp_min(sum(rate(memini_consolidate_results_total{result=~\"new|update|supersede|noop\"}[15m])), 1e-9)", - "refId": "A", - "legendFormat": "matched" - } - ] - }, - { - "id": 44, + "id": 17, "type": "timeseries", - "title": "Answer outcomes", - "description": "Answer API (LLM-synthesized answers over recall) outcomes per second; red errors mean answer requests are burning LLM budget without returning.", + "title": "End-to-end op latency p95 (by op)", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 12, + "h": 8, + "w": 16, "x": 0, - "y": 101 + "y": 73 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "lineInterpolation": "smooth", + "fillOpacity": 5, + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "error" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - } - ] + "unit": "s" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "displayMode": "table", + "placement": "right", + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (result) (rate(memini_answer_results_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{result}}" + "expr": "histogram_quantile(0.95, sum by (op, le) (rate(memini_op_duration_seconds_bucket[5m])))", + "legendFormat": "{{op}}", + "refId": "A" } ] }, { - "id": 45, + "id": 34, "type": "timeseries", - "title": "LLM op latency p95", - "description": "95th-percentile end-to-end latency of the LLM-backed service ops (answer, promote, dedup, semantic distillation wait); these dominate tail latency when the LLM slows down.", + "title": "HTTP response size by route (p50/p90)", + "description": "Body bytes shipped per response. The recall/briefing routes are what hooks inject from — watch these when tuning context-injection volume.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 101 + "h": 8, + "w": 8, + "x": 16, + "y": 73 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] + "showPoints": "never" }, - "unit": "s", - "min": 0 - }, - "overrides": [] + "unit": "bytes" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "histogram_quantile(0.95, sum by (op, le) (rate(memini_op_duration_seconds_bucket{op=~\"answer|promote|dedup|distill_sem_wait\"}[$__rate_interval])))", - "refId": "A", - "legendFormat": "{{op}}" + "expr": "histogram_quantile(0.90, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[5m])))", + "legendFormat": "p90 {{route}}", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.50, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[5m])))", + "legendFormat": "p50 {{route}}", + "refId": "B" } ] }, { - "id": 46, + "id": 30, "type": "row", - "title": "HTTP surface", + "title": "Write-path signals", + "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 108 + "y": 82 }, - "collapsed": false, "panels": [] }, { - "id": 47, + "id": 31, "type": "timeseries", - "title": "HTTP request rate by route & status class", - "description": "Requests per second per route, grouped into status classes; red 5xx traffic is server failure, orange 4xx spikes usually mean a misconfigured client or expired key.", + "title": "Corroboration routing", + "description": "A fresh short-term write restating a durable fact: corroborated (confidence grown), cooldown (inside the 24h per-fact window), miss (no durable neighbour), error.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 0, - "y": 109 + "y": 83 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps", - "min": 0 - }, - "overrides": [ - { - "matcher": { - "id": "byRegexp", - "options": ".* 5xx" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "red" - } - } - ] - }, - { - "matcher": { - "id": "byRegexp", - "options": ".* 4xx" - }, - "properties": [ - { - "id": "color", - "value": { - "mode": "fixed", - "fixedColor": "orange" - } - } - ] - } - ] - }, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" + "showPoints": "never" }, - "expr": "sum by (route, status_class) (label_replace(rate(memini_http_requests_total[$__rate_interval]), \"status_class\", \"$1\", \"status\", \"(.)..\"))", - "refId": "A", - "legendFormat": "{{route}} {{status_class}}xx" + "unit": "short" } - ] - }, - { - "id": 48, - "type": "timeseries", - "title": "HTTP p95 latency by route", - "description": "95th-percentile HTTP latency per route as clients experience it; compare with the service-op view below to tell transport overhead from service work.", - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 109 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, - "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "s", - "min": 0 - }, - "overrides": [] }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "histogram_quantile(0.95, sum by (route, le) (rate(memini_http_request_duration_seconds_bucket[$__rate_interval])))", - "refId": "A", - "legendFormat": "{{route}}" + "expr": "sum by (result) (rate(memini_corroborate_results_total[5m]))", + "legendFormat": "{{result}}", + "refId": "A" } ] }, { - "id": 49, + "id": 33, "type": "timeseries", - "title": "Service op latency p95 by op", - "description": "95th-percentile end-to-end latency of every public service operation (remember, recall, briefing, forget, ...); this is the service-internal view behind the HTTP numbers.", + "title": "Contradiction routing", + "description": "A fresh durable write that changes a fact's value or flips its polarity: contradicted (stale fact invalidated via valid_to + confidence shrink), no_signal (durable neighbour found but not a real change), cooldown (inside the 24h per-fact window), miss (no durable neighbour), error. Default-on; a contradicted rate far above expectation is the misfire smoke alarm (set MEMINI_CONTRADICT_DOWNRANK=false to disable).", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 0, - "y": 116 + "y": 91 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "s", - "min": 0 - }, - "overrides": [] + "unit": "short" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "histogram_quantile(0.95, sum by (op, le) (rate(memini_op_duration_seconds_bucket[$__rate_interval])))", - "refId": "A", - "legendFormat": "{{op}}" + "expr": "sum by (result) (rate(memini_contradict_results_total[5m]))", + "legendFormat": "{{result}}", + "refId": "A" } ] }, { - "id": 50, + "id": 32, "type": "timeseries", - "title": "HTTP response size (search & briefing, p50 / p90)", - "description": "Response body sizes for the two injection-critical routes; growth here directly inflates the tokens injected into agent context.", + "title": "Tier classification & promotion", + "description": "Omitted-tier writes the marker classifier routed to a durable tier, and facts produced by the promotion pass (LLM or marker extractor).", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 12, - "y": 116 + "y": 83 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } + "showPoints": "never" }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "bytes", - "min": 0 - }, - "overrides": [] + "unit": "short" + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "histogram_quantile(0.50, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[$__rate_interval])))", - "refId": "A", - "legendFormat": "p50 {{route}}" + "expr": "sum by (tier) (rate(memini_tier_classified_total[5m]))", + "legendFormat": "classified -> {{tier}}", + "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "histogram_quantile(0.90, sum by (route, le) (rate(memini_http_response_bytes_bucket{route=~\"/v1/search|/v1/namespaces/briefing\"}[$__rate_interval])))", - "refId": "B", - "legendFormat": "p90 {{route}}" + "expr": "sum(rate(memini_promote_facts_total[5m]))", + "legendFormat": "promoted facts", + "refId": "B" } ] }, { - "id": 51, + "id": 40, "type": "row", - "title": "Client injection telemetry", + "title": "Injection efficiency (client telemetry)", + "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 123 + "y": 99 }, - "collapsed": false, "panels": [] }, { - "id": 52, + "id": 41, "type": "timeseries", - "title": "Injection outcomes by result", - "description": "Client-reported memory injections per second by outcome; suppressed_* series show why memories were withheld (already seen, cooldown, budget, unchanged, score) \u2014 a spike in suppressions with flat injections means the hooks are firing but delivering nothing.", + "title": "Injection outcomes (by result)", + "description": "What hooks reported actually reaching model context vs held back by their local gates (seen/cooldown/budget/unchanged/score). Absent entirely means no integration is reporting.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 12, + "h": 8, + "w": 8, "x": 0, - "y": 124 + "y": 100 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", "showPoints": "never", - "pointSize": 5, - "spanNulls": false, "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" + "mode": "normal" } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [] + } + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (result) (rate(memini_injected_memories_total[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{result}}" + "expr": "sum by (result) (rate(memini_injected_memories_total[5m]))", + "legendFormat": "{{result}}", + "refId": "A" } ] }, { - "id": 53, + "id": 42, "type": "timeseries", - "title": "Injected memories by surface", - "description": "Memories actually injected into model context per second, by hook surface (briefing, prompt, pretool); a silent surface means that hook is broken client-side.", + "title": "Injected memories (by surface)", + "description": "Memories that reached context, split by which hook surface put them there.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 6, - "x": 12, - "y": 124 + "h": 8, + "w": 8, + "x": 8, + "y": 100 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "ops", - "min": 0 - }, - "overrides": [] + "showPoints": "never" + } + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [four lines unchanged)] "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum by (surface) (rate(memini_injected_memories_total{result=\"injected\"}[$__rate_interval]))", - "refId": "A", - "legendFormat": "{{surface}}" + "expr": "sum by (surface) (rate(memini_injected_memories_total{result=\"injected\"}[5m]))", + "legendFormat": "{{surface}}", + "refId": "A" } ] }, { - "id": 54, + "id": 43, "type": "timeseries", - "title": "Injected tokens per hour by surface", - "description": "Client-side estimate of context tokens injected per hour by surface; this is the direct context-budget cost of memini to the agent.", + "title": "Injected tokens per hour (by surface)", + "description": "Client-estimated tokens the hooks added to context. The number injection tuning should push down.", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 124 + "h": 8, + "w": 8, + "x": 16, + "y": 100 }, "fieldConfig": { "defaults": { - "color": { - "mode": "palette-classic" - }, "custom": { "drawStyle": "line", - "lineInterpolation": "linear", - "lineWidth": 1, + "lineInterpolation": "smooth", "fillOpacity": 10, - "gradientMode": "none", - "showPoints": "never", - "pointSize": 5, - "spanNulls": false, - "stacking": { - "mode": "none", - "group": "A" - }, - "axisPlacement": "auto", - "axisLabel": "", - "axisColorMode": "text", - "scaleDistribution": { - "type": "linear" - }, - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none", - "min": 0 - }, - "overrides": [] + "showPoints": "never" + } + } }, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": true, + "calcs": ["mean", "max"] }, "tooltip": { "mode": "multi", "sort": "desc" [five lines unchanged)] "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "sum by (surface) (increase(memini_injected_tokens_total[1h]))", - "refId": "A", - "legendFormat": "{{surface}}" + "legendFormat": "{{surface}}", + "refId": "A" } ] } ], [30 lines unchanged)] "timepicker": {}, "timezone": "", "title": "memini", "uid": "memini", - "version": 3, + "version": 2, "weekStart": "" } spec.template.spec.containers.main.image (apps/v1/StatefulSet/local-ai/memini) ± value change - registry.erwanleboucher.dev/eleboucher/memini@sha256:6d28c3bc3a68ef3c528632a9b012144d4843f56a2f3f0c4812105d4713a49340 + registry.erwanleboucher.dev/eleboucher/memini@sha256:2d388222bca3d65673a4072e99e0970fe0d5cdab0030ce0effdfdd78307ae7e2 ``` [Pipeline](https://ci.aether.earth/repos/4/pipeline/701)
renovate-bot force-pushed renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x from fc1db8babc
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
to 78f2585b7e
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
2026-10-22 18:09:25 +00:00
Compare
renovate-bot changed title from chore(deps): update ghcr.io/perfectra1n/kubesearch-mcp docker tag to v1.2.0 to chore(deps): update ghcr.io/perfectra1n/kubesearch-mcp docker tag to v1.3.0 2026-10-22 18:09:27 +00:00
Member

flate diff

No differences detected.

Pipeline

## flate diff No differences detected. [Pipeline](https://ci.aether.earth/repos/4/pipeline/704)
All checks were successful
ci/crow/pr/dns-test Pipeline was successful
ci/crow/push/dns-test Pipeline was successful
ci/crow/push/tanka-test Pipeline was successful
ci/crow/pr/tanka-test Pipeline was successful
ci/crow/pr/tanka-diff Pipeline was successful
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x:renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git switch renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x

Merge

Merge the changes and update on Forgejo.
git switch main
git merge --no-ff renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git switch renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git rebase main
git switch main
git merge --ff-only renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git switch renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git rebase main
git switch main
git merge --no-ff renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git switch main
git merge --squash renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git switch main
git merge --ff-only renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git switch main
git merge renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ops/homelab!130
No description provided.