I dislike this move: the "record" and schema are (should be) tied. This means if record changes, I'd need to wander to another place to update schema (while being next to each other would at least make it easier).

I agree about "leaking schema", but also I think that the schema and record being used should remain together. Best would be if schema could be extracted somehow from record class (by being annotated with jackson and javax annotations like Nullable).