{"generated_at":"2026-08-22T17:51:47.142Z","storage":{"mode":"versioned-snapshot","snapshot_generated_at":"2026-08-22T17:51:47.142Z"},"family":{"id":"ferry-check","name":"Ferry check","decisionType":"ferry_check","status":"active","endpoint":"/api/decisions/ferry-check","note":"Checks pier and island-chain plans with live sea-state caution, public transfer support, ferry fragility, and honest refund logic.","output":"Ferry fragility, refund logic, and backup move."},"decision_count":3,"filters":{"destination":"","route":"","limit":50},"rows":[{"decision_id":"ferry_mainland-to-samui","decision_type":"ferry_check","subject_id":"mainland-to-samui","subject_name":"Mainland -> Samui ferry stack","subject_type":"ferry_route","score":49,"component_score":60.3,"penalty_points":11,"confidence":"Medium","label":"fragile","recommendation":"Mainland -> Samui ferry stack needs refund-friendly planning and a backup move.","best_for":"Travelers who intentionally build a mainland-to-island arrival day.","avoid_if":"You are pretending the road leg is a small detail.","check_first":["live weather fit and ferry fragility","last boat timing","pier check-in and transfer burden"],"next_action":"Treat the road-to-pier leg as part of the ferry decision, not a separate problem.","pivot":"Fly if the schedule is already fragile before you even reach the pier.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":10,"available_components":10,"live_components":9,"fallback_components":1,"defaulted_components":0,"coverage_ratio":1},"score_components":[{"key":"destination_fit","label":"Destination chain fit","score":57,"weight":0.22,"contribution":12.54,"source":"decision","signal_type":null,"entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"pier_confidence","label":"Pier confidence","score":97,"weight":0.14,"contribution":13.58,"source":"signal","signal_type":"source_confidence","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"pier_transfer_support","label":"Pier transfer support","score":23,"weight":0.14,"contribution":3.22,"source":"signal","signal_type":"pier_transfer_support","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"official_pier_support","label":"Official pier support","score":96.66666666666667,"weight":0.12,"contribution":11.6,"source":"signal","signal_type":"official_pier_support","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"berth_operability_context","label":"Berth operability context","score":96.83333333333334,"weight":0.1,"contribution":9.68,"source":"signal","signal_type":"berth_operability_context","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"ferry_fragility","label":"Ferry fragility","score":51,"weight":0.24,"contribution":12.24,"source":"signal","signal_type":"ferry_fragility","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"marine_warning_risk","label":"Marine warning risk","score":24,"weight":0.14,"contribution":3.36,"source":"signal","signal_type":"marine_warning_risk","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"rain_fit","label":"Weather fit","score":72,"weight":0.08,"contribution":5.76,"source":"signal","signal_type":"rain_risk","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"transport_stack","label":"Transfer burden","score":59.333333333333336,"weight":0.1,"contribution":5.93,"source":"signal","signal_type":"transport_friction","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"weakest_ferry_leg","label":"Weakest ferry leg","score":51,"weight":0.08,"contribution":4.08,"source":"signal","signal_type":"ferry_fragility","entity_id":null,"used_default":false,"default_reason":"","note":""}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"acceptable","points":2,"applied":true,"note":"Freshness class is acceptable, so the engine applies a 2-point penalty."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":0,"points":0,"applied":false,"note":"All decision components are covered by live or persisted graph values."},{"key":"contradiction_penalty","label":"Ferry contradiction penalty","points":9,"applied":true,"spread":74,"note":"Component scores spread by 74 points, so the engine treats the answer as more contradictory."}],"fallback_used":false,"fallback_components":[],"source_summary":"2 pier anchors and 1 island or coast anchors currently support this ferry check.","main_risk":"Ferry fragility is elevated, so refund flexibility matters before you lock the island chain.","path":"/ferries/thailand-island-transfers/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:52:03.650Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"ferry_phuket-krabi-ferry","decision_type":"ferry_check","subject_id":"phuket-krabi-ferry","subject_name":"Phuket <-> Krabi ferry check","subject_type":"ferry_route","score":50,"component_score":61.1,"penalty_points":11,"confidence":"Medium","label":"fragile","recommendation":"Phuket <-> Krabi ferry check needs refund-friendly planning and a backup move.","best_for":"Andaman travelers who want coast changes without overcommitting every day to boats.","avoid_if":"Your hotel stack stops being useful when one boat slips.","check_first":["live weather fit and ferry fragility","last boat timing","pier check-in and transfer burden"],"next_action":"Keep the first island or coast hotel refundable until weather and pier timing feel solid.","pivot":"Stay on Phuket and use road/day-trip logic if boats weaken.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":10,"available_components":10,"live_components":9,"fallback_components":1,"defaulted_components":0,"coverage_ratio":1},"score_components":[{"key":"destination_fit","label":"Destination chain fit","score":55.5,"weight":0.22,"contribution":12.21,"source":"decision","signal_type":null,"entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"pier_confidence","label":"Pier confidence","score":97,"weight":0.14,"contribution":13.58,"source":"signal","signal_type":"source_confidence","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"pier_transfer_support","label":"Pier transfer support","score":60,"weight":0.14,"contribution":8.4,"source":"signal","signal_type":"pier_transfer_support","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"official_pier_support","label":"Official pier support","score":90.66666666666667,"weight":0.12,"contribution":10.88,"source":"signal","signal_type":"official_pier_support","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"berth_operability_context","label":"Berth operability context","score":93.83333333333334,"weight":0.1,"contribution":9.38,"source":"signal","signal_type":"berth_operability_context","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"ferry_fragility","label":"Ferry fragility","score":50,"weight":0.24,"contribution":12,"source":"signal","signal_type":"ferry_fragility","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"marine_warning_risk","label":"Marine warning risk","score":16,"weight":0.14,"contribution":2.24,"source":"signal","signal_type":"marine_warning_risk","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"rain_fit","label":"Weather fit","score":54,"weight":0.08,"contribution":4.32,"source":"signal","signal_type":"rain_risk","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"transport_stack","label":"Transfer burden","score":61.333333333333336,"weight":0.1,"contribution":6.13,"source":"signal","signal_type":"transport_friction","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"weakest_ferry_leg","label":"Weakest ferry leg","score":49,"weight":0.08,"contribution":3.92,"source":"signal","signal_type":"ferry_fragility","entity_id":null,"used_default":false,"default_reason":"","note":""}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"acceptable","points":2,"applied":true,"note":"Freshness class is acceptable, so the engine applies a 2-point penalty."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":0,"points":0,"applied":false,"note":"All decision components are covered by live or persisted graph values."},{"key":"contradiction_penalty","label":"Ferry contradiction penalty","points":9,"applied":true,"spread":81,"note":"Component scores spread by 81 points, so the engine treats the answer as more contradictory."}],"fallback_used":false,"fallback_components":[],"source_summary":"1 pier anchors and 2 island or coast anchors currently support this ferry check.","main_risk":"Ferry fragility is elevated, so refund flexibility matters before you lock the island chain.","path":"/ferries/phuket-krabi/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:52:03.650Z","freshness":"expired","data_current":false,"expired":true},{"decision_id":"ferry_samui-phangan-chain","decision_type":"ferry_check","subject_id":"samui-phangan-chain","subject_name":"Samui <-> Phangan ferry check","subject_type":"ferry_route","score":49,"component_score":60.1,"penalty_points":11,"confidence":"Medium","label":"fragile","recommendation":"Samui <-> Phangan ferry check needs refund-friendly planning and a backup move.","best_for":"Gulf island chains with at least one stable Samui base night.","avoid_if":"You are stacking the last boat behind a long road or flight day.","check_first":["live weather fit and ferry fragility","last boat timing","pier check-in and transfer burden"],"next_action":"Keep mainland and island hotel policies forgiving until the transfer day is clear.","pivot":"Use Samui only if the chain becomes brittle.","freshness_class":"expired","score_formula_version":"signal-first-v2","signal_coverage":{"total_components":10,"available_components":10,"live_components":9,"fallback_components":1,"defaulted_components":0,"coverage_ratio":1},"score_components":[{"key":"destination_fit","label":"Destination chain fit","score":56.5,"weight":0.22,"contribution":12.43,"source":"decision","signal_type":null,"entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"pier_confidence","label":"Pier confidence","score":97,"weight":0.14,"contribution":13.58,"source":"signal","signal_type":"source_confidence","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"pier_transfer_support","label":"Pier transfer support","score":23.5,"weight":0.14,"contribution":3.29,"source":"signal","signal_type":"pier_transfer_support","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"official_pier_support","label":"Official pier support","score":96,"weight":0.12,"contribution":11.52,"source":"signal","signal_type":"official_pier_support","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"berth_operability_context","label":"Berth operability context","score":96.5,"weight":0.1,"contribution":9.65,"source":"signal","signal_type":"berth_operability_context","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"ferry_fragility","label":"Ferry fragility","score":50.75,"weight":0.24,"contribution":12.18,"source":"signal","signal_type":"ferry_fragility","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"marine_warning_risk","label":"Marine warning risk","score":24,"weight":0.14,"contribution":3.36,"source":"signal","signal_type":"marine_warning_risk","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"rain_fit","label":"Weather fit","score":72,"weight":0.08,"contribution":5.76,"source":"signal","signal_type":"rain_risk","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"transport_stack","label":"Transfer burden","score":59,"weight":0.1,"contribution":5.9,"source":"signal","signal_type":"transport_friction","entity_id":null,"used_default":false,"default_reason":"","note":""},{"key":"weakest_ferry_leg","label":"Weakest ferry leg","score":50,"weight":0.08,"contribution":4,"source":"signal","signal_type":"ferry_fragility","entity_id":null,"used_default":false,"default_reason":"","note":""}],"penalty_components":[{"key":"freshness_penalty","label":"Freshness penalty","freshness_class":"acceptable","points":2,"applied":true,"note":"Freshness class is acceptable, so the engine applies a 2-point penalty."},{"key":"coverage_penalty","label":"Coverage penalty","defaulted_components":0,"points":0,"applied":false,"note":"All decision components are covered by live or persisted graph values."},{"key":"contradiction_penalty","label":"Ferry contradiction penalty","points":9,"applied":true,"spread":73.5,"note":"Component scores spread by 74 points, so the engine treats the answer as more contradictory."}],"fallback_used":false,"fallback_components":[],"source_summary":"2 pier anchors and 2 island or coast anchors currently support this ferry check.","main_risk":"Ferry fragility is elevated, so refund flexibility matters before you lock the island chain.","path":"/ferries/koh-samui-koh-phangan-koh-tao/","computed_at":"2026-08-22T17:51:47.142Z","expires_at":"2026-08-23T05:52:03.650Z","freshness":"expired","data_current":false,"expired":true}],"data_status":{"generated_at":"2026-08-22T17:51:47.142Z","freshness":"expired","is_current":false,"row_count":3,"current_row_count":0,"expired_row_count":3,"row_freshness_counts":{"fresh":0,"aging":0,"stale":0,"expired":3,"unknown":0}}}