FieldChangeDto
One would-be field change recorded during a dry-run apply.
Mirrors services::metadata::apply::FieldChange, kept as a distinct DTO
to keep the wire-format frozen even if internal types evolve.
afterrequired
before
Current value, where cheaply available. null for fields backed by
joined tables (genres, tags, alternate titles, ratings, etc.).
fieldstringrequired
FieldChangeDto
{
"after": {},
"field": "string"
}