At the risk of over-complicating things it would be nice to have documentation on abstract model of where the separation between the frontends and the nix-daemon is and how store paths are realized with substitutions or builds.
If you didn’t see it already, you might like https://github.com/NixOS/nix/pull/6877 which is about an “abstract model” of the store layer.