{
  "license": "CC BY 4.0",
  "recipe": {
    "slug": "core-web-vitals-by-route-release",
    "title": "Compare Core Web Vitals by Route and Release",
    "testedWith": "Apache DataFusion 45.2.0",
    "lastReviewed": "2026-07-28"
  },
  "contract": {
    "tableName": "frontend_vital_events",
    "schema": [
      {
        "name": "timestamp_utc",
        "type": "Timestamp",
        "description": "Measurement time in UTC."
      },
      {
        "name": "route_template",
        "type": "Utf8",
        "description": "Stable route template without user or query-string values."
      },
      {
        "name": "release",
        "type": "Utf8",
        "description": "Frontend release identifier."
      },
      {
        "name": "metric_name",
        "type": "Utf8",
        "description": "Controlled LCP, INP, or CLS metric name."
      },
      {
        "name": "metric_value",
        "type": "Float64",
        "description": "Metric value in its documented unit."
      },
      {
        "name": "passed",
        "type": "Boolean",
        "description": "Whether the sample passed the product's versioned threshold."
      },
      {
        "name": "environment",
        "type": "Utf8",
        "description": "Deployment environment."
      }
    ]
  },
  "query": "SELECT\n  route_template,\n  release,\n  COUNT(*) AS samples,\n  AVG(CASE WHEN metric_name = 'LCP' THEN metric_value ELSE NULL END) AS avg_lcp_ms,\n  AVG(CASE WHEN metric_name = 'INP' THEN metric_value ELSE NULL END) AS avg_inp_ms,\n  AVG(CASE WHEN metric_name = 'CLS' THEN metric_value ELSE NULL END) AS avg_cls,\n  100.0 * SUM(CASE WHEN passed THEN 1 ELSE 0 END)\n    / NULLIF(COUNT(*), 0) AS passing_samples_pct\nFROM frontend_vital_events\nWHERE timestamp_utc >= now() - INTERVAL '7 days'\n  AND environment = 'production'\nGROUP BY route_template, release\nORDER BY passing_samples_pct ASC, route_template, release;",
  "fixtureKind": "reproducible",
  "inputRows": [
    {
      "timestamp_utc": "2026-07-28T18:00:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 2500,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:59:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 3100,
      "passed": false,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:58:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 180,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:57:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 260,
      "passed": false,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:56:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.08,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:55:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.12,
      "passed": false,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:30:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 1800,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:29:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 1900,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:28:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 110,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:27:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 130,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:26:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.04,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:25:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.06,
      "passed": true,
      "environment": "production"
    }
  ],
  "illustrativeInputRows": [
    {
      "timestamp_utc": "2026-07-28T18:00:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 2500,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:59:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 3100,
      "passed": false,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:58:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 180,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:57:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 260,
      "passed": false,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:56:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.08,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:55:00.000Z",
      "route_template": "/checkout",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.12,
      "passed": false,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:30:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 1800,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:29:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "LCP",
      "metric_value": 1900,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:28:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 110,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:27:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "INP",
      "metric_value": 130,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:26:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.04,
      "passed": true,
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:25:00.000Z",
      "route_template": "/search",
      "release": "web-102",
      "metric_name": "CLS",
      "metric_value": 0.06,
      "passed": true,
      "environment": "production"
    }
  ],
  "expectedOutput": {
    "columns": [
      "route_template",
      "release",
      "samples",
      "avg_lcp_ms",
      "avg_inp_ms",
      "avg_cls",
      "passing_samples_pct"
    ],
    "rows": [
      {
        "route_template": "/checkout",
        "release": "web-102",
        "samples": 6,
        "avg_lcp_ms": 2800,
        "avg_inp_ms": 220,
        "avg_cls": 0.1,
        "passing_samples_pct": 50
      },
      {
        "route_template": "/search",
        "release": "web-102",
        "samples": 6,
        "avg_lcp_ms": 1850,
        "avg_inp_ms": 120,
        "avg_cls": 0.05,
        "passing_samples_pct": 100
      }
    ]
  },
  "notes": [
    "The included synthetic input rows generate the expected output when timestamps are shifted into the documented query window.",
    "Run this fixture in the public browser SQL playground; the selected query executes locally with DuckDB-Wasm.",
    "Adapt time windows, thresholds, identities, and business definitions before operational use."
  ]
}