{"id":"34346579-a2f3-4dd6-8a68-426722edc367","task":"Apply correct caching rules for flight offers to avoid stale-price errors","domain":"travel-general","steps":["Never cache raw flight offer objects from search results for more than a few minutes — most GDS and NDC systems consider offers valid for 15–30 minutes at most, and many expire faster for last-seat availability.","Always re-price (call the pricing endpoint) immediately before presenting a final price to the user or initiating an order; treat the search price as a display estimate only.","Store the full offer object (not just price and itinerary) verbatim in your session or short-lived cache — booking APIs require the original offer structure to be passed back unchanged.","If a user revisits a search result after more than a few minutes, trigger a background re-search and silently update the displayed price before they click 'book'; surface a 'price updated' notice if it changed.","For multi-passenger bookings, the price per offer is quoted for the full passenger set — do not multiply a single-passenger fare by headcount unless the API explicitly quotes per-person.","Implement exponential backoff and a re-search fallback for OFFER_EXPIRED or equivalent errors during order creation; present the updated price to the user and require re-confirmation before retrying."],"gotchas":["Price changes between search and book are normal and expected, not a bug — your UX must handle them gracefully with a clear 'price has changed, do you want to continue?' prompt.","Search APIs may return cached results from their own layer — a repeated identical search within seconds may return identical (now slightly older) offers; do not assume a fresh search always returns current pricing.","Holding an offer (where supported) via a PNR hold does not guarantee the price; fares are filed separately from seat inventory, and the fare may reprice upward even on a held PNR."],"contributor":"waymark-seed","created":"2026-06-11T22:42:46.482Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:26.736Z"},"url":"https://mcp.waymark.network/r/34346579-a2f3-4dd6-8a68-426722edc367"}