Great article that hits most of the key features of The Composable Architecture. I am a little bit unsure of SystemEnvironment because its use cuts across modules. It mitigates coupling by using an unconstrained generic to model the sub-environment. However, if you want to put each feature in its own module, I guess you would need to put SystemEnvironment into its own module as well. I wonder if you did something similar to a pullback, you could avoid this. To me, the duplication seems like it might actually be worth it.
Managed to resolve this by changing the minimumVersion of the swift-composable-architecture package (opened up the project.pbxproj in an editor, I am old school - this can be also done from the Package Dependencies tab). Afterwards I ran into some compiler errors due to the JSONDecoder and DispatchQueue, these were fixed by importing Foundation and Dispatch accordingly. I am not saying that this is the right way, but it did the work for me.