Much like mutable variables are primitives in imperative programming, we need at least one primitive state model available for reactive demand programming.
Assuming we have one sufficiently generic state model, everything else - including tuple spaces - can be implemented above it using RDP behaviors. We might still want a few specialized primitives for reasons of performance, safety, disruption tolerance, and so on. Specializations are also useful in imperative systems, where we might benefit from single-assignment variables and similar. But we can work without specialized models.
Primitive state models for RDP must meet requirements for causal commutativity and spatial idempotence.
This can be achieved at least two ways.
1) We can develop state models that are influenced by a *set* of simultaneous demands. Simple discrete state models (including tuple spaces) can be modeled in terms of a fixpoint function `(state * Set of Inputs) → state`. The function is a little more sophisticated if we also want to include temporal semantics, such as expiration of tuples, or motion in a physics simulation, but the same idea generally applies.
2) Alternatively, we can prevent violation of causal commutativity and spatial idempotence by simply limiting developers to a single writer, e.g. via substructural (affine and linear) types. Substructural types are an excellent complement for RDP, but aren't strictly necessary. Anything you can do with substructural types, you can do without them... the patterns are just a little more ad-hoc and have more dynamic failure cases.
Hybrids of these approaches are also viable. There are many 'generic' state models that meet RDP's requirements - an infinity of them, really, and an RDP language can be designed such that users can define new, ad-hoc state models in terms of pure functions [1][2].
Aside: I only got a real grasp of state for RDP in March 2013. In late 2011, I had developed a few specialized state models [3], and even before that I knew that tuple spaces would be easy to integrate. These days, I'm especially fond of a simple, generic, and superbly robust state model as the 'default' primitive, based on keeping an unbounded logarithmic history [4]. But early in RDP's development, I struggled with the idea of RDP state and asked myself many of the questions you seem to be asking now. Keep it up. ;)