pub enum Category {
Show 26 variants
DeclAdded,
DeclRemoved,
InterfaceRenamed,
InterfaceRetired,
MemberReordered,
InteractionAppended,
InteractionInserted,
InteractionReordered,
InteractionRemoved,
InteractionRetired,
KindChanged,
PayloadChanged,
ReturnChanged,
ParamsChanged,
TimingChanged,
RpcBoundChanged,
ContractChanged,
WidthChanged,
ConstraintChanged,
InitChanged,
ReservedNameRedeclared,
ServiceChanged,
ServiceInterfaceAdded,
ServiceInterfaceRemoved,
DocOnly,
VisibilityChanged,
}Expand description
The kind of a single difference. The walk emits the structural categories; the classifier maps them to directional verdicts.
Variants§
DeclAdded
A package-level declaration, interface, or service present only in the new snapshot.
DeclRemoved
A package-level declaration, interface, or service present only in the
old snapshot. An interface is matched by its interfaces.lock
number (lock design §7), so an interface here is one whose number
is gone from the new snapshot and not retired there.
InterfaceRenamed
An interface whose interfaces.lock number is the same on both
sides and whose name changed (lock design §7). The number is the
interface’s identity and its routing key, so nothing moves on the
wire; a rename is visible in source — it changes the generated
identity-table names in both wire backends — so the text report
lists it under the heading (heading). The path carries the new
name; the detail carries the old and the new name.
InterfaceRetired
An interface whose number the old snapshot held and the new
snapshot’s retired entries list (lock design §7): the sanctioned
removal of an interface, recorded by ridl lock --retire.
MemberReordered
A surviving composite member whose slot in the body changed — a struct field, enum value, enum-set bit or union arm — reported only when both bodies hold the same member names. For a struct field or union arm the slot is the ordinal, which is wire identity (typl §7.4), and the detail carries the old and new ordinal. An enum value or enum-set bit carries an explicit number instead (typl §8, §9), but the walk compares positions, not those numbers, so a textual reorder of an enum or enum-set body is reported the same way, conservatively, even when no number changed; its detail carries the old and new position.
InteractionAppended
A new interaction added at the end of an interface (no earlier interaction shifted).
InteractionInserted
A new interaction added before the end — an earlier interaction now sits after it (ridl §11: insert shifts ordinals, a wire break).
InteractionReordered
A surviving interaction whose relative order within the interface changed (ridl §11: reorder shifts ordinals, a wire break).
InteractionRemoved
An interaction removed without leaving a reserved tombstone.
InteractionRetired
An interaction removed and replaced by a reserved tombstone in the
same slot (ridl §11).
KindChanged
A surviving interaction whose kind changed (signal ↔ event, etc.).
PayloadChanged
A signal/event/fixed payload type changed.
ReturnChanged
A query return type changed.
ParamsChanged
A command/query parameter list changed.
TimingChanged
A signal/event resolved timing changed.
RpcBoundChanged
A command/query declared RPC bound changed (ADR-0015 decision 8).
Separate from Category::TimingChanged because the direction of
min inverts: on an RPC it constrains the caller, not the
provider, so the signal/event rule must not be inherited silently.
ContractChanged
A command/query require/ensure clause set changed.
WidthChanged
A derived wire width or scalar backing changed.
ConstraintChanged
A scalar constraint (range, step, length, pattern) changed, or a composite member changed in place.
InitChanged
A resolved or declared init value changed.
ReservedNameRedeclared
A name that was a reserved tombstone is live again — an
interaction inside an interface body.
ServiceChanged
A service switched between the named list and an inline shape.
Narrowed to the form switch by ADR-0015 decision 19: a changed
list is read as a set by the two ServiceInterface* categories
below.
ServiceInterfaceAdded
An interface in a service’s set that the old snapshot’s set did not hold (ADR-0015 decision 19 as amended on 2026-09-15: a service’s list is a set of interface references).
ServiceInterfaceRemoved
An interface the old snapshot’s set held that the new one does not.
Compatible on the wire — the routing key does not contain the
service — and visible in source, so the text report lists it under
that heading (heading).
DocOnly
Only doc comment, labels, or deprecation metadata changed.
VisibilityChanged
The visibility a declaration is published at changed. Separate from
Category::DocOnly because internal removes the declaration from
every out-of-package consumer (ADR-0002 §8), so the change has a
direction.