We've had a skill for years with two custom slot types. It's a shopping list, so the custom slots are just examples, the user can stick anything onto their list. This has always worked fine.
Last week we updated the skill to add a new (unrelated) intent, and suddenly the slot types no longer generalize. For example, "peppers" is on the slot list, so it's still possible to add "peppers", but if you try to add "frozen peppers" that just gets shortened to "peppers". Items that aren't on the slot list at all, like "car wash", are completely rejected.
I can reproduce this on my Echo (I'm in the U.S.). I can also reproduce this using the "Evaluate model" button, but here's the odd thing: It fails only in the en-US locale. It works fine for en-CA, en-AU, en-UK, and en-IN, despite having identical models (they're uploaded using the CLI). I've tried rebuilding the model, but the problem remains.
The docs explicitly say that custom slot types will generalize unless explicitly validated (which we don't). What are we doing that's causing Alexa to think that I want only the list of items on that list, and nothing else? And only in the en-US locale?
Relatedly: Should we instead be using one of the built-in slot types? AMAZON.Food might work, but our users add all sorts of non-food things to their lists. What does the built-in Alexa shopping list use for its slot type?