{
  "schema_version": 1,
  "cases": [
    {
      "id": "cuda-missing",
      "paired_case": "cuda-fixed",
      "kind": "launch",
      "title": "CUDA work, missing counter",
      "provenance": "Reconstructed from Ezgi's published H200 test",
      "description": "The published test makes 3,010 launches, but the per-thread build has no launch metric in OBI v1.0.0-rc.2. These compact snapshots reconstruct the condition; they are not raw exporter captures. The zero before value is a controlled starting assumption.",
      "url": "https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/issues/3813",
      "before": "# Controlled start of a single-target test\ngpu_cuda_kernel_launch_calls_total{service_name=\"launch-test\"} 0\n",
      "after": "# Per-thread build: launch metric absent in the published test\n# No gpu_cuda_kernel_launch_calls_total series\n",
      "imports": "U cuLaunchKernel_ptsz\nU cudaStreamSynchronize_ptsz\n",
      "expected": 3010,
      "expected_code": "metric-missing"
    },
    {
      "id": "cuda-fixed",
      "paired_case": "cuda-missing",
      "kind": "launch",
      "title": "CUDA launch count restored",
      "provenance": "Reconstructed from the merged OBI validation",
      "description": "PR #3814 restored 3,010 observed launches for the per-thread build while retaining the ordinary-build count. This reconstructs the before/after counter values for a controlled test, not a complete validation of every CUDA path.",
      "url": "https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/pull/3814",
      "before": "gpu_cuda_kernel_launch_calls_total{service_name=\"launch-test\"} 0\n",
      "after": "gpu_cuda_kernel_launch_calls_total{service_name=\"launch-test\"} 3010\n",
      "imports": "U cuLaunchKernel_ptsz\n",
      "expected": 3010,
      "expected_code": "counts-match"
    },
    {
      "id": "gb300-power",
      "kind": "power",
      "title": "Published GB300 power capture",
      "provenance": "Measured capture · source SHA 8734f72",
      "description": "Unmodified hero3_gpu.csv from the public GB300 repository. Calendar times become seconds since the first row. The 1–30 second window is chosen for this integrity check; it is not the full clip's original submit-to-done window.",
      "url": "https://github.com/EzgiTastan/minimax-h3-gb300-ebpf/blob/8734f72a33426f32331b1baf43d0dc7965978a7b/figdata/hero3_gpu.csv",
      "file": "power-example.csv",
      "gpus": [0, 1, 2, 3],
      "start": 1,
      "end": 30,
      "max_gap": 1,
      "expected_code": "window-covered"
    },
    {
      "id": "power-edges",
      "kind": "power",
      "title": "The missing window edges",
      "provenance": "Controlled synthetic fixture · not a hardware result",
      "description": "A one-second constant-1,000-W fixture. The retained sampler integrates only the two interior points, producing 0.5 kJ instead of the full-window 1 kJ. This does not estimate the error in the published hardware runs. The new checker withholds a whole-window estimate because neither boundary is covered.",
      "url": "https://github.com/EzgiTastan/minimax-h3-gb300-ebpf/blob/8734f72a33426f32331b1baf43d0dc7965978a7b/figdata/hero_ladder.py#L102",
      "csv": "timestamp,index,power.draw [W]\n0.2,0,1000 W\n0.7,0,1000 W\n",
      "gpus": [0],
      "start": 0,
      "end": 1,
      "max_gap": 1,
      "expected_code": "incomplete-power-window"
    },
    {
      "id": "power-missing-gpu",
      "paired_case": "power-complete",
      "kind": "power",
      "title": "One GPU vanished from the capture",
      "provenance": "Controlled synthetic fixture · not a hardware result",
      "description": "The intended scope is GPUs 0 and 1. Only GPU 0 has readings. Summing the available rows would silently omit a requested power domain, so the checker withholds the total.",
      "url": "https://docs.nvidia.com/deploy/nvidia-smi/index.html",
      "csv": "timestamp,index,power.draw [W]\n0,0,1000 W\n0.5,0,1000 W\n1,0,1000 W\n",
      "gpus": [0, 1],
      "start": 0,
      "end": 1,
      "max_gap": 1,
      "expected_code": "incomplete-power-window"
    },
    {
      "id": "power-complete",
      "paired_case": "power-missing-gpu",
      "kind": "power",
      "title": "Both GPUs have complete readings",
      "provenance": "Controlled synthetic fixture · not a hardware result",
      "description": "The complete counterpart to the missing-GPU demo. GPUs 0 and 1 each draw a simulated constant 1,000 W for one second, so their combined energy is 2 kJ. This is a teaching fixture, not a repair of a real capture or an estimate of a missing GPU's actual power.",
      "url": "https://docs.nvidia.com/deploy/nvidia-smi/index.html",
      "csv": "timestamp,index,power.draw [W]\n0,0,1000 W\n0,1,1000 W\n0.5,0,1000 W\n0.5,1,1000 W\n1,0,1000 W\n1,1,1000 W\n",
      "gpus": [0, 1],
      "start": 0,
      "end": 1,
      "max_gap": 1,
      "expected_code": "window-covered"
    }
  ]
}
