description: >
    Empty interface to indicate that the associated `Logging.Entry` should
    prevent a state transition of the associated managed element while the
    `Logging.Entry` is not `Resolved` or been deleted.

    The specific state transition(s) to prevent are left to the implementation.
    A typical use of this would be to prevent the power-on of a
    managed host while a critical error is open.  The managed host, via
    systemd transitions, might start the power-on sequence and then wait for
    any object with this `ErrorBlocksTransition` interface to no longer be
    instantiated.  Causal ordering of D-Bus operations can prove that
    no critical error needs servicing and the power-on sequence may safely
    continue.
