Home Assistant Quality Scale Audit
This document provides a comprehensive audit of the AutoArm integration against the Home Assistant Integration Quality Scale.
Audit Date: January 2026 Integration Version: 0.7.0-beta1 Auditor: Automated analysis
Summary
| Tier | Done | Exempt | Todo | Total |
| Bronze | 10 | 7 | 2 | 19 |
| Silver | 5 | 4 | 2 | 11 |
| Gold | 6 | 8 | 7 | 21 |
| Platinum | 1 | 1 | 1 | 3 |
| Total | 22 | 20 | 12 | 54 |
Current Tier Achievement: Bronze (with most Silver requirements met)
Path to Silver: Complete action-exceptions and test-coverage rules.
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:132-161) |
common-modules | Done | Logic separated into const.py, helpers.py, hass_api.py, calendar.py |
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 |
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-setup | Done | Validates config via voluptuous schemas; raises repair issues for invalid transitions |
Exempt Rules
| Rule | Status | Reason |
appropriate-polling | Exempt | Event-driven integration; calendar polling is configurable |
config-flow | Exempt | YAML-only configuration ("config_flow": false); complex nested config unsuitable for UI |
config-flow-test-coverage | Exempt | No config flow exists |
entity-unique-id | Exempt | Uses fixed entity IDs for integration-scoped singletons |
has-entity-name | Exempt | Entities created via async_set, not entity classes |
test-before-configure | Exempt | No config flow; validation via voluptuous |
unique-config-entry | Exempt | Single domain-wide YAML configuration |
Todo Rules
| Rule | Status | Action Required |
brands | Todo | Submit logo/icon to Home Assistant brands repository |
docs-removal-instructions | Todo | Add removal instructions to documentation |
Silver Tier
The Silver tier focuses on reliability and robustness.
Completed Rules
| Rule | Status | Notes |
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 |
Exempt Rules
| Rule | Status | Reason |
docs-installation-parameters | Exempt | No installation parameters; YAML-only |
parallel-updates | Exempt | No parallel device polling |
reauthentication-flow | Exempt | No authentication required |
Todo Rules
| Rule | Status | Action Required |
action-exceptions | Todo | Raise HomeAssistantError on service failures instead of just logging |
test-coverage | Todo | Increase test coverage threshold to 95% (currently --cov-fail-under=0) |
Gold Tier
The Gold tier represents best-in-class user experience.
Completed Rules
| Rule | Status | Notes |
docs-data-update | Done | Update mechanisms documented (events, polling, manual triggers) |
docs-examples | Done | Example configs in docs/configuration/examples/ |
docs-supported-functions | Done | All features documented in README and automated_arming.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 |
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 |
reconfiguration-flow | Exempt | YAML-only; reconfigure via reload service |
stale-devices | Exempt | No device registry usage |
Todo Rules
| Rule | Status | Action Required |
diagnostics | Todo | Implement diagnostics.py for debugging support |
docs-known-limitations | Todo | Add dedicated limitations section to docs |
docs-troubleshooting | Todo | Add troubleshooting guide |
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 |
Todo Rules
| Rule | Status | Action Required |
strict-typing | Todo | Enforce strict typing; add py.typed marker; eliminate Any types |
Recommendations
Priority 1: Achieve Silver Tier
-
action-exceptions: Modify service handlers to raise HomeAssistantError with descriptive messages when operations fail.
-
test-coverage: Set --cov-fail-under=95 in pyproject.toml and add tests to reach threshold.
Priority 2: Documentation Improvements
-
docs-removal-instructions: Add a "Removing AutoArm" section explaining how to uninstall via HACS and clean up YAML.
-
docs-known-limitations: Document known limitations: - YAML-only configuration (no UI setup) - Single alarm panel per installation - Calendar polling interval limitations
-
docs-troubleshooting: Add common issues and solutions: - Invalid transition conditions (check repair issues) - Calendar not updating (verify poll interval) - Button not responding (check entity_id)
Priority 3: Brand Submission
brands: Submit integration logo/icon to home-assistant/brands repository.
Priority 4: Gold Tier Enhancements (Optional)
These would require refactoring to use proper entity classes:
diagnostics: Implement diagnostics to expose configuration and state. entity-category/entity-device-class: Refactor entities to use HA entity classes. entity-translations: Enable translated entity names.
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 for core functionality
- Consistent logging with "AUTOARM" prefix
- Support for graceful shutdown and reload
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 - No
diagnostics.py for debugging support
References