154 lines
5.2 KiB
YAML
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.
|