Files
HomeAssistantVS/custom_components/maintenance_supporter/quality_scale.yaml
T
2026-07-08 10:43:39 -04:00

154 lines
5.2 KiB
YAML

# Self-assessment against Home Assistant's integration quality scale
# (https://developers.home-assistant.io/docs/core/integration-quality-scale/).
#
# As a HACS custom integration this file is informational — hassfest does not
# validate it — but the assessment is kept honest and current so the gaps are
# explicit. The integration is a local, deviceless service integration
# (no network I/O, no external dependencies), so the connectivity-related
# rules are exempt.
rules:
# Bronze
action-setup: done
appropriate-polling:
status: done
comment: >
5-minute coordinator refresh for time-based status; sensor triggers are
event-driven via state_changed listeners (no polling).
brands:
status: done
comment: Registered in home-assistant/brands as part of the HACS default-store listing.
common-modules: done
config-flow: done
config-flow-test-coverage: done
dependency-transparency:
status: done
comment: No runtime requirements at all (manifest requirements is empty).
docs-actions:
status: done
comment: services.yaml descriptors + docs/CONFIGURATION.md and docs/EXAMPLES.md.
docs-conditions:
status: done
comment: docs/FEATURES.md "Automation triggers & conditions".
docs-high-level-description: done
docs-installation-instructions: done
docs-removal-instructions:
status: done
comment: docs/TROUBLESHOOTING.md "Uninstalling".
docs-triggers:
status: done
comment: docs/FEATURES.md "Automation triggers & conditions".
entity-event-setup: done
entity-unique-id: done
has-entity-name: done
runtime-data: done
test-before-configure:
status: exempt
comment: Purely local — there is no device or service connection to test.
test-before-setup:
status: done
comment: Storage load + first coordinator refresh fail the setup cleanly.
unique-config-entry:
status: done
comment: Stable unique_id per object entry plus a singleton global entry.
# Silver
action-exceptions:
status: done
comment: Services raise ServiceValidationError / HomeAssistantError.
config-entry-unloading: done
docs-configuration-parameters:
status: done
comment: docs/CONFIGURATION.md documents every parameter.
docs-installation-parameters: done
entity-unavailable: done
integration-owner: done
log-when-unavailable:
status: done
comment: >
Missing/unavailable trigger entities are logged with a grace period and
surfaced as repair issues.
parallel-updates: done
reauthentication-flow:
status: exempt
comment: No authentication of any kind.
test-coverage:
status: done
comment: CI enforces >= 98% coverage over 2400+ backend tests.
# Gold
devices:
status: done
comment: Every maintenance object is a device grouping its task entities.
diagnostics:
status: done
comment: Config-entry diagnostics with PII redaction.
discovery:
status: exempt
comment: Objects are user-defined; there is nothing on the network to discover.
discovery-update-info:
status: exempt
comment: No discovery.
docs-data-update:
status: done
comment: docs/FEATURES.md "Data Updates".
docs-examples: done
docs-known-limitations: done
docs-supported-devices:
status: exempt
comment: >
Deviceless — objects model arbitrary real-world equipment; 13 object
templates are documented instead.
docs-supported-functions: done
docs-troubleshooting: done
docs-use-cases: done
dynamic-devices:
status: done
comment: >
Objects/tasks created at runtime (panel, WS, services, import) get their
device + entities immediately via entry setup/reload.
entity-category:
status: done
comment: >
Task sensors/buttons are primary by design; the global document-storage
sensor is the only meta entity and is kept primary for dashboard use.
entity-device-class:
status: done
comment: ENUM task sensors, TIMESTAMP next-due, DATA_SIZE storage, problem binary sensors.
entity-disabled-by-default:
status: done
comment: The per-task next-due timestamp sensor is registry-disabled by default.
entity-translations:
status: done
comment: translation_key everywhere; 18 languages with enforced key parity.
exception-translations:
status: todo
comment: >
Core lookup failures use translation keys (e.g. no_task_for_entity), but
most ServiceValidationError raises are still English-only.
icon-translations: done
reconfiguration-flow:
status: exempt
comment: >
Nothing is fixed at setup time — every setting is editable via the
options flow or the panel settings, so a dedicated reconfigure step
would duplicate them.
repair-issues:
status: done
comment: >
Missing trigger entities, orphaned operator ids, storage hygiene, and
notify-service problems all raise (partly fixable) repair issues.
stale-devices:
status: done
comment: Deleting an object removes its device; task deletion cleans its entities.
# Platinum
async-dependency:
status: exempt
comment: No dependencies.
inject-websession:
status: exempt
comment: No HTTP client is used.
strict-typing:
status: done
comment: mypy --strict over the whole component is a blocking CI gate.