{"ok":true,"generated_at":"2026-08-22T17:51:47.363Z","snapshot_kind":"signals","history_count":8,"latest_snapshot":{"position":1,"generated_at":"2026-08-22T17:51:47.363Z","stored_at":"2026-08-22T17:52:03.150Z","primary_count":741,"extra_count":0,"age_minutes":1753,"fresh":false},"previous_snapshot":{"position":2,"generated_at":"2026-08-21T19:04:16.213Z","stored_at":"2026-08-21T19:04:30.527Z","primary_count":757,"extra_count":0,"age_minutes":3120,"fresh":false},"history":[{"position":1,"generated_at":"2026-08-22T17:51:47.363Z","stored_at":"2026-08-22T17:52:03.150Z","primary_count":741,"extra_count":0,"age_minutes":1753,"fresh":false},{"position":2,"generated_at":"2026-08-21T19:04:16.213Z","stored_at":"2026-08-21T19:04:30.527Z","primary_count":757,"extra_count":0,"age_minutes":3120,"fresh":false},{"position":3,"generated_at":"2026-08-21T19:03:24.980Z","stored_at":"2026-08-21T19:03:39.943Z","primary_count":757,"extra_count":0,"age_minutes":3121,"fresh":false},{"position":4,"generated_at":"2026-08-20T12:03:52.912Z","stored_at":"2026-08-20T12:04:10.273Z","primary_count":790,"extra_count":0,"age_minutes":4981,"fresh":false},{"position":5,"generated_at":"2026-08-14T22:58:46.546Z","stored_at":"2026-08-14T23:00:00.808Z","primary_count":782,"extra_count":0,"age_minutes":12966,"fresh":false},{"position":6,"generated_at":"2026-08-14T13:59:55.652Z","stored_at":"2026-08-14T14:01:07.807Z","primary_count":700,"extra_count":0,"age_minutes":13505,"fresh":false},{"position":7,"generated_at":"2026-08-12T02:20:27.722Z","stored_at":"2026-08-12T02:20:51.454Z","primary_count":798,"extra_count":0,"age_minutes":17084,"fresh":false},{"position":8,"generated_at":"2026-08-11T21:54:43.021Z","stored_at":"2026-08-11T21:55:06.643Z","primary_count":760,"extra_count":0,"age_minutes":17350,"fresh":false}],"latest_diff":{"snapshot_kind":"signals","current_generated_at":"2026-08-22T17:51:47.363Z","previous_generated_at":"2026-08-21T19:04:16.213Z","current_stored_at":"2026-08-22T17:52:03.150Z","previous_stored_at":"2026-08-21T19:04:30.527Z","row_diff":{"current_count":741,"previous_count":757,"delta_count":-16,"added_count":0,"removed_count":16,"changed_count":141,"unchanged_count":600,"added_rows":[],"removed_rows":[{"key":"phuket_berth_operability_context","change":"removed","label":"Phuket","path":"/entities/phuket/","current":null,"previous":{"score":82,"severity":"low","label":"Berth operability context is strong"}},{"key":"krabi_berth_operability_context","change":"removed","label":"Krabi","path":"/entities/krabi/","current":null,"previous":{"score":82,"severity":"low","label":"Berth operability context is strong"}},{"key":"koh-samui_berth_operability_context","change":"removed","label":"Koh Samui","path":"/entities/koh-samui/","current":null,"previous":{"score":66,"severity":"medium","label":"Berth operability context is workable"}},{"key":"koh-phangan_berth_operability_context","change":"removed","label":"Koh Phangan","path":"/entities/koh-phangan/","current":null,"previous":{"score":66,"severity":"medium","label":"Berth operability context is workable"}},{"key":"pattaya-chonburi_berth_operability_context","change":"removed","label":"Pattaya / Chonburi","path":"/entities/pattaya-chonburi/","current":null,"previous":{"score":66,"severity":"medium","label":"Berth operability context is workable"}},{"key":"patong_berth_operability_context","change":"removed","label":"Patong","path":"/entities/patong/","current":null,"previous":{"score":62,"severity":"medium","label":"Berth operability context is thin"}},{"key":"rawai-nai-harn_berth_operability_context","change":"removed","label":"Rawai / Nai Harn","path":"/entities/rawai-nai-harn/","current":null,"previous":{"score":78,"severity":"medium","label":"Berth operability context is workable"}},{"key":"bophut-fishermans-village_berth_operability_context","change":"removed","label":"Bophut / Fisherman's Village","path":"/entities/bophut-fishermans-village/","current":null,"previous":{"score":62,"severity":"medium","label":"Berth operability context is thin"}}],"changed_rows":[{"key":"bangkok_rain_risk","change":"changed","label":"Bangkok","path":"/entities/bangkok/","current":{"score":50,"severity":"high","label":"Rain risk is elevated"},"previous":{"score":68,"severity":"medium","label":"Rain risk is manageable"}},{"key":"bangkok_flight_delay_risk","change":"changed","label":"Bangkok","path":"/entities/bangkok/","current":{"score":60,"severity":"medium","label":"Airport weather delay risk is elevated"},"previous":{"score":63,"severity":"medium","label":"Airport weather delay risk is elevated"}},{"key":"bangkok_transport_friction","change":"changed","label":"Bangkok","path":"/entities/bangkok/","current":{"score":85,"severity":"low","label":"Transport friction is low"},"previous":{"score":88,"severity":"low","label":"Transport friction is low"}},{"key":"chiang-mai_rain_risk","change":"changed","label":"Chiang Mai","path":"/entities/chiang-mai/","current":{"score":54,"severity":"high","label":"Rain risk is elevated"},"previous":{"score":50,"severity":"high","label":"Rain risk is elevated"}},{"key":"chiang-mai_flight_delay_risk","change":"changed","label":"Chiang Mai","path":"/entities/chiang-mai/","current":{"score":61,"severity":"medium","label":"Airport weather delay risk is elevated"},"previous":{"score":60,"severity":"medium","label":"Airport weather delay risk is elevated"}},{"key":"chiang-mai_noise_risk","change":"changed","label":"Chiang Mai","path":"/entities/chiang-mai/","current":{"score":74,"severity":"medium","label":"Noise risk is moderate"},"previous":{"score":62,"severity":"medium","label":"Noise risk is moderate"}},{"key":"chiang-mai_transport_friction","change":"changed","label":"Chiang Mai","path":"/entities/chiang-mai/","current":{"score":63,"severity":"medium","label":"Transport friction is elevated"},"previous":{"score":62,"severity":"medium","label":"Transport friction is elevated"}},{"key":"phuket_aqi_risk","change":"changed","label":"Phuket","path":"/entities/phuket/","current":{"score":82,"severity":"low","label":"AQI risk is low"},"previous":{"score":92,"severity":"low","label":"AQI risk is very low"}}],"details_available":true},"context_diff":null},"data_status":{"generated_at":"2026-08-22T17:51:47.363Z","freshness":"stale","is_current":false}}