Description:
To avoid the backend having to "guess" the current state, emit a full "Snapshot" event of all Grant parameters whenever a major change (like a pause or rate update) occurs.
Acceptance Criteria:
[ ] Emit GrantSnapshot(id, rate, balance, status, last_update).
Labels: events, dx