{
  "displayName": "Repomix Server Ops (repomix-server-us)",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "xPos": 0,
        "yPos": 0,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Request rate (by response class)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"run.googleapis.com/request_count\" resource.type=\"cloud_run_revision\" resource.labels.service_name=\"repomix-server-us\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.response_code_class"]
                    }
                  }
                },
                "plotType": "LINE",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "req/s", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 0,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Instance count (max=10)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"run.googleapis.com/container/instance_count\" resource.labels.service_name=\"repomix-server-us\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.state"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1"
              }
            ],
            "thresholds": [{ "value": 10, "label": "max_instances" }],
            "yAxis": { "label": "instances", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 4,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Memory utilization (P50 / P95)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"run.googleapis.com/container/memory/utilizations\" resource.labels.service_name=\"repomix-server-us\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_50",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P50",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"run.googleapis.com/container/memory/utilizations\" resource.labels.service_name=\"repomix-server-us\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_95",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P95",
                "targetAxis": "Y1"
              }
            ],
            "thresholds": [{ "value": 0.85, "label": "warn" }],
            "yAxis": { "label": "utilization", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 4,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "OOM terminations (5 min buckets)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/oom_terminations\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM"
                    }
                  }
                },
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 8,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Container killed — OOM (5 min buckets)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/container_killed\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM"
                    }
                  }
                },
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 12,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Pack outcome (stacked by outcome)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_requests\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.outcome"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 12,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Cache hit ratio (success only)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_requests\" metric.label.outcome=\"success\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.cached"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "legendTemplate": "cached=${metric.labels.cached}"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 16,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Input type (URL vs file upload)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_requests\" metric.label.outcome=\"success\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.input_type"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 16,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Country TOP (stacked)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_requests_by_country\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.country"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 8,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Request latency P50 / P95 / P99",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"run.googleapis.com/request_latencies\" resource.labels.service_name=\"repomix-server-us\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_50",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P50",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"run.googleapis.com/request_latencies\" resource.labels.service_name=\"repomix-server-us\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_95",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P95",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"run.googleapis.com/request_latencies\" resource.labels.service_name=\"repomix-server-us\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_99",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P99",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "ms", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 20,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Pack output tokens (P50 / P95 / P99)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_output_tokens\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_50",
                      "crossSeriesReducer": "REDUCE_MEAN"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P50",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_output_tokens\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_95",
                      "crossSeriesReducer": "REDUCE_MEAN"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P95",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_output_tokens\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_99",
                      "crossSeriesReducer": "REDUCE_MEAN"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P99",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "tokens", "scale": "LOG10" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 20,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Pack output files (P50 / P95 / P99)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_output_files\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_50",
                      "crossSeriesReducer": "REDUCE_MEAN"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P50",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_output_files\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_95",
                      "crossSeriesReducer": "REDUCE_MEAN"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P95",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_output_files\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_99",
                      "crossSeriesReducer": "REDUCE_MEAN"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P99",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "files", "scale": "LOG10" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 24,
        "width": 3,
        "height": 4,
        "widget": {
          "title": "Option usage — compress",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_options_usage\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.compress"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "legendTemplate": "compress=${metric.labels.compress}"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 3,
        "yPos": 24,
        "width": 3,
        "height": 4,
        "widget": {
          "title": "Option usage — removeComments",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_options_usage\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.remove_comments"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "legendTemplate": "removeComments=${metric.labels.remove_comments}"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 24,
        "width": 3,
        "height": 4,
        "widget": {
          "title": "Option usage — outputParsable",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_options_usage\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.output_parsable"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "legendTemplate": "outputParsable=${metric.labels.output_parsable}"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 9,
        "yPos": 24,
        "width": 3,
        "height": 4,
        "widget": {
          "title": "Option usage — include patterns",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_options_usage\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.has_include_patterns"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "legendTemplate": "hasIncludePatterns=${metric.labels.has_include_patterns}"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 28,
        "width": 12,
        "height": 4,
        "widget": {
          "title": "Validation rejections (by reason)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/pack_validation_errors\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.reject_reason"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 0,
        "yPos": 32,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Turnstile siteverify latency P50 / P95 / P99",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/turnstile_siteverify_duration\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_50",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P50",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/turnstile_siteverify_duration\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_95",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P95",
                "targetAxis": "Y1"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/turnstile_siteverify_duration\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_PERCENTILE_99",
                      "crossSeriesReducer": "REDUCE_MAX"
                    }
                  }
                },
                "plotType": "LINE",
                "legendTemplate": "P99",
                "targetAxis": "Y1"
              }
            ],
            "thresholds": [{ "value": 1000, "label": "1s" }],
            "yAxis": { "label": "ms", "scale": "LINEAR" }
          }
        }
      },
      {
        "xPos": 6,
        "yPos": 32,
        "width": 6,
        "height": 4,
        "widget": {
          "title": "Turnstile siteverify outcomes (by outcome / reason)",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"logging.googleapis.com/user/turnstile_siteverify_outcomes\"",
                    "aggregation": {
                      "alignmentPeriod": "300s",
                      "perSeriesAligner": "ALIGN_DELTA",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": ["metric.label.outcome", "metric.label.reason"]
                    }
                  }
                },
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1"
              }
            ],
            "yAxis": { "label": "count / 5min", "scale": "LINEAR" }
          }
        }
      }
    ]
  }
}
