ParkAPI Quality Agent AI triage console

Dashboard

Latest job runs

Generated 2026-05-30 22:30 UTC

Back to overview

Previous job runs

JobStatusStartedFinishedDurationDetails
reporter success 2026-05-30 16:13:51 2026-05-30 16:13:56 4438 ms
Show process log (9 events)
[
  {
    "job_name": "reporter",
    "message": "report cycle started",
    "status": "running",
    "step": "cycle.start",
    "timestamp": "2026-05-30T16:13:51.987435+00:00"
  },
  {
    "data": {
      "search_query": ""
    },
    "job_name": "reporter",
    "message": "building reporter dashboard context",
    "status": "running",
    "step": "context.build",
    "timestamp": "2026-05-30T16:13:51.998981+00:00"
  },
  {
    "data": {
      "dashboard_metric_count": 3,
      "metric_count": 4
    },
    "job_name": "reporter",
    "message": "latest quality metrics loaded",
    "status": "success",
    "step": "metrics.load",
    "timestamp": "2026-05-30T16:13:52.021842+00:00"
  },
  {
    "data": {
      "incident_count": 0,
      "provider_count": 0
    },
    "job_name": "reporter",
    "message": "incident memory refreshed",
    "status": "success",
    "step": "incidents.refresh",
    "timestamp": "2026-05-30T16:13:56.229615+00:00"
  },
  {
    "data": {
      "reason": "no_provider_summaries"
    },
    "job_name": "reporter",
    "message": "llm recommendation refresh skipped",
    "status": "success",
    "step": "llm.refresh",
    "timestamp": "2026-05-30T16:13:56.229820+00:00"
  },
  {
    "data": {
      "llm_count": 0
    },
    "job_name": "reporter",
    "message": "recommendations prepared",
    "status": "success",
    "step": "recommendations.load",
    "timestamp": "2026-05-30T16:13:56.258618+00:00"
  },
  {
    "job_name": "reporter",
    "message": "reporter dashboard context built",
    "status": "success",
    "step": "context.build",
    "timestamp": "2026-05-30T16:13:56.358479+00:00"
  },
  {
    "data": {
      "output": "/app/reports/index.html",
      "template": "index.html"
    },
    "job_name": "reporter",
    "message": "report rendered",
    "status": "success",
    "step": "report.render",
    "timestamp": "2026-05-30T16:13:56.425834+00:00"
  },
  {
    "data": {
      "duration_ms": 4438
    },
    "job_name": "reporter",
    "message": "report cycle completed",
    "status": "success",
    "step": "cycle.finish",
    "timestamp": "2026-05-30T16:13:56.426241+00:00"
  }
]
Show run details
{
  "duration_ms": 4438,
  "events": [
    {
      "job_name": "reporter",
      "message": "report cycle started",
      "status": "running",
      "step": "cycle.start",
      "timestamp": "2026-05-30T16:13:51.987435+00:00"
    },
    {
      "data": {
        "search_query": ""
      },
      "job_name": "reporter",
      "message": "building reporter dashboard context",
      "status": "running",
      "step": "context.build",
      "timestamp": "2026-05-30T16:13:51.998981+00:00"
    },
    {
      "data": {
        "dashboard_metric_count": 3,
        "metric_count": 4
      },
      "job_name": "reporter",
      "message": "latest quality metrics loaded",
      "status": "success",
      "step": "metrics.load",
      "timestamp": "2026-05-30T16:13:52.021842+00:00"
    },
    {
      "data": {
        "incident_count": 0,
        "provider_count": 0
      },
      "job_name": "reporter",
      "message": "incident memory refreshed",
      "status": "success",
      "step": "incidents.refresh",
      "timestamp": "2026-05-30T16:13:56.229615+00:00"
    },
    {
      "data": {
        "reason": "no_provider_summaries"
      },
      "job_name": "reporter",
      "message": "llm recommendation refresh skipped",
      "status": "success",
      "step": "llm.refresh",
      "timestamp": "2026-05-30T16:13:56.229820+00:00"
    },
    {
      "data": {
        "llm_count": 0
      },
      "job_name": "reporter",
      "message": "recommendations prepared",
      "status": "success",
      "step": "recommendations.load",
      "timestamp": "2026-05-30T16:13:56.258618+00:00"
    },
    {
      "job_name": "reporter",
      "message": "reporter dashboard context built",
      "status": "success",
      "step": "context.build",
      "timestamp": "2026-05-30T16:13:56.358479+00:00"
    },
    {
      "data": {
        "output": "/app/reports/index.html",
        "template": "index.html"
      },
      "job_name": "reporter",
      "message": "report rendered",
      "status": "success",
      "step": "report.render",
      "timestamp": "2026-05-30T16:13:56.425834+00:00"
    },
    {
      "data": {
        "duration_ms": 4438
      },
      "job_name": "reporter",
      "message": "report cycle completed",
      "status": "success",
      "step": "cycle.finish",
      "timestamp": "2026-05-30T16:13:56.426241+00:00"
    }
  ],
  "output_name": "index.html",
  "refresh_seconds": 60,
  "report_path": "/app/reports/index.html"
}
analyzer-realtime running 2026-05-30 16:13:50 - - ms -
analyzer running 2026-05-30 16:13:50 - - ms -
fetcher-realtime success 2026-05-30 16:13:50 2026-05-30 16:14:08 18095 ms
Show process log (16 events)
[
  {
    "data": {
      "endpoints": [
        "parking-spots",
        "parking-sites",
        "sources"
      ],
      "refresh_seconds": 600
    },
    "job_name": "fetcher-realtime",
    "message": "realtime fetch cycle started",
    "status": "running",
    "step": "cycle.start",
    "timestamp": "2026-05-30T16:13:50.658532+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher-realtime",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:13:50.681581+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:13:51.873955+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher-realtime",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:13:51.874112+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28304
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:14:01.792989+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher-realtime",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:14:01.793179+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:14:02.473894+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher-realtime",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:02.474036+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:02.648225+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher-realtime",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:02.648406+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28304
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:05.051257+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher-realtime",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:05.051477+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:05.069687+00:00"
  },
  {
    "job_name": "fetcher-realtime",
    "message": "refreshing active realtime parking entities",
    "status": "running",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T16:14:05.069959+00:00"
  },
  {
    "data": {
      "parking_site_record_count": 512,
      "parking_spot_record_count": 1379
    },
    "job_name": "fetcher-realtime",
    "message": "active realtime parking entities refreshed",
    "status": "success",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T16:14:08.751999+00:00"
  },
  {
    "data": {
      "counts": {
        "parking-sites": 28304,
        "parking-sites-realtime-active": 512,
        "parking-spots": 3663,
        "parking-spots-realtime-active": 1379,
        "sources": 67
      },
      "duration_ms": 18095
    },
    "job_name": "fetcher-realtime",
    "message": "realtime fetch cycle completed",
    "status": "success",
    "step": "cycle.finish",
    "timestamp": "2026-05-30T16:14:08.754013+00:00"
  }
]
Show run details
{
  "counts": {
    "parking-sites": 28304,
    "parking-sites-realtime-active": 512,
    "parking-spots": 3663,
    "parking-spots-realtime-active": 1379,
    "sources": 67
  },
  "duration_ms": 18095,
  "events": [
    {
      "data": {
        "endpoints": [
          "parking-spots",
          "parking-sites",
          "sources"
        ],
        "refresh_seconds": 600
      },
      "job_name": "fetcher-realtime",
      "message": "realtime fetch cycle started",
      "status": "running",
      "step": "cycle.start",
      "timestamp": "2026-05-30T16:13:50.658532+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher-realtime",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:13:50.681581+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:13:51.873955+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher-realtime",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:13:51.874112+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28304
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:14:01.792989+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher-realtime",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:14:01.793179+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:14:02.473894+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher-realtime",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:02.474036+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:02.648225+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher-realtime",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:02.648406+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28304
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:05.051257+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher-realtime",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:05.051477+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:05.069687+00:00"
    },
    {
      "job_name": "fetcher-realtime",
      "message": "refreshing active realtime parking entities",
      "status": "running",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T16:14:05.069959+00:00"
    },
    {
      "data": {
        "parking_site_record_count": 512,
        "parking_spot_record_count": 1379
      },
      "job_name": "fetcher-realtime",
      "message": "active realtime parking entities refreshed",
      "status": "success",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T16:14:08.751999+00:00"
    },
    {
      "data": {
        "counts": {
          "parking-sites": 28304,
          "parking-sites-realtime-active": 512,
          "parking-spots": 3663,
          "parking-spots-realtime-active": 1379,
          "sources": 67
        },
        "duration_ms": 18095
      },
      "job_name": "fetcher-realtime",
      "message": "realtime fetch cycle completed",
      "status": "success",
      "step": "cycle.finish",
      "timestamp": "2026-05-30T16:14:08.754013+00:00"
    }
  ],
  "refresh_seconds": 600
}
fetcher success 2026-05-30 16:13:50 2026-05-30 16:14:07 16557 ms
Show process log (16 events)
[
  {
    "data": {
      "endpoints": [
        "parking-spots",
        "parking-sites",
        "sources"
      ]
    },
    "job_name": "fetcher",
    "message": "fetch cycle started",
    "status": "running",
    "step": "cycle.start",
    "timestamp": "2026-05-30T16:13:50.655933+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:13:50.682376+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:13:52.135052+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:13:52.135359+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28304
    },
    "job_name": "fetcher",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:14:00.900972+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:14:00.901361+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:14:00.957846+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:00.958070+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:01.794646+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:01.794834+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28304
    },
    "job_name": "fetcher",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:04.041131+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:04.041339+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:14:04.058815+00:00"
  },
  {
    "job_name": "fetcher",
    "message": "refreshing active realtime parking entities",
    "status": "running",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T16:14:04.059005+00:00"
  },
  {
    "data": {
      "parking_site_record_count": 512,
      "parking_spot_record_count": 1379
    },
    "job_name": "fetcher",
    "message": "active realtime parking entities refreshed",
    "status": "success",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T16:14:07.211261+00:00"
  },
  {
    "data": {
      "counts": {
        "parking-sites": 28304,
        "parking-sites-realtime-active": 512,
        "parking-spots": 3663,
        "parking-spots-realtime-active": 1379,
        "sources": 67
      },
      "duration_ms": 16557
    },
    "job_name": "fetcher",
    "message": "fetch cycle completed",
    "status": "success",
    "step": "cycle.finish",
    "timestamp": "2026-05-30T16:14:07.213223+00:00"
  }
]
Show run details
{
  "counts": {
    "parking-sites": 28304,
    "parking-sites-realtime-active": 512,
    "parking-spots": 3663,
    "parking-spots-realtime-active": 1379,
    "sources": 67
  },
  "duration_ms": 16557,
  "events": [
    {
      "data": {
        "endpoints": [
          "parking-spots",
          "parking-sites",
          "sources"
        ]
      },
      "job_name": "fetcher",
      "message": "fetch cycle started",
      "status": "running",
      "step": "cycle.start",
      "timestamp": "2026-05-30T16:13:50.655933+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:13:50.682376+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:13:52.135052+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:13:52.135359+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28304
      },
      "job_name": "fetcher",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:14:00.900972+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:14:00.901361+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:14:00.957846+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:00.958070+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:01.794646+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:01.794834+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28304
      },
      "job_name": "fetcher",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:04.041131+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:04.041339+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:14:04.058815+00:00"
    },
    {
      "job_name": "fetcher",
      "message": "refreshing active realtime parking entities",
      "status": "running",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T16:14:04.059005+00:00"
    },
    {
      "data": {
        "parking_site_record_count": 512,
        "parking_spot_record_count": 1379
      },
      "job_name": "fetcher",
      "message": "active realtime parking entities refreshed",
      "status": "success",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T16:14:07.211261+00:00"
    },
    {
      "data": {
        "counts": {
          "parking-sites": 28304,
          "parking-sites-realtime-active": 512,
          "parking-spots": 3663,
          "parking-spots-realtime-active": 1379,
          "sources": 67
        },
        "duration_ms": 16557
      },
      "job_name": "fetcher",
      "message": "fetch cycle completed",
      "status": "success",
      "step": "cycle.finish",
      "timestamp": "2026-05-30T16:14:07.213223+00:00"
    }
  ]
}
fetcher-realtime success 2026-05-30 16:05:06 2026-05-30 16:05:22 15849 ms
Show process log (16 events)
[
  {
    "data": {
      "endpoints": [
        "parking-spots",
        "parking-sites",
        "sources"
      ],
      "refresh_seconds": 600
    },
    "job_name": "fetcher-realtime",
    "message": "realtime fetch cycle started",
    "status": "running",
    "step": "cycle.start",
    "timestamp": "2026-05-30T16:05:06.197250+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher-realtime",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:05:06.210103+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:05:07.200107+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher-realtime",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:05:07.200280+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28304
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:05:16.600183+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher-realtime",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:05:16.600472+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T16:05:16.661955+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher-realtime",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:05:16.662178+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:05:16.875304+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher-realtime",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:05:16.875507+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28304
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:05:19.194254+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher-realtime",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:05:19.194748+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher-realtime",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T16:05:19.208833+00:00"
  },
  {
    "job_name": "fetcher-realtime",
    "message": "refreshing active realtime parking entities",
    "status": "running",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T16:05:19.209058+00:00"
  },
  {
    "data": {
      "parking_site_record_count": 512,
      "parking_spot_record_count": 1379
    },
    "job_name": "fetcher-realtime",
    "message": "active realtime parking entities refreshed",
    "status": "success",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T16:05:22.041656+00:00"
  },
  {
    "data": {
      "counts": {
        "parking-sites": 28304,
        "parking-sites-realtime-active": 512,
        "parking-spots": 3663,
        "parking-spots-realtime-active": 1379,
        "sources": 67
      },
      "duration_ms": 15849
    },
    "job_name": "fetcher-realtime",
    "message": "realtime fetch cycle completed",
    "status": "success",
    "step": "cycle.finish",
    "timestamp": "2026-05-30T16:05:22.044336+00:00"
  }
]
Show run details
{
  "counts": {
    "parking-sites": 28304,
    "parking-sites-realtime-active": 512,
    "parking-spots": 3663,
    "parking-spots-realtime-active": 1379,
    "sources": 67
  },
  "duration_ms": 15849,
  "events": [
    {
      "data": {
        "endpoints": [
          "parking-spots",
          "parking-sites",
          "sources"
        ],
        "refresh_seconds": 600
      },
      "job_name": "fetcher-realtime",
      "message": "realtime fetch cycle started",
      "status": "running",
      "step": "cycle.start",
      "timestamp": "2026-05-30T16:05:06.197250+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher-realtime",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:05:06.210103+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:05:07.200107+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher-realtime",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:05:07.200280+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28304
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:05:16.600183+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher-realtime",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:05:16.600472+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T16:05:16.661955+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher-realtime",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:05:16.662178+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:05:16.875304+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher-realtime",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:05:16.875507+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28304
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:05:19.194254+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher-realtime",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:05:19.194748+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher-realtime",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T16:05:19.208833+00:00"
    },
    {
      "job_name": "fetcher-realtime",
      "message": "refreshing active realtime parking entities",
      "status": "running",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T16:05:19.209058+00:00"
    },
    {
      "data": {
        "parking_site_record_count": 512,
        "parking_spot_record_count": 1379
      },
      "job_name": "fetcher-realtime",
      "message": "active realtime parking entities refreshed",
      "status": "success",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T16:05:22.041656+00:00"
    },
    {
      "data": {
        "counts": {
          "parking-sites": 28304,
          "parking-sites-realtime-active": 512,
          "parking-spots": 3663,
          "parking-spots-realtime-active": 1379,
          "sources": 67
        },
        "duration_ms": 15849
      },
      "job_name": "fetcher-realtime",
      "message": "realtime fetch cycle completed",
      "status": "success",
      "step": "cycle.finish",
      "timestamp": "2026-05-30T16:05:22.044336+00:00"
    }
  ],
  "refresh_seconds": 600
}
reporter success 2026-05-30 15:54:50 2026-05-30 15:54:55 4534 ms
Show process log (9 events)
[
  {
    "job_name": "reporter",
    "message": "report cycle started",
    "status": "running",
    "step": "cycle.start",
    "timestamp": "2026-05-30T15:54:50.745151+00:00"
  },
  {
    "data": {
      "search_query": ""
    },
    "job_name": "reporter",
    "message": "building reporter dashboard context",
    "status": "running",
    "step": "context.build",
    "timestamp": "2026-05-30T15:54:50.771788+00:00"
  },
  {
    "data": {
      "dashboard_metric_count": 3,
      "metric_count": 4
    },
    "job_name": "reporter",
    "message": "latest quality metrics loaded",
    "status": "success",
    "step": "metrics.load",
    "timestamp": "2026-05-30T15:54:50.787552+00:00"
  },
  {
    "data": {
      "incident_count": 0,
      "provider_count": 0
    },
    "job_name": "reporter",
    "message": "incident memory refreshed",
    "status": "success",
    "step": "incidents.refresh",
    "timestamp": "2026-05-30T15:54:55.092911+00:00"
  },
  {
    "data": {
      "reason": "no_provider_summaries"
    },
    "job_name": "reporter",
    "message": "llm recommendation refresh skipped",
    "status": "success",
    "step": "llm.refresh",
    "timestamp": "2026-05-30T15:54:55.095179+00:00"
  },
  {
    "data": {
      "llm_count": 0
    },
    "job_name": "reporter",
    "message": "recommendations prepared",
    "status": "success",
    "step": "recommendations.load",
    "timestamp": "2026-05-30T15:54:55.120538+00:00"
  },
  {
    "job_name": "reporter",
    "message": "reporter dashboard context built",
    "status": "success",
    "step": "context.build",
    "timestamp": "2026-05-30T15:54:55.213398+00:00"
  },
  {
    "data": {
      "output": "/app/reports/index.html",
      "template": "index.html"
    },
    "job_name": "reporter",
    "message": "report rendered",
    "status": "success",
    "step": "report.render",
    "timestamp": "2026-05-30T15:54:55.278024+00:00"
  },
  {
    "data": {
      "duration_ms": 4534
    },
    "job_name": "reporter",
    "message": "report cycle completed",
    "status": "success",
    "step": "cycle.finish",
    "timestamp": "2026-05-30T15:54:55.279271+00:00"
  }
]
Show run details
{
  "duration_ms": 4534,
  "events": [
    {
      "job_name": "reporter",
      "message": "report cycle started",
      "status": "running",
      "step": "cycle.start",
      "timestamp": "2026-05-30T15:54:50.745151+00:00"
    },
    {
      "data": {
        "search_query": ""
      },
      "job_name": "reporter",
      "message": "building reporter dashboard context",
      "status": "running",
      "step": "context.build",
      "timestamp": "2026-05-30T15:54:50.771788+00:00"
    },
    {
      "data": {
        "dashboard_metric_count": 3,
        "metric_count": 4
      },
      "job_name": "reporter",
      "message": "latest quality metrics loaded",
      "status": "success",
      "step": "metrics.load",
      "timestamp": "2026-05-30T15:54:50.787552+00:00"
    },
    {
      "data": {
        "incident_count": 0,
        "provider_count": 0
      },
      "job_name": "reporter",
      "message": "incident memory refreshed",
      "status": "success",
      "step": "incidents.refresh",
      "timestamp": "2026-05-30T15:54:55.092911+00:00"
    },
    {
      "data": {
        "reason": "no_provider_summaries"
      },
      "job_name": "reporter",
      "message": "llm recommendation refresh skipped",
      "status": "success",
      "step": "llm.refresh",
      "timestamp": "2026-05-30T15:54:55.095179+00:00"
    },
    {
      "data": {
        "llm_count": 0
      },
      "job_name": "reporter",
      "message": "recommendations prepared",
      "status": "success",
      "step": "recommendations.load",
      "timestamp": "2026-05-30T15:54:55.120538+00:00"
    },
    {
      "job_name": "reporter",
      "message": "reporter dashboard context built",
      "status": "success",
      "step": "context.build",
      "timestamp": "2026-05-30T15:54:55.213398+00:00"
    },
    {
      "data": {
        "output": "/app/reports/index.html",
        "template": "index.html"
      },
      "job_name": "reporter",
      "message": "report rendered",
      "status": "success",
      "step": "report.render",
      "timestamp": "2026-05-30T15:54:55.278024+00:00"
    },
    {
      "data": {
        "duration_ms": 4534
      },
      "job_name": "reporter",
      "message": "report cycle completed",
      "status": "success",
      "step": "cycle.finish",
      "timestamp": "2026-05-30T15:54:55.279271+00:00"
    }
  ],
  "output_name": "index.html",
  "refresh_seconds": 60,
  "report_path": "/app/reports/index.html"
}
reporter success 2026-05-30 15:54:50 2026-05-30 15:54:55 4531 ms
Show process log (9 events)
[
  {
    "job_name": "reporter",
    "message": "report cycle started",
    "status": "running",
    "step": "cycle.start",
    "timestamp": "2026-05-30T15:54:50.745764+00:00"
  },
  {
    "data": {
      "search_query": ""
    },
    "job_name": "reporter",
    "message": "building reporter dashboard context",
    "status": "running",
    "step": "context.build",
    "timestamp": "2026-05-30T15:54:50.758368+00:00"
  },
  {
    "data": {
      "dashboard_metric_count": 3,
      "metric_count": 4
    },
    "job_name": "reporter",
    "message": "latest quality metrics loaded",
    "status": "success",
    "step": "metrics.load",
    "timestamp": "2026-05-30T15:54:50.778217+00:00"
  },
  {
    "data": {
      "incident_count": 0,
      "provider_count": 0
    },
    "job_name": "reporter",
    "message": "incident memory refreshed",
    "status": "success",
    "step": "incidents.refresh",
    "timestamp": "2026-05-30T15:54:55.084579+00:00"
  },
  {
    "data": {
      "reason": "no_provider_summaries"
    },
    "job_name": "reporter",
    "message": "llm recommendation refresh skipped",
    "status": "success",
    "step": "llm.refresh",
    "timestamp": "2026-05-30T15:54:55.084780+00:00"
  },
  {
    "data": {
      "llm_count": 0
    },
    "job_name": "reporter",
    "message": "recommendations prepared",
    "status": "success",
    "step": "recommendations.load",
    "timestamp": "2026-05-30T15:54:55.097950+00:00"
  },
  {
    "job_name": "reporter",
    "message": "reporter dashboard context built",
    "status": "success",
    "step": "context.build",
    "timestamp": "2026-05-30T15:54:55.172451+00:00"
  },
  {
    "data": {
      "output": "/app/reports/index.html",
      "template": "index.html"
    },
    "job_name": "reporter",
    "message": "report rendered",
    "status": "success",
    "step": "report.render",
    "timestamp": "2026-05-30T15:54:55.277004+00:00"
  },
  {
    "data": {
      "duration_ms": 4531
    },
    "job_name": "reporter",
    "message": "report cycle completed",
    "status": "success",
    "step": "cycle.finish",
    "timestamp": "2026-05-30T15:54:55.277299+00:00"
  }
]
Show run details
{
  "duration_ms": 4531,
  "events": [
    {
      "job_name": "reporter",
      "message": "report cycle started",
      "status": "running",
      "step": "cycle.start",
      "timestamp": "2026-05-30T15:54:50.745764+00:00"
    },
    {
      "data": {
        "search_query": ""
      },
      "job_name": "reporter",
      "message": "building reporter dashboard context",
      "status": "running",
      "step": "context.build",
      "timestamp": "2026-05-30T15:54:50.758368+00:00"
    },
    {
      "data": {
        "dashboard_metric_count": 3,
        "metric_count": 4
      },
      "job_name": "reporter",
      "message": "latest quality metrics loaded",
      "status": "success",
      "step": "metrics.load",
      "timestamp": "2026-05-30T15:54:50.778217+00:00"
    },
    {
      "data": {
        "incident_count": 0,
        "provider_count": 0
      },
      "job_name": "reporter",
      "message": "incident memory refreshed",
      "status": "success",
      "step": "incidents.refresh",
      "timestamp": "2026-05-30T15:54:55.084579+00:00"
    },
    {
      "data": {
        "reason": "no_provider_summaries"
      },
      "job_name": "reporter",
      "message": "llm recommendation refresh skipped",
      "status": "success",
      "step": "llm.refresh",
      "timestamp": "2026-05-30T15:54:55.084780+00:00"
    },
    {
      "data": {
        "llm_count": 0
      },
      "job_name": "reporter",
      "message": "recommendations prepared",
      "status": "success",
      "step": "recommendations.load",
      "timestamp": "2026-05-30T15:54:55.097950+00:00"
    },
    {
      "job_name": "reporter",
      "message": "reporter dashboard context built",
      "status": "success",
      "step": "context.build",
      "timestamp": "2026-05-30T15:54:55.172451+00:00"
    },
    {
      "data": {
        "output": "/app/reports/index.html",
        "template": "index.html"
      },
      "job_name": "reporter",
      "message": "report rendered",
      "status": "success",
      "step": "report.render",
      "timestamp": "2026-05-30T15:54:55.277004+00:00"
    },
    {
      "data": {
        "duration_ms": 4531
      },
      "job_name": "reporter",
      "message": "report cycle completed",
      "status": "success",
      "step": "cycle.finish",
      "timestamp": "2026-05-30T15:54:55.277299+00:00"
    }
  ],
  "output_name": "index.html",
  "refresh_seconds": 60,
  "report_path": "/app/reports/index.html"
}
fetcher success 2026-05-30 15:54:49 2026-05-30 15:55:07 17968 ms
Show process log (16 events)
[
  {
    "data": {
      "endpoints": [
        "parking-spots",
        "parking-sites",
        "sources"
      ]
    },
    "job_name": "fetcher",
    "message": "fetch cycle started",
    "status": "running",
    "step": "cycle.start",
    "timestamp": "2026-05-30T15:54:49.294097+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T15:54:49.322286+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T15:54:50.795939+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T15:54:50.796092+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28303
    },
    "job_name": "fetcher",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T15:55:00.588801+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher",
    "message": "fetching endpoint payload",
    "status": "running",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T15:55:00.589914+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher",
    "message": "endpoint payload fetched",
    "status": "success",
    "step": "endpoint.fetch",
    "timestamp": "2026-05-30T15:55:01.179290+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots"
    },
    "job_name": "fetcher",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T15:55:01.179450+00:00"
  },
  {
    "data": {
      "endpoint": "parking-spots",
      "record_count": 3663
    },
    "job_name": "fetcher",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T15:55:01.387844+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites"
    },
    "job_name": "fetcher",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T15:55:01.388014+00:00"
  },
  {
    "data": {
      "endpoint": "parking-sites",
      "record_count": 28303
    },
    "job_name": "fetcher",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T15:55:03.931756+00:00"
  },
  {
    "data": {
      "endpoint": "sources"
    },
    "job_name": "fetcher",
    "message": "persisting endpoint payload",
    "status": "running",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T15:55:03.931933+00:00"
  },
  {
    "data": {
      "endpoint": "sources",
      "record_count": 67
    },
    "job_name": "fetcher",
    "message": "endpoint payload persisted",
    "status": "success",
    "step": "endpoint.persist",
    "timestamp": "2026-05-30T15:55:03.943243+00:00"
  },
  {
    "job_name": "fetcher",
    "message": "refreshing active realtime parking entities",
    "status": "running",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T15:55:03.943359+00:00"
  },
  {
    "data": {
      "parking_site_record_count": 511,
      "parking_spot_record_count": 1379
    },
    "job_name": "fetcher",
    "message": "active realtime parking entities refreshed",
    "status": "success",
    "step": "endpoint.refresh_realtime_sites",
    "timestamp": "2026-05-30T15:55:07.260018+00:00"
  },
  {
    "data": {
      "counts": {
        "parking-sites": 28303,
        "parking-sites-realtime-active": 511,
        "parking-spots": 3663,
        "parking-spots-realtime-active": 1379,
        "sources": 67
      },
      "duration_ms": 17968
    },
    "job_name": "fetcher",
    "message": "fetch cycle completed",
    "status": "success",
    "step": "cycle.finish",
    "timestamp": "2026-05-30T15:55:07.261880+00:00"
  }
]
Show run details
{
  "counts": {
    "parking-sites": 28303,
    "parking-sites-realtime-active": 511,
    "parking-spots": 3663,
    "parking-spots-realtime-active": 1379,
    "sources": 67
  },
  "duration_ms": 17968,
  "events": [
    {
      "data": {
        "endpoints": [
          "parking-spots",
          "parking-sites",
          "sources"
        ]
      },
      "job_name": "fetcher",
      "message": "fetch cycle started",
      "status": "running",
      "step": "cycle.start",
      "timestamp": "2026-05-30T15:54:49.294097+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T15:54:49.322286+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T15:54:50.795939+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T15:54:50.796092+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28303
      },
      "job_name": "fetcher",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T15:55:00.588801+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher",
      "message": "fetching endpoint payload",
      "status": "running",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T15:55:00.589914+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher",
      "message": "endpoint payload fetched",
      "status": "success",
      "step": "endpoint.fetch",
      "timestamp": "2026-05-30T15:55:01.179290+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots"
      },
      "job_name": "fetcher",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T15:55:01.179450+00:00"
    },
    {
      "data": {
        "endpoint": "parking-spots",
        "record_count": 3663
      },
      "job_name": "fetcher",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T15:55:01.387844+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites"
      },
      "job_name": "fetcher",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T15:55:01.388014+00:00"
    },
    {
      "data": {
        "endpoint": "parking-sites",
        "record_count": 28303
      },
      "job_name": "fetcher",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T15:55:03.931756+00:00"
    },
    {
      "data": {
        "endpoint": "sources"
      },
      "job_name": "fetcher",
      "message": "persisting endpoint payload",
      "status": "running",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T15:55:03.931933+00:00"
    },
    {
      "data": {
        "endpoint": "sources",
        "record_count": 67
      },
      "job_name": "fetcher",
      "message": "endpoint payload persisted",
      "status": "success",
      "step": "endpoint.persist",
      "timestamp": "2026-05-30T15:55:03.943243+00:00"
    },
    {
      "job_name": "fetcher",
      "message": "refreshing active realtime parking entities",
      "status": "running",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T15:55:03.943359+00:00"
    },
    {
      "data": {
        "parking_site_record_count": 511,
        "parking_spot_record_count": 1379
      },
      "job_name": "fetcher",
      "message": "active realtime parking entities refreshed",
      "status": "success",
      "step": "endpoint.refresh_realtime_sites",
      "timestamp": "2026-05-30T15:55:07.260018+00:00"
    },
    {
      "data": {
        "counts": {
          "parking-sites": 28303,
          "parking-sites-realtime-active": 511,
          "parking-spots": 3663,
          "parking-spots-realtime-active": 1379,
          "sources": 67
        },
        "duration_ms": 17968
      },
      "job_name": "fetcher",
      "message": "fetch cycle completed",
      "status": "success",
      "step": "cycle.finish",
      "timestamp": "2026-05-30T15:55:07.261880+00:00"
    }
  ]
}
analyzer-realtime running 2026-05-30 15:54:49 - - ms -
Page 6 of 8