Design rules concerning Chatto's ConnectRPC API, both resources and realtime
Update* RPCs must use google.protobuf.FieldMask update_mask.
Unselected fields stay unchanged; selected fields can be set or cleared,
subject to validation. Apply masks before validation. Omitted masks infer
populated fields; explicit empty masks are invalid. Clients should send
explicit paths. Commands use specific verbs such as Set, Change, or
Refresh.chatto.core.evt.v1.Event for durable EVT facts and
chatto.core.pubsub.v1.PubSubEvent for transient NATS Core signals. Use the
dedicated chatto.realtime.v1.RealtimeEvent union and domain payload catalog
for public delivery. Keep a semantic one-to-one relationship for selected
public events without importing core payload types into the public schema.
Client-facing PubSubEvent variants should reference public payload types
directly. Keep the restricted private union as the allow-list for cursorless
delivery.chatto.realtime.v1 wrappers. Handshakes,
subscriptions, catch-up, cursors, heartbeats, errors, and close
guidance are not domain events.RealtimeEvent for each public delivery. The
public payload schema must omit internal variants and storage-only fields.
Never send stored bytes or mutate a stored event during mapping.Event or PubSubEvent variant must reach clients, update the
dedicated payload, public union member, authorization and mapper coverage,
consuming reducers, generated clients, architecture inventory, public
documentation, and compatibility notes in the same change. Keep public names
and compact union numbers independent from the internal event source. Use
independent public payload field numbers and explicit typed mapping for EVT.
Reference the public payload directly from client-facing pubsub variants and
deep-copy it at the delivery boundary.5cbd584
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.