{
 "engine": "report-engine",
 "seed": 42,
 "run_at": "06:00",
 "params": {
  "seed": 42,
  "p_crm429": 0.15,
  "p_sheets429": 0.1,
  "p_schema": 0.07,
  "p_late": 0.12,
  "p_rowcount": 0.05
 },
 "constants": {
  "mornings": 30,
  "backoff_s": [
   2,
   4,
   8,
   16
  ],
  "poll_s": 300,
  "max_polls": 9,
  "rowcount_tol": 0.2,
  "anomaly_factor": 0.65,
  "manual_min": 108,
  "manual_err": "1/12",
  "review_min": 8,
  "block_fix_min": 25,
  "stale_read_min": 5,
  "typical_rows": {
   "mysql": 18400,
   "crm": 6200,
   "zoho": 3900
  }
 },
 "tasks": [
  {
   "task": "extract_mysql",
   "base_s": 40,
   "waits_for": [],
   "runs": 30,
   "mean_s": 40
  },
  {
   "task": "extract_crm",
   "base_s": 55,
   "waits_for": [],
   "runs": 30,
   "mean_s": 56
  },
  {
   "task": "extract_zoho",
   "base_s": 35,
   "waits_for": [],
   "runs": 32,
   "mean_s": 35
  },
  {
   "task": "gate_schema",
   "base_s": 3,
   "waits_for": [
    "extract_*"
   ],
   "runs": 87,
   "mean_s": 3
  },
  {
   "task": "gate_freshness",
   "base_s": 4,
   "waits_for": [
    "gate_schema"
   ],
   "runs": 87,
   "mean_s": 4
  },
  {
   "task": "gate_rowcount",
   "base_s": 3,
   "waits_for": [
    "gate_freshness"
   ],
   "runs": 85,
   "mean_s": 3
  },
  {
   "task": "transform_orders",
   "base_s": 25,
   "waits_for": [
    "gate_rowcount:mysql",
    "gate_rowcount:crm"
   ],
   "runs": 25,
   "mean_s": 24
  },
  {
   "task": "transform_collections",
   "base_s": 20,
   "waits_for": [
    "gate_rowcount:zoho",
    "gate_rowcount:mysql"
   ],
   "runs": 25,
   "mean_s": 19
  },
  {
   "task": "publish_sheets",
   "base_s": 30,
   "waits_for": [
    "transform_orders",
    "transform_collections"
   ],
   "runs": 25,
   "mean_s": 29
  },
  {
   "task": "notify",
   "base_s": 2,
   "waits_for": [
    "publish_sheets"
   ],
   "runs": 30,
   "mean_s": 1
  }
 ],
 "totals": {
  "mornings": 30,
  "clean": 15,
  "retried": 7,
  "stale": 3,
  "blocked": 5,
  "published": 25,
  "wrong_numbers_prevented": 5,
  "gate_catches": {
   "schema": 3,
   "late_landed": 2,
   "late_stale": 3,
   "rowcount": 2
  },
  "retries_total": 17,
  "mean_publish_s": 605,
  "p95_publish_s": 2798,
  "analyst_min_after": 380,
  "manual_min_before": 3240,
  "minutes_returned": 2860,
  "errors_shipped_manual": 3,
  "errors_shipped_engine": 0
 },
 "worst_morning": 7,
 "mornings": [
  {
   "day": 0,
   "status": "STALE",
   "publish_s": 2798,
   "total_s": 2799,
   "retries": 0,
   "incidents": [
    "late mysql (stale)"
   ],
   "analyst_min": 13,
   "manual_error": false
  },
  {
   "day": 1,
   "status": "RETRIED",
   "publish_s": 161,
   "total_s": 163,
   "retries": 3,
   "incidents": [
    "CRM 429 x1",
    "Sheets 429 x2"
   ],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 2,
   "status": "CLEAN",
   "publish_s": 117,
   "total_s": 119,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 3,
   "status": "CLEAN",
   "publish_s": 121,
   "total_s": 123,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 4,
   "status": "CLEAN",
   "publish_s": 118,
   "total_s": 120,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 5,
   "status": "CLEAN",
   "publish_s": 124,
   "total_s": 126,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 6,
   "status": "RETRIED",
   "publish_s": 141,
   "total_s": 143,
   "retries": 1,
   "incidents": [
    "CRM 429 x1"
   ],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 7,
   "status": "STALE",
   "publish_s": 2798,
   "total_s": 2800,
   "retries": 0,
   "incidents": [
    "late mysql (stale)"
   ],
   "analyst_min": 13,
   "manual_error": false
  },
  {
   "day": 8,
   "status": "RETRIED",
   "publish_s": 141,
   "total_s": 143,
   "retries": 2,
   "incidents": [
    "Sheets 429 x2"
   ],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 9,
   "status": "CLEAN",
   "publish_s": 119,
   "total_s": 121,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 10,
   "status": "BLOCKED",
   "publish_s": null,
   "total_s": 71,
   "retries": 0,
   "incidents": [
    "schema drift mysql"
   ],
   "analyst_min": 33,
   "manual_error": false
  },
  {
   "day": 11,
   "status": "RETRIED",
   "publish_s": 130,
   "total_s": 132,
   "retries": 1,
   "incidents": [
    "CRM 429 x1"
   ],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 12,
   "status": "RETRIED",
   "publish_s": 142,
   "total_s": 144,
   "retries": 2,
   "incidents": [
    "CRM 429 x2"
   ],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 13,
   "status": "CLEAN",
   "publish_s": 137,
   "total_s": 139,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 14,
   "status": "BLOCKED",
   "publish_s": null,
   "total_s": 63,
   "retries": 0,
   "incidents": [
    "schema drift zoho"
   ],
   "analyst_min": 33,
   "manual_error": true
  },
  {
   "day": 15,
   "status": "CLEAN",
   "publish_s": 125,
   "total_s": 127,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 16,
   "status": "STALE",
   "publish_s": 2791,
   "total_s": 2793,
   "retries": 0,
   "incidents": [
    "late zoho (stale)"
   ],
   "analyst_min": 13,
   "manual_error": false
  },
  {
   "day": 17,
   "status": "BLOCKED",
   "publish_s": null,
   "total_s": 62,
   "retries": 0,
   "incidents": [
    "row-count anomaly mysql"
   ],
   "analyst_min": 33,
   "manual_error": false
  },
  {
   "day": 18,
   "status": "CLEAN",
   "publish_s": 141,
   "total_s": 143,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": true
  },
  {
   "day": 19,
   "status": "CLEAN",
   "publish_s": 115,
   "total_s": 117,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 20,
   "status": "BLOCKED",
   "publish_s": null,
   "total_s": 84,
   "retries": 2,
   "incidents": [
    "CRM 429 x2",
    "schema drift crm"
   ],
   "analyst_min": 33,
   "manual_error": false
  },
  {
   "day": 21,
   "status": "RETRIED",
   "publish_s": 144,
   "total_s": 146,
   "retries": 3,
   "incidents": [
    "Sheets 429 x3"
   ],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 22,
   "status": "BLOCKED",
   "publish_s": null,
   "total_s": 65,
   "retries": 0,
   "incidents": [
    "row-count anomaly mysql"
   ],
   "analyst_min": 33,
   "manual_error": false
  },
  {
   "day": 23,
   "status": "CLEAN",
   "publish_s": 117,
   "total_s": 119,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 24,
   "status": "CLEAN",
   "publish_s": 1922,
   "total_s": 1924,
   "retries": 0,
   "incidents": [
    "late zoho (landed)"
   ],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 25,
   "status": "CLEAN",
   "publish_s": 132,
   "total_s": 134,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 26,
   "status": "CLEAN",
   "publish_s": 114,
   "total_s": 116,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 27,
   "status": "RETRIED",
   "publish_s": 2238,
   "total_s": 2240,
   "retries": 3,
   "incidents": [
    "CRM 429 x3",
    "late zoho (landed)"
   ],
   "analyst_min": 8,
   "manual_error": true
  },
  {
   "day": 28,
   "status": "CLEAN",
   "publish_s": 114,
   "total_s": 116,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  },
  {
   "day": 29,
   "status": "CLEAN",
   "publish_s": 133,
   "total_s": 135,
   "retries": 0,
   "incidents": [],
   "analyst_min": 8,
   "manual_error": false
  }
 ],
 "worst": {
  "day": 7,
  "segments": [
   {
    "task": "extract_mysql",
    "start": 0,
    "end": 39,
    "kind": "run",
    "note": "18908 rows"
   },
   {
    "task": "gate_schema",
    "start": 39,
    "end": 42,
    "kind": "pass",
    "note": "mysql"
   },
   {
    "task": "gate_freshness",
    "start": 42,
    "end": 2742,
    "kind": "wait",
    "note": "polling"
   },
   {
    "task": "gate_freshness",
    "start": 2742,
    "end": 2746,
    "kind": "stale",
    "note": "mysql"
   },
   {
    "task": "gate_rowcount",
    "start": 2746,
    "end": 2749,
    "kind": "pass",
    "note": "mysql"
   },
   {
    "task": "extract_crm",
    "start": 0,
    "end": 53,
    "kind": "run",
    "note": "6176 rows"
   },
   {
    "task": "gate_schema",
    "start": 53,
    "end": 56,
    "kind": "pass",
    "note": "crm"
   },
   {
    "task": "gate_freshness",
    "start": 56,
    "end": 60,
    "kind": "pass",
    "note": "crm"
   },
   {
    "task": "gate_rowcount",
    "start": 60,
    "end": 63,
    "kind": "pass",
    "note": "crm"
   },
   {
    "task": "extract_zoho",
    "start": 0,
    "end": 42,
    "kind": "run",
    "note": "3774 rows"
   },
   {
    "task": "gate_schema",
    "start": 42,
    "end": 45,
    "kind": "pass",
    "note": "zoho"
   },
   {
    "task": "gate_freshness",
    "start": 45,
    "end": 49,
    "kind": "pass",
    "note": "zoho"
   },
   {
    "task": "gate_rowcount",
    "start": 49,
    "end": 52,
    "kind": "pass",
    "note": "zoho"
   },
   {
    "task": "transform_orders",
    "start": 2749,
    "end": 2772,
    "kind": "run",
    "note": ""
   },
   {
    "task": "transform_collections",
    "start": 2749,
    "end": 2767,
    "kind": "run",
    "note": ""
   },
   {
    "task": "publish_sheets",
    "start": 2772,
    "end": 2798,
    "kind": "run",
    "note": "batch write"
   },
   {
    "task": "notify",
    "start": 2798,
    "end": 2800,
    "kind": "run",
    "note": ""
   }
  ],
  "log": [
   "06:00:00 extract_mysql started",
   "06:00:00 extract_crm started",
   "06:00:00 extract_zoho started",
   "06:00:39 extract_mysql done \u00b7 18908 rows",
   "06:00:42 gate_schema ok \u00b7 mysql",
   "06:00:42 gate_freshness \u00b7 mysql has no rows after midnight \u00b7 polling every 5 min, up to 45",
   "06:00:42 extract_zoho done \u00b7 3774 rows",
   "06:00:45 gate_schema ok \u00b7 zoho",
   "06:00:49 gate_freshness ok \u00b7 zoho",
   "06:00:52 gate_rowcount ok \u00b7 zoho \u00b7 3774 rows (+0% vs last)",
   "06:00:53 extract_crm done \u00b7 6176 rows",
   "06:00:56 gate_schema ok \u00b7 crm",
   "06:01:00 gate_freshness ok \u00b7 crm",
   "06:01:03 gate_rowcount ok \u00b7 crm \u00b7 6176 rows (-2% vs last)",
   "06:45:46 gate_freshness \u00b7 mysql still stale after 45 min \u00b7 continuing with a STALE banner \u00b7 alert sent",
   "06:45:49 gate_rowcount ok \u00b7 mysql \u00b7 18908 rows (+3% vs last)",
   "06:45:49 transform_orders started",
   "06:45:49 transform_collections started",
   "06:46:07 transform_collections done",
   "06:46:12 transform_orders done",
   "06:46:12 publish_sheets started \u00b7 STALE banner on every tab",
   "06:46:38 publish_sheets done \u00b7 one batch write per tab \u00b7 sheet is live",
   "06:46:38 notify started",
   "06:46:40 notify \u00b7 STALE \u00b7 published with a STALE banner \u00b7 owner told"
  ]
 }
}