.resolve_basket_row() now falls back to case-insensitive substring match when no exact match is found, and short-circuits empty/whitespace input to no_match. Disambiguation stub raises pending Task 5.
.resolve_basket_row() now falls back to case-insensitive substring match when no exact match is found, and short-circuits empty/whitespace input to no_match. Disambiguation stub raises pending Task 5.