Key Takeaways
If you have no memory, that memory can't get corrupted.
If the memory is carried by the request the memory can't get desynchronized with the request.
You can use cryptographic techniques to prevent tampering and even reuse of states, though reuse can be a feature instead of a bug. Sometimes the state is too big to pass around like a football but even then you can access it with a key and merge it in in a disciplined way.
Additionally, depending how deep down you go, theres state stored somewhere to calculate against. Vues are stored in some kind of register and theyre passed into operations with a target register as an additional argument.
In practice, you either end up with an enlarging monolith or introducing state evolution (either explicitly, or by adding incremental input types that the system processes and expanding its API surface).
Beyond a certain inflection point of complexity, flexibility in introducing change becomes necessary.
Not affiliated with Hacker News or Y Combinator. We simply enrich the public API with analytics.