I would like to point you to my recently published architecture "Khipu", which does all what you suppose. on top of that if is (nearly almost) immuatble, the only place where mutability might be ever needed being hidden in local function scopes. The example comes with SwiftUI, but it is actually completely separated from the UI — using UIKit or porting it to other OSs is pretty forwarded. every unit test resembles a client just as the ui does — as there simply is no other way to interact with the system.
Khipu started out as a Clean Architecture implementation, but with the aforementioned characteristics it has become something else — in fact while CA is a truly OO design, I would argue that Khipu isnt OO anymore. and although it uses functions at it centre it isnt functional. I think, it shows a new paradigm: DDP— Declarative Domain Programming.