i agree with your high cohesion and low coupling, in my project we're migrating a common microservice which is used by different microservices but it made the whole architecture too complex and every microservice dependend on this common microservice
How domain based coupling can be achieved? Will it not be always pass-through coupling. Take case of Users and Notification microservice, Notification always needs information from User microservice to send mail. Same goes with other microservices.