rules:
  # Bronze
  action-setup: done
  appropriate-polling: done
  brands: done
  common-modules: done
  config-flow-test-coverage: done
  config-flow: done
  dependency-transparency: done
  docs-actions: done
  docs-high-level-description: done
  docs-installation-instructions: done
  docs-removal-instructions: done
  entity-event-setup:
    status: done
    comment: >
      Entities are updated through dispatchers, and these are
      cleaned up when the integration unloads.
  entity-unique-id:
    status: exempt
    comment: >
      This is user configurable, but not required.
      It is required though when a user wants to use device based discovery.
  has-entity-name: done
  runtime-data:
    status: exempt
    comment: >
      Runtime data is not used, as the mqtt entry data is only used to set up the
      MQTT broker, this happens during integration setup,
      and only one config entry is allowed.
  test-before-configure: done
  test-before-setup:
    status: exempt
    comment: >
      We choose to early exit the entry as it can take some time for the client
      to connect. Waiting for the client would increase the overall setup time.
  unique-config-entry: done
  # Silver
  config-entry-unloading: done
  log-when-unavailable: done
  entity-unavailable:
    status: done
    comment: |
      Only supported for entities the user has assigned a unique_id.
  action-exceptions: done
  reauthentication-flow: done
  parallel-updates: done
  test-coverage: done
  integration-owner: done
  docs-installation-parameters: done
  docs-configuration-parameters: done

  # Gold
  entity-translations:
    status: exempt
    comment: >
      This is not possible because the integrations generates entities
      based on a user supplied config or discovery.
  entity-device-class:
    status: done
    comment: An entity device class can be configured by the user for each entity.
  devices:
    status: done
    comment: >
      A device context can be configured by the user for each entity.
      It is not required though, except when using device based discovery.
  entity-category:
    status: done
    comment: An entity category can be configured by the user for each entity.
  entity-disabled-by-default:
    status: done
    comment: >
      The user can configure this through YAML or discover
      entities that are disabled by default.
  discovery:
    status: done
    comment: >
      When the Mosquitto MQTT broker add on is installed,
      a MQTT config flow allows an automatic setup from its discovered settings.
  stale-devices:
    status: exempt
    comment: >
      This is is only supported for entities that are configured through MQTT discovery.
      Users must manually cleanup stale entities that were set up though YAML.
  diagnostics: done
  exception-translations: done
  icon-translations:
    status: exempt
    comment: >
      This is not possible because the integrations generates entities
      based on a user supplied config or discovery.
  reconfiguration-flow: done
  dynamic-devices:
    status: done
    comment: |
      MQTT allow to dynamically create and remove devices through MQTT discovery.
  discovery-update-info:
    status: done
    comment: >
      If the Mosquitto broker add-on is used to set up MQTT from discovery,
      and the broker add-on is re-installed,
      MQTT will automatically update from the new brokers credentials.
  repair-issues:
    status: done
    comment: >
      This integration uses repair-issues when entities are set up through YAML.
      To avoid user panic, discovery deprecation issues are logged only.
      It is the responsibility of the maintainer or the service or device to
      correct the discovery messages. Extra options are allowed
      in MQTT messages to avoid breaking issues.
  docs-use-cases: done
  docs-supported-devices: done
  docs-supported-functions: done
  docs-data-update: done
  docs-known-limitations: done
  docs-troubleshooting: done
  docs-examples: done

  # Platinum
  async-dependency: done
  inject-websession:
    status: exempt
    comment: |
      This integration does not use web sessions.
  strict-typing:
    status: done
    comment: >
      Typing for 'paho-mqtt==1.6.1' supported via 'types-paho-mqtt==1.6.0.20240321'
      (requirements_test.txt).
