{
  "license": "CC BY 4.0",
  "recipe": {
    "slug": "javascript-errors-by-route-release",
    "title": "Rank JavaScript Errors by Route and Release",
    "testedWith": "Apache DataFusion 45.2.0",
    "lastReviewed": "2026-07-28"
  },
  "contract": {
    "tableName": "frontend_error_events",
    "schema": [
      {
        "name": "timestamp_utc",
        "type": "Timestamp",
        "description": "Browser error time in UTC."
      },
      {
        "name": "route_template",
        "type": "Utf8",
        "description": "Stable client-side route without identifiers."
      },
      {
        "name": "release",
        "type": "Utf8",
        "description": "Frontend build or release identifier."
      },
      {
        "name": "error_fingerprint",
        "type": "Utf8",
        "description": "Normalized error class and frame signature."
      },
      {
        "name": "session_id",
        "type": "Utf8",
        "description": "Privacy-safe session identifier."
      },
      {
        "name": "environment",
        "type": "Utf8",
        "description": "Deployment environment."
      }
    ]
  },
  "query": "SELECT\n  route_template,\n  release,\n  error_fingerprint,\n  COUNT(*) AS errors,\n  COUNT(DISTINCT session_id) AS affected_sessions\nFROM frontend_error_events\nWHERE timestamp_utc >= now() - INTERVAL '24 hours'\n  AND environment = 'production'\nGROUP BY route_template, release, error_fingerprint\nORDER BY affected_sessions DESC, errors DESC\nLIMIT 20;",
  "fixtureKind": "schema-example",
  "inputRows": [
    {
      "timestamp_utc": "2026-07-28T10:00:00Z",
      "route_template": "/api/checkout",
      "release": "release_2026_07_1",
      "error_fingerprint": "none",
      "session_id": "session_id_example_1",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00Z",
      "route_template": "/api/search",
      "release": "release_2026_07_2",
      "error_fingerprint": "dependency_timeout",
      "session_id": "session_id_example_2",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00Z",
      "route_template": "/api/projects/:id",
      "release": "release_2026_07_3",
      "error_fingerprint": "none",
      "session_id": "session_id_example_3",
      "environment": "production"
    }
  ],
  "illustrativeInputRows": [
    {
      "timestamp_utc": "2026-07-28T10:00:00Z",
      "route_template": "/api/checkout",
      "release": "release_2026_07_1",
      "error_fingerprint": "none",
      "session_id": "session_id_example_1",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00Z",
      "route_template": "/api/search",
      "release": "release_2026_07_2",
      "error_fingerprint": "dependency_timeout",
      "session_id": "session_id_example_2",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00Z",
      "route_template": "/api/projects/:id",
      "release": "release_2026_07_3",
      "error_fingerprint": "none",
      "session_id": "session_id_example_3",
      "environment": "production"
    }
  ],
  "expectedOutput": {
    "columns": [
      "route_template",
      "release",
      "error_fingerprint",
      "errors",
      "affected_sessions"
    ],
    "rows": [
      {
        "route_template": "/checkout",
        "release": "web-103",
        "error_fingerprint": "payment-form-render",
        "errors": 184,
        "affected_sessions": 121
      },
      {
        "route_template": "/projects/:id",
        "release": "web-103",
        "error_fingerprint": "editor-state-null",
        "errors": 96,
        "affected_sessions": 74
      },
      {
        "route_template": "/search",
        "release": "web-102",
        "error_fingerprint": "result-card-image",
        "errors": 58,
        "affected_sessions": 51
      }
    ]
  },
  "notes": [
    "The compact input rows demonstrate field names and JSON types; they are not claimed to generate the displayed aggregate by themselves.",
    "The expected output is deterministic synthetic review data for the documented output shape.",
    "Adapt time windows, thresholds, identities, and business definitions before operational use."
  ]
}