Speaking mathematically, you are right. However, linguistically I disagree. Consider: Someone tells you that "all of their kids are doing great in school". Turns out they have no kids. They obviously were trying to deceive you, and make you think they do have kids - in fact, since plural, more than one kid. Hence, it is effectively a lie.
So if the liar speaks of "all my hats" while having none, that is deceptive. I would consider it a lie.
And that's why SO gets mad when I come home with six cartons of milk[1].
[1]: https://blog.bryanbibat.net/2013/01/02/programming-joke/
More generally, the puzzle is kind of stupid -- not as a puzzle, but as a representation of life -- because speakers do not speak according to the rules of mathematical logic. That doesn't make them liars, it just means they don't agree about the ground rules.
What does it even mean to be right mathematically here? If I invent a mathematical structure where I define elements 1 and 2, an operation + and a relation = that posits that 1+2=2, I can say that mathematically one apple plus two apples equals two apples. Would I be mathematically right or would I be applying a wrong/not-even-wrong/linguistically deceiving /incoherent model to the real world?
Who hasn't had a picture taken with only them sitting in a room, labeled "X with all their friends" can cast the first stone.
"You can give me the loan, all my companies have millions in assets."
That's not right; you're conflating dishonesty with lying. Why do people get weird when it comes to grokking what it means to lie?
Mere deception is not lying. (Though it is dishonest.)
A mere untrue statement is not a lie. (Though it is conterfactual.)
But to lie is to (a) state an untruth (b) that is intended to deceive. Absent both conditions being satisfied, you're not dealing with a lie.
There are other forms of dishonesty, but not all of them are lies.
The specific linguistic concept your reaching for is "implicature" from pragmatics.
https://en.wikipedia.org/wiki/Implicature