{
  "workloads": [
    {
      "ns": "apps",
      "kind": "Deployment",
      "name": "idle-logger",
      "group": "other",
      "npods": 1,
      "images": [
        "logger"
      ],
      "nodes": [
        "aks-apps-0"
      ],
      "nodeReplicaCounts": {
        "aks-apps-0": 1
      },
      "hasPvc": false,
      "hasHpa": false,
      "hpaMinReplicas": null,
      "hpaMaxReplicas": null,
      "reqCpu": 0.5,
      "reqMemGib": 1,
      "limCpu": 1,
      "limMemGib": 2,
      "avgCpu": 0.005,
      "maxCpu": 0.01,
      "avgMemGib": 0.05,
      "maxMemGib": 0.1,
      "maxPerReqCpu": 0.02,
      "maxPerReqMem": 0.1,
      "maxCpuUtil": 0.02,
      "avgCpuUtil": 0.01,
      "maxMemUtil": 0.1,
      "avgMemUtil": 0.05,
      "maxCpuLimUtil": 0.01,
      "avgCpuLimUtil": 0.005,
      "maxMemLimUtil": 0.05,
      "avgMemLimUtil": 0.025,
      "burstRatio": 2,
      "scenario": "idle",
      "newReqCpu": 0.05,
      "newReqMemGib": 0.25,
      "newLimCpu": 0.5,
      "newLimMemGib": 0.5,
      "totalNewReqCpu": 0.05,
      "totalNewReqMemGib": 0.25,
      "confidence": "low",
      "rationale": "Effectively idle (max/req < 5%). Shrink to floor."
    },
    {
      "ns": "monitoring",
      "kind": "StatefulSet",
      "name": "vmstorage-vmcluster",
      "group": "vmcluster",
      "npods": 2,
      "images": [
        "vmstorage"
      ],
      "nodes": [
        "aks-vms-0",
        "aks-vms-1"
      ],
      "nodeReplicaCounts": {
        "aks-vms-0": 1,
        "aks-vms-1": 1
      },
      "hasPvc": true,
      "hasHpa": false,
      "hpaMinReplicas": null,
      "hpaMaxReplicas": null,
      "reqCpu": 4,
      "reqMemGib": 60,
      "limCpu": 8,
      "limMemGib": 120,
      "avgCpu": 1,
      "maxCpu": 2,
      "avgMemGib": 40,
      "maxMemGib": 50,
      "maxPerReqCpu": 0.5,
      "maxPerReqMem": 0.833,
      "maxCpuUtil": 0.6,
      "avgCpuUtil": 0.5,
      "maxMemUtil": 0.7,
      "avgMemUtil": 0.55,
      "maxCpuLimUtil": 0.25,
      "avgCpuLimUtil": 0.125,
      "maxMemLimUtil": 0.4167,
      "avgMemLimUtil": 0.3333,
      "burstRatio": 2,
      "scenario": "default_burstable",
      "newReqCpu": 0.75,
      "newReqMemGib": 32,
      "newLimCpu": 2,
      "newLimMemGib": 50,
      "totalNewReqCpu": 1.5,
      "totalNewReqMemGib": 64,
      "confidence": "medium",
      "rationale": "Default Burstable: req tracks 7d avg (1.5x cpu, 1.5x mem) to ignore spikes; lim (2x cpu, 2x mem max) covers bursts."
    },
    {
      "ns": "apps",
      "kind": "Deployment",
      "name": "ingest-gateway",
      "group": "other",
      "npods": 2,
      "images": [
        "ingest-gw"
      ],
      "nodes": [
        "aks-apps-0"
      ],
      "nodeReplicaCounts": {
        "aks-apps-0": 2
      },
      "hasPvc": false,
      "hasHpa": false,
      "hpaMinReplicas": null,
      "hpaMaxReplicas": null,
      "reqCpu": 1,
      "reqMemGib": 4,
      "limCpu": 2,
      "limMemGib": 8,
      "avgCpu": 0.4,
      "maxCpu": 0.6,
      "avgMemGib": 2,
      "maxMemGib": 3,
      "maxPerReqCpu": 0.6,
      "maxPerReqMem": 0.75,
      "maxCpuUtil": 0.6,
      "avgCpuUtil": 0.4,
      "maxMemUtil": 0.75,
      "avgMemUtil": 0.5,
      "maxCpuLimUtil": 0.3,
      "avgCpuLimUtil": 0.2,
      "maxMemLimUtil": 0.375,
      "avgMemLimUtil": 0.25,
      "burstRatio": 1.5,
      "scenario": "default_burstable",
      "newReqCpu": 0.3,
      "newReqMemGib": 2,
      "newLimCpu": 0.75,
      "newLimMemGib": 4,
      "totalNewReqCpu": 0.6,
      "totalNewReqMemGib": 4,
      "confidence": "medium",
      "rationale": "Default Burstable: req tracks 7d avg (1.5x cpu, 1.5x mem) to ignore spikes; lim (2x cpu, 2x mem max) covers bursts."
    },
    {
      "ns": "apps",
      "kind": "Job",
      "name": "batch-export",
      "group": "other",
      "npods": 1,
      "images": [
        "exporter"
      ],
      "nodes": [
        "aks-apps-1"
      ],
      "nodeReplicaCounts": {
        "aks-apps-1": 1
      },
      "hasPvc": false,
      "hasHpa": false,
      "hpaMinReplicas": null,
      "hpaMaxReplicas": null,
      "reqCpu": 0.1,
      "reqMemGib": 0.5,
      "limCpu": 0,
      "limMemGib": 0,
      "avgCpu": 0.05,
      "maxCpu": 0.08,
      "avgMemGib": 0.2,
      "maxMemGib": 0.4,
      "maxPerReqCpu": 0.8,
      "maxPerReqMem": 0.8,
      "maxCpuUtil": 0.8,
      "avgCpuUtil": 0.5,
      "maxMemUtil": 0.8,
      "avgMemUtil": 0.4,
      "maxCpuLimUtil": 0,
      "avgCpuLimUtil": 0,
      "maxMemLimUtil": 0,
      "avgMemLimUtil": 0,
      "burstRatio": 1.6,
      "scenario": "default_burstable",
      "newReqCpu": 0.1,
      "newReqMemGib": 0.5,
      "newLimCpu": 0,
      "newLimMemGib": 0,
      "totalNewReqCpu": 0.1,
      "totalNewReqMemGib": 0.5,
      "confidence": "low",
      "rationale": "Out of scope: per-pod CPU request at or below 0.1 cores — too small to matter for rightsizing."
    }
  ]
}
