Reports EDITOR parameter edits to the host, in protocol order, exactly once.
Owns three guarantees the ad-hoc VST3 wiring did not have:
- Provenance is explicit. A change is reported only when it happened on the editor thread and outside any host/processor write scope. An open gesture is no longer taken as evidence of who wrote the value.
- One snapshot per reported edit. An edit is reported with the value the editor wrote, taken from the write itself, never re-read from the store: a host automation write landing between the edit and the report would otherwise be reported to the host as the user's edit. The same snapshot is handed to every callback for that edit, so a concurrent write cannot split one logical change across two different values.
- One place that closes a gesture. The final value report and the end-of-gesture notification are emitted together, in that order, so a host that latches on end records where the control actually landed.
Threading: construct on the editor/UI thread — the constructor captures that thread's id as the editor thread. The store listener runs INLINE on the writing thread (like CLAP's), which is what makes the thread check meaningful; a marshalled listener would deliver every write on the UI thread and lose the origin.