mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 16:38:31 +00:00
- entry.runtime_data (HouseplanData in store.py) instead of hass.data; WS answers not_ready without a loaded entry - test-before-setup (ConfigEntryNotReady), async_unload_entry, async_remove_entry (Lovelace resource cleanup), single_config_entry in manifest - Store minor_version + migration hook; diagnostics.py (redacted); repairs (broken_plan issues, en/ru); system_health.py; strings.json - quality_scale.yaml self-assessment; HA-harness tests (config flow, WS, upload) in CI on py3.13; CI backend job updated
113 lines
3.5 KiB
YAML
113 lines
3.5 KiB
YAML
# Integration Quality Scale self-assessment.
|
|
# Custom integrations are not formally graded (they sit in the "Custom" tier),
|
|
# but we track the official checklist here. done = implemented, exempt = not
|
|
# applicable with the reason.
|
|
rules:
|
|
# ---- Bronze ----
|
|
action-setup:
|
|
status: exempt
|
|
comment: The integration registers no service actions.
|
|
appropriate-polling:
|
|
status: exempt
|
|
comment: No polling — storage + WebSocket API + frontend serving only.
|
|
brands:
|
|
status: done
|
|
comment: Local brand images in custom_components/houseplan/brand/ (HA >=2026.3 mechanism).
|
|
common-modules:
|
|
status: done
|
|
comment: const.py, store.py (stores + runtime data), validation.py (pure schemas).
|
|
config-flow:
|
|
status: done
|
|
config-flow-test-coverage:
|
|
status: done
|
|
comment: tests_backend/test_config_flow.py (runs in CI on Python 3.13).
|
|
dependency-transparency:
|
|
status: done
|
|
comment: No external requirements.
|
|
docs-actions:
|
|
status: exempt
|
|
comment: No service actions.
|
|
docs-high-level-description:
|
|
status: done
|
|
comment: README.md.
|
|
docs-installation-instructions:
|
|
status: done
|
|
comment: README.md (HACS + manual).
|
|
docs-removal-instructions:
|
|
status: done
|
|
comment: README.md uninstall section.
|
|
entity-event-setup:
|
|
status: exempt
|
|
comment: No entities.
|
|
entity-unique-id:
|
|
status: exempt
|
|
comment: No entities.
|
|
has-entity-name:
|
|
status: exempt
|
|
comment: No entities.
|
|
runtime-data:
|
|
status: done
|
|
comment: entry.runtime_data holds HouseplanData (stores + write lock).
|
|
test-before-configure:
|
|
status: exempt
|
|
comment: No external device/service to validate during the flow.
|
|
test-before-setup:
|
|
status: done
|
|
comment: Storage load is verified in async_setup_entry (ConfigEntryNotReady on failure).
|
|
unique-config-entry:
|
|
status: done
|
|
comment: single_config_entry in manifest.
|
|
# ---- Silver ----
|
|
action-exceptions:
|
|
status: exempt
|
|
comment: No service actions; WS handlers reply with typed error codes.
|
|
config-entry-unloading:
|
|
status: done
|
|
comment: Unload supported; WS commands and static paths are global by design (documented in __init__).
|
|
docs-configuration-parameters:
|
|
status: done
|
|
comment: README documents the admin_only option and card options.
|
|
docs-installation-parameters:
|
|
status: done
|
|
entity-unavailable:
|
|
status: exempt
|
|
comment: No entities.
|
|
integration-owner:
|
|
status: done
|
|
log-when-unavailable:
|
|
status: exempt
|
|
comment: No external service.
|
|
parallel-updates:
|
|
status: exempt
|
|
comment: No entities/polling.
|
|
reauthentication-flow:
|
|
status: exempt
|
|
comment: No authentication against an external service.
|
|
test-coverage:
|
|
status: todo
|
|
comment: Backend covered by pure tests + HA-harness tests in CI; measuring >95% is planned.
|
|
# ---- Gold (selected; entity/device rules are exempt — no entities) ----
|
|
diagnostics:
|
|
status: done
|
|
comment: diagnostics.py with redaction of personal marker fields.
|
|
reconfiguration-flow:
|
|
status: exempt
|
|
comment: Nothing to reconfigure — no host/credentials; all data is edited in the card UI.
|
|
repair-issues:
|
|
status: done
|
|
comment: Missing plan files raise repair issues (translation_key broken_plan).
|
|
docs-troubleshooting:
|
|
status: todo
|
|
docs-examples:
|
|
status: todo
|
|
# ---- Platinum ----
|
|
strict-typing:
|
|
status: todo
|
|
comment: Python is annotated; mypy strict pass is planned.
|
|
async-dependency:
|
|
status: exempt
|
|
comment: No dependencies.
|
|
inject-websession:
|
|
status: exempt
|
|
comment: No outgoing HTTP.
|