{
  "at": "2026-10-30T12:28:37.330436+00:00",
  "layer": "Live isolated HTTP API; no browser claim",
  "read_and_preview_only": true,
  "requests": [
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring",
      "status": 200
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/workspace",
      "status": 200
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar?start_date=2026-11-02&end_date=2026-11-08",
      "status": 200
    },
    {
      "actor": "owner",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969",
      "status": 200
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/history",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "POST preview only",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/preview",
      "status": 200
    },
    {
      "actor": "second business",
      "method": "POST preview only",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/preview",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/runs/211cf55a53425cda335760ae3d58e31e",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/runs/211cf55a53425cda335760ae3d58e31e",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/runs/0b3e3f2c72c74b145cc1ff516bb74c04",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/runs/0b3e3f2c72c74b145cc1ff516bb74c04",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/runs/2fd8513be59d19920fa6d917ee49b2dd",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/ec0a006df51f75f20bb1dc34871bc969/runs/2fd8513be59d19920fa6d917ee49b2dd",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/f7fb432cba1e9e2e6b25e7469e8f87ff/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/f7fb432cba1e9e2e6b25e7469e8f87ff/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/bc4c119d17e234579b43342254d671d6/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/bc4c119d17e234579b43342254d671d6/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/c51ee014fa0a0e0b1af140336507782f/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/c51ee014fa0a0e0b1af140336507782f/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/82b2f79c0fec7080a5af9adb1a370ca4/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/82b2f79c0fec7080a5af9adb1a370ca4/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/3848038877f2d01fff3eb605e5f59e8a/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/3848038877f2d01fff3eb605e5f59e8a/history",
      "status": 404
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/jobs/030a91e3f84c5b96395ab6649ba51b36",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7",
      "status": 200
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/history",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "POST preview only",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/preview",
      "status": 200
    },
    {
      "actor": "second business",
      "method": "POST preview only",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/preview",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/99473f0f3f6b9890cd8c67a432272ec2",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/99473f0f3f6b9890cd8c67a432272ec2",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/b8078b318a76dbaba80ca2848c58a1f0",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/b8078b318a76dbaba80ca2848c58a1f0",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/61159378e3ba1b4881c3e8ffede00258",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/61159378e3ba1b4881c3e8ffede00258",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/67071f59632be81b7679ef58ec7afac5",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/67071f59632be81b7679ef58ec7afac5",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/c9174d8c1ef8c95228f8cc39e0a560cd",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/c9174d8c1ef8c95228f8cc39e0a560cd",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/460c4a211d3e0db631bac257db66bf20",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/460c4a211d3e0db631bac257db66bf20",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/22fd6b0addd2ab17f938cb73b766928b",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/22fd6b0addd2ab17f938cb73b766928b",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/8c675c805470b1cfc3fc824055a11404",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/8c675c805470b1cfc3fc824055a11404",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/caf79c6eba87db05a9e1f9e8db5aaf31",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/caf79c6eba87db05a9e1f9e8db5aaf31",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/115837d6c1b558a36dc2265f7956f694",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/115837d6c1b558a36dc2265f7956f694",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/a668746808eaafa2c5860028b81e721e",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/29240f5cdb8346bb7e46c2ce1279c1b7/runs/a668746808eaafa2c5860028b81e721e",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/011e20ecec6c86815ecf31544de3eaca/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/011e20ecec6c86815ecf31544de3eaca/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/9d95e469c2525d863e9dd619372337a3/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/9d95e469c2525d863e9dd619372337a3/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/b908ccc8cad2b5bfb2fccc7ffcc7352d/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/b908ccc8cad2b5bfb2fccc7ffcc7352d/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/3761b231e6190c8f98fe22914ea8f0ef/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/3761b231e6190c8f98fe22914ea8f0ef/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/97655bdae6bce1c78ccb76304fbb0966/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/97655bdae6bce1c78ccb76304fbb0966/history",
      "status": 404
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/jobs/d2e0305544b4716f2f44a1417667c758",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89",
      "status": 200
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/history",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "POST preview only",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/preview",
      "status": 200
    },
    {
      "actor": "second business",
      "method": "POST preview only",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/preview",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/runs/f102f78be3f0b599d327ea7a0e5b16f9",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/runs/f102f78be3f0b599d327ea7a0e5b16f9",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/runs/daeabeb4b97f80c69913713bcdd6d722",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/2f6a2036d0dc07b448b693ba911c6d89/runs/daeabeb4b97f80c69913713bcdd6d722",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/d3aa88e067b6a35420d639ee5f3f3e35/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/d3aa88e067b6a35420d639ee5f3f3e35/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/4abe7f73eb716e6cc0ddab4d20c54c8b/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/4abe7f73eb716e6cc0ddab4d20c54c8b/history",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/calendar/5f130be553ca734509df7dea16c526fb/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/calendar/5f130be553ca734509df7dea16c526fb/history",
      "status": 404
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/jobs/255893a8db40b5ebf8c05e152ac711b9",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a",
      "status": 200
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/history",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "POST preview only",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/preview",
      "status": 200
    },
    {
      "actor": "second business",
      "method": "POST preview only",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/preview",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/runs/c1971fc8f735f8ec28584d81403dc533",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/runs/c1971fc8f735f8ec28584d81403dc533",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/runs/3b0f422039b9c3dde8c895a43531a2ee",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/0a0d06d692fe0f99f64c18782ee0a44a/runs/3b0f422039b9c3dde8c895a43531a2ee",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "GET",
      "path": "/api/recurring/62e89c52f5a9070fa2c061b566f0f028",
      "status": 200
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/62e89c52f5a9070fa2c061b566f0f028",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/62e89c52f5a9070fa2c061b566f0f028",
      "status": 404
    },
    {
      "actor": "anonymous",
      "method": "GET",
      "path": "/api/recurring/62e89c52f5a9070fa2c061b566f0f028/history",
      "status": 401
    },
    {
      "actor": "second business",
      "method": "GET",
      "path": "/api/recurring/62e89c52f5a9070fa2c061b566f0f028/history",
      "status": 404
    },
    {
      "actor": "owner",
      "method": "POST preview only",
      "path": "/api/recurring/62e89c52f5a9070fa2c061b566f0f028/preview",
      "status": 200
    },
    {
      "actor": "second business",
      "method": "POST preview only",
      "path": "/api/recurring/62e89c52f5a9070fa2c061b566f0f028/preview",
      "status": 404
    }
  ],
  "plans": {
    "Protected history QA": {
      "contract_id": "ec0a006df51f75f20bb1dc34871bc969",
      "contract_version": 4,
      "today_london": "2026-10-30",
      "operation": {
        "start_date": "2026-11-02",
        "end_date": "2026-11-16",
        "action": "generate"
      },
      "rows": [
        {
          "nominal_date": "2026-11-02",
          "occurrence_id": "9dd27223d5da30d67d6c959b5100bc8e",
          "booking_id": "c51ee014fa0a0e0b1af140336507782f",
          "rule_id": "2b15d86a73db5f5c13c10dcc0235f648",
          "rule_revision": 3,
          "status": "cancelled",
          "action": "keep",
          "reasons": [
            "Deliberately cancelled; regeneration does not recreate it."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "c51ee014fa0a0e0b1af140336507782f",
            "kind": "job",
            "job_id": "030a91e3f84c5b96395ab6649ba51b36",
            "title": "Protected history QA",
            "resource_ids": [
              "887fbd90fbca760147743caae28ba075"
            ],
            "resource_snapshot": [
              {
                "id": "887fbd90fbca760147743caae28ba075",
                "name": "Worker 0",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-02",
            "end_date": "2026-11-02",
            "start_time": "09:00",
            "end_time": "10:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-02T09:00:00+00:00",
            "end_utc": "2026-11-02T10:00:00+00:00",
            "note": "",
            "version": 2,
            "archived": 1,
            "created_at": "2026-10-30T12:11:25+00:00",
            "updated_at": "2026-10-30T12:24:07+00:00"
          }
        },
        {
          "nominal_date": "2026-11-09",
          "occurrence_id": "254b5a038f2af3ab67dfaff4d11ad656",
          "booking_id": "82b2f79c0fec7080a5af9adb1a370ca4",
          "rule_id": "2b15d86a73db5f5c13c10dcc0235f648",
          "rule_revision": 3,
          "status": "already_scheduled",
          "action": "keep",
          "reasons": [
            "Existing occurrence retained; no duplicate booking."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "82b2f79c0fec7080a5af9adb1a370ca4",
            "kind": "job",
            "job_id": "030a91e3f84c5b96395ab6649ba51b36",
            "title": "Protected history QA",
            "resource_ids": [
              "887fbd90fbca760147743caae28ba075"
            ],
            "resource_snapshot": [
              {
                "id": "887fbd90fbca760147743caae28ba075",
                "name": "Worker 0",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-09",
            "end_date": "2026-11-09",
            "start_time": "09:00",
            "end_time": "10:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-09T09:00:00+00:00",
            "end_utc": "2026-11-09T10:00:00+00:00",
            "note": "",
            "version": 1,
            "archived": 0,
            "created_at": "2026-10-30T12:11:25+00:00",
            "updated_at": "2026-10-30T12:11:25+00:00"
          }
        },
        {
          "nominal_date": "2026-11-16",
          "occurrence_id": "1d342bed53d9ef82a330172778bab269",
          "booking_id": "3848038877f2d01fff3eb605e5f59e8a",
          "rule_id": "2b15d86a73db5f5c13c10dcc0235f648",
          "rule_revision": 3,
          "status": "already_scheduled",
          "action": "keep",
          "reasons": [
            "Existing occurrence retained; no duplicate booking."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "3848038877f2d01fff3eb605e5f59e8a",
            "kind": "job",
            "job_id": "030a91e3f84c5b96395ab6649ba51b36",
            "title": "Protected history QA",
            "resource_ids": [
              "887fbd90fbca760147743caae28ba075"
            ],
            "resource_snapshot": [
              {
                "id": "887fbd90fbca760147743caae28ba075",
                "name": "Worker 0",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-16",
            "end_date": "2026-11-16",
            "start_time": "09:00",
            "end_time": "10:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-16T09:00:00+00:00",
            "end_utc": "2026-11-16T10:00:00+00:00",
            "note": "",
            "version": 1,
            "archived": 0,
            "created_at": "2026-10-30T12:11:25+00:00",
            "updated_at": "2026-10-30T12:11:25+00:00"
          }
        }
      ],
      "skipped_months": [],
      "errors": [],
      "metadata": {},
      "new_rule": null,
      "new_block": null,
      "block_change": null,
      "change_count": 0,
      "retained_for_separate_review": 0,
      "can_confirm": false,
      "atomic": "Every shown ready change commits together, or none does. Protected/overridden visits are retained only with explicit acknowledgement.",
      "preview_hash": "40d1c72c10c1e80e44a1c7bc15eb8d456f934e771f3075a45f4691b8e80e68dd"
    },
    "Weekly garden QA": {
      "contract_id": "29240f5cdb8346bb7e46c2ce1279c1b7",
      "contract_version": 12,
      "today_london": "2026-10-30",
      "operation": {
        "start_date": "2026-11-02",
        "end_date": "2026-11-30",
        "action": "generate"
      },
      "rows": [
        {
          "nominal_date": "2026-11-02",
          "occurrence_id": "4a90c9af1cf82368e7333ea9fabb86fb",
          "booking_id": "011e20ecec6c86815ecf31544de3eaca",
          "rule_id": "5b58837333ae4d4c3f4137491126548c",
          "rule_revision": 1,
          "status": "retained_override",
          "action": "keep",
          "reasons": [
            "Manual override retained; review this visit separately."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "011e20ecec6c86815ecf31544de3eaca",
            "kind": "job",
            "job_id": "d2e0305544b4716f2f44a1417667c758",
            "title": "Weekly garden QA",
            "resource_ids": [
              "4f1c08062af36f32094ebee6eb0b1fe4"
            ],
            "resource_snapshot": [
              {
                "id": "4f1c08062af36f32094ebee6eb0b1fe4",
                "name": "Alex QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-03",
            "end_date": "2026-11-03",
            "start_time": "13:00",
            "end_time": "14:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-03T13:00:00+00:00",
            "end_utc": "2026-11-03T14:00:00+00:00",
            "note": "PRIVATE REPEAT NOTE: retain after validation and leave checks.",
            "version": 2,
            "archived": 0,
            "created_at": "2026-10-30T12:15:06+00:00",
            "updated_at": "2026-10-30T12:21:22+00:00"
          }
        },
        {
          "nominal_date": "2026-11-09",
          "occurrence_id": "bc995ed1cff253ef174864a517ec72b6",
          "booking_id": "9d95e469c2525d863e9dd619372337a3",
          "rule_id": "5b58837333ae4d4c3f4137491126548c",
          "rule_revision": 1,
          "status": "cancelled",
          "action": "keep",
          "reasons": [
            "Deliberately cancelled; regeneration does not recreate it."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "9d95e469c2525d863e9dd619372337a3",
            "kind": "job",
            "job_id": "d2e0305544b4716f2f44a1417667c758",
            "title": "Weekly garden QA",
            "resource_ids": [
              "4f1c08062af36f32094ebee6eb0b1fe4"
            ],
            "resource_snapshot": [
              {
                "id": "4f1c08062af36f32094ebee6eb0b1fe4",
                "name": "Alex QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-09",
            "end_date": "2026-11-09",
            "start_time": "09:00",
            "end_time": "10:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-09T09:00:00+00:00",
            "end_utc": "2026-11-09T10:00:00+00:00",
            "note": "PRIVATE REPEAT NOTE: retain after validation and leave checks.",
            "version": 2,
            "archived": 1,
            "created_at": "2026-10-30T12:15:06+00:00",
            "updated_at": "2026-10-30T12:21:44+00:00"
          }
        },
        {
          "nominal_date": "2026-11-16",
          "occurrence_id": "971c7d3f417c59a4f2f0beee31b5de72",
          "booking_id": "b908ccc8cad2b5bfb2fccc7ffcc7352d",
          "rule_id": "d4b5e6af13ad07067c1a8292e4a50bd2",
          "rule_revision": 8,
          "status": "already_scheduled",
          "action": "keep",
          "reasons": [
            "Existing occurrence retained; no duplicate booking."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "b908ccc8cad2b5bfb2fccc7ffcc7352d",
            "kind": "job",
            "job_id": "d2e0305544b4716f2f44a1417667c758",
            "title": "Weekly garden QA",
            "resource_ids": [
              "4f1c08062af36f32094ebee6eb0b1fe4"
            ],
            "resource_snapshot": [
              {
                "id": "4f1c08062af36f32094ebee6eb0b1fe4",
                "name": "Alex QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-16",
            "end_date": "2026-11-16",
            "start_time": "10:00",
            "end_time": "11:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-16T10:00:00+00:00",
            "end_utc": "2026-11-16T11:00:00+00:00",
            "note": "PRIVATE REPEAT NOTE: retain after validation and leave checks.",
            "version": 4,
            "archived": 0,
            "created_at": "2026-10-30T12:15:06+00:00",
            "updated_at": "2026-10-30T12:22:38+00:00"
          }
        },
        {
          "nominal_date": "2026-11-23",
          "occurrence_id": "9c52a2382e2a80d0f724e20ef8c30866",
          "booking_id": "3761b231e6190c8f98fe22914ea8f0ef",
          "rule_id": "d4b5e6af13ad07067c1a8292e4a50bd2",
          "rule_revision": 8,
          "status": "excluded",
          "action": "keep",
          "reasons": [
            "Covered by active contract date exclusions."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "3761b231e6190c8f98fe22914ea8f0ef",
            "kind": "job",
            "job_id": "d2e0305544b4716f2f44a1417667c758",
            "title": "Weekly garden QA",
            "resource_ids": [
              "4f1c08062af36f32094ebee6eb0b1fe4"
            ],
            "resource_snapshot": [
              {
                "id": "4f1c08062af36f32094ebee6eb0b1fe4",
                "name": "Alex QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-23",
            "end_date": "2026-11-23",
            "start_time": "09:00",
            "end_time": "10:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-23T09:00:00+00:00",
            "end_utc": "2026-11-23T10:00:00+00:00",
            "note": "PRIVATE REPEAT NOTE: retain after validation and leave checks.",
            "version": 2,
            "archived": 1,
            "created_at": "2026-10-30T12:15:06+00:00",
            "updated_at": "2026-10-30T12:22:03+00:00"
          }
        },
        {
          "nominal_date": "2026-11-30",
          "occurrence_id": "65a407fa6f71db73631fa78393903c7d",
          "booking_id": "97655bdae6bce1c78ccb76304fbb0966",
          "rule_id": "d4b5e6af13ad07067c1a8292e4a50bd2",
          "rule_revision": 8,
          "status": "excluded",
          "action": "keep",
          "reasons": [
            "Covered by active contract date exclusions."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "97655bdae6bce1c78ccb76304fbb0966",
            "kind": "job",
            "job_id": "d2e0305544b4716f2f44a1417667c758",
            "title": "Weekly garden QA",
            "resource_ids": [
              "4f1c08062af36f32094ebee6eb0b1fe4"
            ],
            "resource_snapshot": [
              {
                "id": "4f1c08062af36f32094ebee6eb0b1fe4",
                "name": "Alex QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2026-11-30",
            "end_date": "2026-11-30",
            "start_time": "09:00",
            "end_time": "10:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2026-11-30T09:00:00+00:00",
            "end_utc": "2026-11-30T10:00:00+00:00",
            "note": "PRIVATE REPEAT NOTE: retain after validation and leave checks.",
            "version": 2,
            "archived": 1,
            "created_at": "2026-10-30T12:15:06+00:00",
            "updated_at": "2026-10-30T12:22:08+00:00"
          }
        }
      ],
      "skipped_months": [],
      "errors": [],
      "metadata": {},
      "new_rule": null,
      "new_block": null,
      "block_change": null,
      "change_count": 0,
      "retained_for_separate_review": 1,
      "can_confirm": false,
      "atomic": "Every shown ready change commits together, or none does. Protected/overridden visits are retained only with explicit acknowledgement.",
      "preview_hash": "570995d6544ad7879027342962c1423eef33d28756ff628ac790086401864680"
    },
    "Month-end QA": {
      "contract_id": "2f6a2036d0dc07b448b693ba911c6d89",
      "contract_version": 3,
      "today_london": "2026-10-30",
      "operation": {
        "start_date": "2027-01-01",
        "end_date": "2027-03-31",
        "action": "generate"
      },
      "rows": [
        {
          "nominal_date": "2027-01-31",
          "occurrence_id": "206e285b0761825dfbf83e3b64d6cd94",
          "booking_id": "d3aa88e067b6a35420d639ee5f3f3e35",
          "rule_id": "27f6311a9a332bbdf602991a93dd5030",
          "rule_revision": 1,
          "status": "already_scheduled",
          "action": "keep",
          "reasons": [
            "Existing occurrence retained; no duplicate booking."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "d3aa88e067b6a35420d639ee5f3f3e35",
            "kind": "job",
            "job_id": "255893a8db40b5ebf8c05e152ac711b9",
            "title": "Month-end QA",
            "resource_ids": [
              "fd360a618287955dc105e33b3f56252f"
            ],
            "resource_snapshot": [
              {
                "id": "fd360a618287955dc105e33b3f56252f",
                "name": "Blair QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2027-01-31",
            "end_date": "2027-01-31",
            "start_time": "11:00",
            "end_time": "12:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2027-01-31T11:00:00+00:00",
            "end_utc": "2027-01-31T12:00:00+00:00",
            "note": "",
            "version": 1,
            "archived": 0,
            "created_at": "2026-10-30T12:24:37+00:00",
            "updated_at": "2026-10-30T12:24:37+00:00"
          }
        },
        {
          "nominal_date": "2027-02-28",
          "occurrence_id": "0bd7b6eaf34254718eef4e81327e2b88",
          "booking_id": "4abe7f73eb716e6cc0ddab4d20c54c8b",
          "rule_id": "27f6311a9a332bbdf602991a93dd5030",
          "rule_revision": 1,
          "status": "already_scheduled",
          "action": "keep",
          "reasons": [
            "Existing occurrence retained; no duplicate booking."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "4abe7f73eb716e6cc0ddab4d20c54c8b",
            "kind": "job",
            "job_id": "255893a8db40b5ebf8c05e152ac711b9",
            "title": "Month-end QA",
            "resource_ids": [
              "fd360a618287955dc105e33b3f56252f"
            ],
            "resource_snapshot": [
              {
                "id": "fd360a618287955dc105e33b3f56252f",
                "name": "Blair QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2027-02-28",
            "end_date": "2027-02-28",
            "start_time": "11:00",
            "end_time": "12:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2027-02-28T11:00:00+00:00",
            "end_utc": "2027-02-28T12:00:00+00:00",
            "note": "",
            "version": 1,
            "archived": 0,
            "created_at": "2026-10-30T12:24:37+00:00",
            "updated_at": "2026-10-30T12:24:37+00:00"
          }
        },
        {
          "nominal_date": "2027-03-31",
          "occurrence_id": "5d5cc269f970513b59e46bce33af6fd9",
          "booking_id": "5f130be553ca734509df7dea16c526fb",
          "rule_id": "27f6311a9a332bbdf602991a93dd5030",
          "rule_revision": 1,
          "status": "already_scheduled",
          "action": "keep",
          "reasons": [
            "Existing occurrence retained; no duplicate booking."
          ],
          "change": false,
          "target": null,
          "current_booking": {
            "id": "5f130be553ca734509df7dea16c526fb",
            "kind": "job",
            "job_id": "255893a8db40b5ebf8c05e152ac711b9",
            "title": "Month-end QA",
            "resource_ids": [
              "fd360a618287955dc105e33b3f56252f"
            ],
            "resource_snapshot": [
              {
                "id": "fd360a618287955dc105e33b3f56252f",
                "name": "Blair QA",
                "colour": "#245648"
              }
            ],
            "whole_team": 0,
            "all_day": 0,
            "start_date": "2027-03-31",
            "end_date": "2027-03-31",
            "start_time": "11:00",
            "end_time": "12:00",
            "start_fold": null,
            "end_fold": null,
            "start_utc": "2027-03-31T10:00:00+00:00",
            "end_utc": "2027-03-31T11:00:00+00:00",
            "note": "",
            "version": 1,
            "archived": 0,
            "created_at": "2026-10-30T12:24:37+00:00",
            "updated_at": "2026-10-30T12:24:37+00:00"
          }
        }
      ],
      "skipped_months": [],
      "errors": [
        "Activate the contract before scheduling or restoring visits."
      ],
      "metadata": {},
      "new_rule": null,
      "new_block": null,
      "block_change": null,
      "change_count": 0,
      "retained_for_separate_review": 0,
      "can_confirm": false,
      "atomic": "Every shown ready change commits together, or none does. Protected/overridden visits are retained only with explicit acknowledgement.",
      "preview_hash": "b278f124071d4bcf31e8f44b42590e5d56d24405d120ccdfa7547b985d081096"
    },
    "Clock-change QA": {
      "contract_id": "0a0d06d692fe0f99f64c18782ee0a44a",
      "contract_version": 3,
      "today_london": "2026-10-30",
      "operation": {
        "start_date": "2027-03-28",
        "end_date": "2027-03-28",
        "action": "generate"
      },
      "rows": [
        {
          "nominal_date": "2027-03-28",
          "occurrence_id": "6b0eeb065b9a24e67ade5bc988f94827",
          "booking_id": null,
          "rule_id": "2e678cca9e592e159f952af52d732189",
          "rule_revision": 2,
          "status": "retained_paused",
          "action": "keep",
          "reasons": [
            "Definition is paused; existing bookings remain and excluded visits do not resume."
          ],
          "change": false,
          "target": null,
          "current_booking": null
        }
      ],
      "skipped_months": [],
      "errors": [
        "Restore the retired contract as paused first.",
        "Activate the contract before scheduling or restoring visits."
      ],
      "metadata": {},
      "new_rule": null,
      "new_block": null,
      "block_change": null,
      "change_count": 0,
      "retained_for_separate_review": 0,
      "can_confirm": false,
      "atomic": "Every shown ready change commits together, or none does. Protected/overridden visits are retained only with explicit acknowledgement.",
      "preview_hash": "38cddac9dbe56fd647959619c17245afb96495f916e026877dd275f96496691e"
    },
    "Archived-person QA": {
      "contract_id": "62e89c52f5a9070fa2c061b566f0f028",
      "contract_version": 1,
      "today_london": "2026-10-30",
      "operation": {
        "start_date": "2026-11-02",
        "end_date": "2026-11-02",
        "action": "generate"
      },
      "rows": [
        {
          "nominal_date": "2026-11-02",
          "occurrence_id": null,
          "booking_id": null,
          "rule_id": "a9f971288e772c236b65be11143a87de",
          "rule_revision": 1,
          "status": "error",
          "action": "keep",
          "reasons": [
            "Choose an active team member. A selected person was archived."
          ],
          "change": false,
          "target": null,
          "current_booking": null
        }
      ],
      "skipped_months": [],
      "errors": [],
      "metadata": {},
      "new_rule": null,
      "new_block": null,
      "block_change": null,
      "change_count": 0,
      "retained_for_separate_review": 0,
      "can_confirm": false,
      "atomic": "Every shown ready change commits together, or none does. Protected/overridden visits are retained only with explicit acknowledgement.",
      "preview_hash": "6d4f184acf42a3d5876358dce5c023977fbd498ea0dc1d24d24fb7f0af5af126"
    }
  },
  "second_business_empty": true,
  "foreign_definition_history_review_and_booking_history_denied": true,
  "anonymous_private_recurrence_denied": true,
  "regeneration_has_no_confirmable_changes": true,
  "new_passwords_or_customer_staff_accounts_created": false,
  "staff_portal_browser_verified": false
}
