# 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.
