Home Assistant Quality Scale Audit This document provides a comprehensive audit of the Auto Arm integration against the Home Assistant Integration Quality Scale . The rule by rule status is kept in custom_components/autoarm/quality_scale.yaml.
Audit Date: September 2026 Integration Version: 1.3.0 Auditor: Automated analysis
Summary Tier Done Exempt Todo Total Bronze 16 2 0 18 Silver 7 3 0 10 Gold 12 6 3 21 Platinum 0 2 1 3 Total 35 13 4 52
Current Tier Achievement: Silver (with most Gold requirements met)
Path to Gold: Complete exception-translations, icon-translations and reconfiguration-flow.
Bronze Tier The Bronze tier represents the baseline standard for all integrations.
Completed Rules Rule Status Notes action-setup Done All actions registered in async_setup brands Done Brand assets submitted and approved in the HA brands repository common-modules Done Logic separated into const.py, helpers.py, hass_api.py, calendar_events.py, with the base entity in entity.py config-flow Done UI config flow for alarm panel, calendars, persons, and occupancy defaults config-flow-test-coverage Done Config flow and options flow covered by tests dependency-transparency Done No external packages; only standard HA components, declared in manifest.json docs-actions Done Actions documented in services.yaml and the docs docs-high-level-description Done Clear overview in README.md docs-installation-instructions Done HACS installation documented docs-removal-instructions Done Removal instructions in docs/configuration/removal.md entity-event-setup Done Entities subscribe to status updates in async_added_to_hass, and unsubscribe with async_on_remove entity-unique-id Done Unique ID from the config entry id and the entity key has-entity-name Done Entities use has_entity_name with translated names runtime-data Done Armer kept in ConfigEntry.runtime_data test-before-setup Done Validates config via voluptuous schemas; ConfigEntryNotReady on init failure; raises repair issues for invalid transitions unique-config-entry Done Unique ID set to domain; _abort_if_unique_id_configured() prevents duplicates
Exempt Rules Rule Status Reason appropriate-polling Exempt Event-driven integration with pushed entities; calendar polling is configurable test-before-configure Exempt No device or service connection to test
Silver Tier The Silver tier focuses on reliability and robustness.
Completed Rules Rule Status Notes action-exceptions Done Service handlers raise HomeAssistantError on failure config-entry-unloading Done Unloads the entity platforms, and shutdown() cleans up all listeners docs-configuration-parameters Done Parameters documented in automated_arming.md and examples docs-installation-parameters Done Config flow settings listed in the typical configuration example integration-owner Done @jeyrb declared as code owner parallel-updates Done PARALLEL_UPDATES = 0 on both entity platforms test-coverage Done Test coverage >90% with --cov-fail-under=90 enforced
Exempt Rules Rule Status Reason entity-unavailable Exempt Entities report Auto Arm's own state, always available while loaded log-when-unavailable Exempt No device or service connection of its own reauthentication-flow Exempt No authentication required
Gold Tier The Gold tier represents best-in-class user experience.
Completed Rules Rule Status Notes devices Done Entities belong to a single Auto Arm service device diagnostics Done diagnostics.py exposes entry data, options, YAML keys, and armer state docs-data-update Done Update mechanisms documented (events, polling, manual triggers) docs-examples Done Example configs in docs/configuration/examples/ docs-known-limitations Done Limitations documented in docs/known_limitations.md docs-supported-functions Done All features documented in README and automated_arming.md docs-troubleshooting Done Troubleshooting guide in docs/troubleshooting.md docs-use-cases Done Use cases illustrated in "Why use alarm control panels?" section entity-category Done Initialized and failures entities are diagnostic entity-device-class Done Timestamp for last calculation, enum for last intervention entity-translations Done Entity names translated for every supported language repair-issues Done Raises repair issues for invalid transition conditions
Exempt Rules Rule Status Reason discovery Exempt User-configured entities; nothing to discover discovery-update-info Exempt No discovery docs-supported-devices Exempt Works with any compatible HA entities dynamic-devices Exempt Only one service device, created with the config entry entity-disabled-by-default Exempt All entities are essential stale-devices Exempt Only one service device, removed with the config entry
Todo Rules Rule Status Action Required exception-translations Todo Use translation keys for the HomeAssistantError messages raised by reload and enquire_configuration icon-translations Todo Add icons.json reconfiguration-flow Todo Add a reconfigure step; the options flow does already allow the alarm panel to be changed
Platinum Tier The Platinum tier represents technical excellence.
Exempt Rules Rule Status Reason async-dependency Exempt No external library dependency inject-websession Exempt No external HTTP calls
In Progress Rule Status Notes strict-typing In Progress py.typed marker present; some Any types remain due to HA ConfigType patterns
Code Quality Notes Strengths Clean separation of concerns across modules Comprehensive error tracking via failures counter and repair issues Rate limiting prevents arming loops Proper async/await throughout Good test coverage (>90%) for core functionality Consistent logging with "AUTOARM" prefix Support for graceful shutdown and reload Diagnostics support for debugging Areas for Improvement Some methods in autoarming.py are lengthy and could be refactored A few Any type hints remain that could be more specific References