0.999… has no smallest digit, thus the carry operation fails to roll it over to 1.
That’s where limits get involved, snatching the carry from the brink of infinity. You could, OTOH, also ignore that and simply accept that it has to be the case because 0.333… * 3. And let me emphasise this doubly and triply: That is a correct mathematical understanding. You don’t need to get limits involved. It doesn’t make it any more correct, or detailed, or anything. Glancing at Occam’s razor, it’s even the preferable explanation: There’s a gazillion overcomplicated and egg-headed ways to write 1 + 1 = 2 (just have a look at the Principia Mathematica), that doesn’t mean that a kindergarten student doesn’t understand the concept correctly. Begone, superfluous sophistication!
(I just noticed that sophistication actually shares a root with sophistry. What a coincidence)
Someone using only basic arithmetic on decimal notation will conclude that 0.999… is not 1.
Doesn’t pass scrutiny, because then either 0.333… /= 1/3 or 3 /= 3 (or both). It simply cannot be the case when looking at the whole system, as opposed to only the single question 0.999… ?= 1 and trying to glean something from that. Context matters: Any answer to that question has to be consistent with all the rest you know about the natural numbers. And only 0.999… = 1 fulfils that.
Why are you making this so complicated?
It isn’t. It’s convenient. Toss it if you don’t want to use it. What’s not an option though is to use it incorrectly, and that would be insisting that 0.999… /= 1, because that doesn’t make any sense.
A notational system doesn’t get to say “well I like to do numbers this way, let’s break all the axioms or arithmetic”. If you say that 0.333… = 1/3, then it necessarily follows that 0.999… = 1. Forget about “but how do I calculate that” think about “does multiplying the same number by the same number yield the same result”.
Repeating decimals aren’t apart from decimal arithmetic. They’re a necessary part of it. If you didn’t learn 0.999… = 1, you did not learn decimal arithmetic. And with “necessary” I mean necessary: Any positional system that supports expressing rational numbers will have repeating digits. It’s the trade-off you make, by fixing the divisor (10 in our case), to make numbers easily comparable by size, because no number can divide any number cleanly because there’s an infinite number of primes. Quick, which is the bigger number: 38/127 or 39/131.
Any notational system has its awkward spots. You will not get around awkward spots. Decimal notation has quite few of them, certainly fewer than Roman numerals where being able to do long division earned you a Ph.D. If you can come up with something better be my guest, I already linked you to a starting point.