Custom sharding logic

I’m developing a platform that let users publish stuff, stored in Dgraph, in a social-network flavour.

Instances of this platform can be deployed independently by any organization and delivering service as a standalone platform.
Users can search instance contents using proper Dgraph query and indexes

Organizations have also the option to join a federation.
Federated instances allow users to seamlessly search for content through all federated-instances.
This may be achieved to some extent by configuring each federated Dgraph as (1+)Group in a federated shard.

anyhow a bunch of requirements shall be guaranteed:
A : content generated in an instance must be stored in its relative group (in their own storage)
B : query/read is allowed for all instances
C : write is allowed for generating group only
D : when federated querying the query should succeed with available groups, even if a are down

I can imagine a couple of approaches for this:
1 : having a central single Zero, representing “The Federation” and adding some custom logic to a central single Zero properly tweaked to obtain these behaviors, maybe by implemnting some plugins?
2 : having a dedicate Dgraph for search functionalities in all instances, in this case federated organization may share the whole searchable dataset as replicas

option 1 looks the most interesting, if Zero logic can be tweaked

option 2 may be more straightforward, and would make requirement A not relevant.
I wonder if it would be possible to store indexes only for search purposes, and not the whole datasets (as they would become a heavy redundance)

this question is kind of a followup to this topic

Hi @pawan do we know of any way to do this?