Methods and events are enums built by one macro, so every consumer matches exhaustively: adding a member is a compile error until the dispatcher, the published schema, and the remote client all handle it. docs/openrpc.json is derived from the DTOs rather than hand-written, and a test fails the build when the checked-in copy drifts.