Apply one validated subagent lifecycle event.
The caller (textual adapter) has already checked type == "subagent"
and that this is the main-agent namespace. We defensively re-validate
every field here so malformed payloads can never corrupt panel state.