Home Assistant Quality Scale Audit This document provides a comprehensive audit of the AutoArm integration against the Home Assistant Integration Quality Scale .
Audit Date: February 2026 Integration Version: 1.0.0 Auditor: Automated analysis
Summary Tier Done Exempt Todo Total Bronze 16 3 0 19 Silver 7 4 0 11 Gold 10 7 4 21 Platinum 1 1 1 3 Total 34 15 5 54
Current Tier Achievement: Silver (with most Gold requirements met)
Path to Gold: Complete entity-category, entity-device-class, entity-translations, and icon-translations rules (requires refactoring to entity classes).
Bronze Tier The Bronze tier represents the baseline standard for all integrations.
Completed Rules Rule Status Notes action-setup Done Services registered in async_setup (autoarming.py) 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.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 All dependencies are standard HA components declared in manifest.json docs-actions Done Services documented in services.yaml and README 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/removal.md entity-event-setup Done Events subscribed in initialize_* methods using proper HA tracking functions runtime-data Done Uses HassKey[AutoArmData] for typed runtime data storage test-before-configure Done Config flow validates entity selections; YAML validated via voluptuous 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; calendar polling is configurable entity-unique-id Exempt Uses fixed entity IDs for integration-scoped singletons has-entity-name Exempt Entities created via async_set, not entity classes
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 shutdown() method properly cleans up all listeners docs-configuration-parameters Done Parameters documented in automated_arming.md and examples entity-unavailable Done Entities initialized to "unavailable" when appropriate integration-owner Done @jeyrb declared as code owner log-when-unavailable Done Consistent "AUTOARM" prefix; appropriate log levels test-coverage Done Test coverage >90% with --cov-fail-under=90 enforced
Exempt Rules Rule Status Reason docs-installation-parameters Exempt Config flow parameters are self-descriptive entity selectors parallel-updates Exempt No parallel device polling reauthentication-flow Exempt No authentication required
Gold Tier The Gold tier represents best-in-class user experience.
Completed Rules Rule Status Notes 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 exception-translations Done Issue messages use translation keys with placeholders reconfiguration-flow Done Options flow allows reconfiguring calendars, persons, occupancy defaults, and no-event mode repair-issues Done Raises repair issues for invalid transition conditions
Exempt Rules Rule Status Reason devices Exempt Orchestrates existing entities; doesn't represent physical devices 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 No device registry usage entity-disabled-by-default Exempt All entities are essential stale-devices Exempt No device registry usage
Todo Rules Rule Status Action Required entity-category Todo Add EntityCategory if refactored to entity classes entity-device-class Todo Add device classes (e.g., diagnostic for initialized sensor) entity-translations Todo Refactor to use translation keys for entity names icon-translations Todo Implement icon translations
Platinum Tier The Platinum tier represents technical excellence.
Completed Rules Rule Status Notes async-dependency Done No external dependencies; fully async using HA APIs
Exempt Rules Rule Status Reason 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
Remaining Work Gold Tier (requires entity class refactoring) These four rules all require migrating from hass.states.async_set() to proper HA entity classes:
entity-category : Add EntityCategory.DIAGNOSTIC to status sensors entity-device-class : Add device classes to binary sensors and sensors entity-translations : Use translation keys for entity names icon-translations : Add icon translations Platinum Tier strict-typing : Eliminate remaining Any types where possible 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 Entities use async_set directly rather than entity classes References February 17, 2026 February 17, 2026