The pause came when setting up a basic shielded interaction in the Midnight City simulation—expecting seamless, default privacy like older privacy coins promise, but finding instead that rational privacy demands explicit choices at every step. Midnight Network ($NIGHT , #night , @MidnightNetwork doesn't hide everything by default; it forces developers to define selective disclosure parameters upfront using Compact contracts, meaning a simple proof-of-age transaction requires coding which data stays shielded and what gets revealed for verification. In practice, this surfaced friction: a quick test transaction exposed sender metadata on the public NIGHT side unless deliberately wrapped in ZK, while the private side stayed clean only after manually configuring DUST resource allocation. It highlights how the system prioritizes programmable control over blanket opacity, shifting burden to the builder early. This feels honest but heavy—privacy here isn't invisible infrastructure; it's a deliberate design choice that asks more from users before it protects them. What happens when real-world apps scale without simplifying those initial hurdles?