Skip to content

Evidence

Every rule is backed by evidence. Each page below explains the conflict in plain language, gives a concrete example and a fix, and then shows exactly why the rule is flagged, whether that is the DDS specification text, the engine source code, or a controlled measurement.

History depth set deeper than the resource-limit cap History → Resource Limits Won't connect Total sample cap set below the per-instance cap Resource Limits → Resource Limits Won't connect Best-effort delivery with transient-local durability Reliability → Durability Breaks a guarantee Best-effort delivery with exclusive ownership Reliability → Ownership Breaks a guarantee Best-effort delivery with manual liveliness Reliability → Liveliness Breaks a guarantee Finite lifespan expires the history that durability should replay Lifespan → Durability Breaks a guarantee Lifespan shorter than the deadline period Lifespan → Deadline Breaks a guarantee Source-timestamp ordering with a history depth of one History → Destination Order Breaks a guarantee Source-timestamp ordering with a per-instance cap of one Resource Limits → Destination Order Breaks a guarantee Exclusive ownership with no deadline to trigger failover Deadline → Ownership Breaks a guarantee Exclusive ownership with no liveliness lease to detect a dead writer Liveliness → Ownership Breaks a guarantee No-writer purge that never fires because liveliness never expires Liveliness → Reader Data Lifecycle Breaks a guarantee Disposed-sample purge that discards data durability should keep Reader Data Lifecycle → Durability Breaks a guarantee Deadline monitoring interrupted when partitions change Partition → Deadline Breaks a guarantee Manual liveliness disrupted when partitions change Partition → Liveliness Breaks a guarantee Auto-dispose on unregister races exclusive-ownership failover Ownership → Writer Data Lifecycle Breaks a guarantee Lifespan longer than the history window can ever hold History → Lifespan Wastes resources Lifespan longer than the resource-limit buffer can ever hold Resource Limits → Lifespan Wastes resources Manual enable with volatile durability drops pre-enable data Entity Factory → Durability Wastes resources Partitions filter which retained samples a late joiner replays Partition → Durability Wastes resources Publisher and subscriber share no partition name Partition → Partition Won't connect Subscriber requires reliable, publisher offers best-effort Reliability → Reliability Won't connect Subscriber requires more durability than the publisher offers Durability → Durability Won't connect Publisher's deadline is slower than the subscriber demands Deadline → Deadline Won't connect Publisher's liveliness is weaker than the subscriber requires Liveliness → Liveliness Won't connect Publisher and subscriber disagree on ownership kind Ownership → Ownership Won't connect Subscriber requires source-timestamp ordering the publisher does not offer Destination Order → Destination Order Won't connect Immediate no-writer purge with auto-dispose turned off Writer Data Lifecycle → Reader Data Lifecycle Breaks a guarantee Disposed-sample purge that can never fire Writer Data Lifecycle → Reader Data Lifecycle Wastes resources Reader cache that is never reclaimed after writers leave Writer Data Lifecycle → Reader Data Lifecycle Wastes resources Reliable history too shallow for the round-trip History → Reliability Breaks a guarantee Reliable buffer too small for the round-trip Resource Limits → Reliability Breaks a guarantee Lifespan expires samples before reliable retransmission finishes Lifespan → Reliability Breaks a guarantee Best-effort delivery drops the dispose notification Reliability → Writer Data Lifecycle Breaks a guarantee Best-effort loss triggers false deadline-missed events Reliability → Deadline Breaks a guarantee Liveliness lease shorter than the deadline period Liveliness → Deadline Breaks a guarantee Unbounded durable writer cache under keep-all History → Durability Wastes resources Deadline too tight for the link forces needless ownership handover Deadline → Ownership Wastes resources Liveliness lease too tight for the link causes ownership flapping Liveliness → Ownership Wastes resources Durable replay resets the deadline timer for a late joiner Durability → Deadline Wastes resources

Common experimental conditions

Controlled loopback measurements use the following shared setup unless a rule page states otherwise.

PlatformROS 2 Jazzy, loopback lo, delay and loss via tc netem
EnginesFast DDS 2.14.6, Cyclone DDS 0.10.5
Older-version checkFast DDS 2.6.11 and Cyclone DDS 0.10.5 for version-sensitive cases
Repetitions5 runs by default, runtime-event rules at least 3, seed 20260630
Message size1024 B, with a 1 MB fragmentation probe on the reliable-history rule
Network grid RTT 1 to 500 ms, loss 0 to 20%, publish period 10 to 100 ms