dがzを殺してるんじゃなくて、
dの構造変化のせいでzがdに依存していた箇所が
zの意図通りに動かなくなっただけじゃないの?
つまりzが死ぬのはzのプログラムのエラーケース想定漏れでしょ
dは他から利用されることなんて元々想定してないから
他のアプリの都合なんて考える必要なくアプリをつくり直せるんだし、
zが死のうがdには何の責任もない
もっとも、zにタダ乗りさせない様に意図的に認証方法を変えたかもしれないけど、
それでzが死んでもそれはzのせいでしょ