A programming language is allowed to be ambiguous, I don’t know of a definition that excludes that!
The language specs may be, but an implementation is never ambiguous. When you encounter and undefined behavior in the specs, that’s when you look at your compiler/interpreter docs.
All programming languages I know of provide at least some guarantees about the program’s behavior.