import json

def capture_diff(obj, new_state):
    """Return a dict mapping field -> (old, new) for changed fields."""
    old_state = {k: getattr(obj, k) for k in obj.__dict__ if not k.startswith('_')}
    diff = {}
    for k, new_val in new_state.items():
        old_val = old_state.get(k)
        if old_val != new_val:
            diff[k] = (old_val, new_val)
    return diff
