Prepared 07/04/2026 for external sharing with Cloudbeds regarding `StaleCloudbedsDataError` frequency, pattern, and overnight carry-forward behavior.
Over the last 30 days, the hourly Cloudbeds snapshot workflow logged 64 `StaleCloudbedsDataError` events. Most were fresh daytime staleness, meaning the Cloudbeds dataset refreshed during the same day but then aged past the 20-minute freshness threshold before the next hourly polling cycle.
A smaller but more operationally concerning subset, 11 events, were classified as overnight stale carry-forward. Those cases indicate the Cloudbeds dataset had already gone stale from an overnight or pre-dawn update and remained stale into later morning or daytime runs.
The average stale age at detection was 179.8 minutes, with a minimum observed stale age of 21 minutes and a maximum of 1,012 minutes. The large spread is explained by the overnight carry-forward clusters.
All overnight carry-forward events were concentrated in just two dataset-freeze clusters tied to a 2:08 AM CDT dataset timestamp.
| Measure | Value | Comment |
|---|---|---|
| Minimum stale age at detection | 21 minutes | Closest observed miss above the 20-minute freshness limit. |
| Maximum stale age at detection | 1,012 minutes | Extreme carry-forward event during the 06/28/2026 overnight freeze cluster. |
| Average stale age, all hits | 179.8 minutes | Overall average across all 64 recorded stale hits. |
| Average stale age, daytime staleness | 73.9 minutes | Shows that same-day refreshes were often still substantially behind the 20-minute threshold. |
| Average stale age, overnight carry-forward | 690.0 minutes | Reflects long-duration dataset freeze behavior rather than short refresh delays. |
| Date | Total Hits | Overnight Carry-Forward | Fresh Daytime Staleness |
|---|---|---|---|
| 06/22/2026 | 3 | 0 | 3 |
| 06/23/2026 | 6 | 0 | 6 |
| 06/24/2026 | 6 | 0 | 6 |
| 06/25/2026 | 6 | 0 | 6 |
| 06/26/2026 | 3 | 0 | 3 |
| 06/27/2026 | 5 | 0 | 5 |
| 06/28/2026 | 9 | 9 | 0 |
| 06/29/2026 | 1 | 0 | 1 |
| 06/30/2026 | 5 | 0 | 5 |
| 07/01/2026 | 10 | 2 | 8 |
| 07/02/2026 | 4 | 0 | 4 |
| 07/03/2026 | 2 | 0 | 2 |
| 07/04/2026 | 4 | 0 | 4 |
| Total | 64 | 11 | 53 |
| Cluster | Cloudbeds Dataset Timestamp | Impacted Scheduled Runs | Observed Age Range | Hits |
|---|---|---|---|---|
| Cluster A | 06/28/2026 2:08 AM CDT | 06/28/2026 11:00 AM CDT through 07:00 PM CDT | 532 to 1,012 minutes old | 9 |
| Cluster B | 07/01/2026 2:08 AM CDT | 07/01/2026 07:00 AM CDT and 08:00 AM CDT | 291 to 351 minutes old | 2 |
Operationally, these are the highest-signal events because they suggest the underlying dataset stopped refreshing well before the workflow resumed using it later in the day.
Source basis: `/Users/bobeagle/.openclaw/workspace/logs/hourly-cloudbeds-snapshot.log` and the current workflow guardrails in `/Users/bobeagle/.openclaw/workspace/scripts/send_hourly_cloudbeds_snapshot.py`.
Note: This report is intentionally focused on stale-data behavior, not on message-delivery outcomes or downstream business impact.