Add quality_scale.yaml for Schlage (#178300)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
David Knowles
2026-08-06 08:54:28 +03:00
committed by GitHub
co-authored by Claude Opus 5
parent 66059633a3
commit a2fa2b7858
3 changed files with 115 additions and 1 deletions
@@ -0,0 +1,104 @@
rules:
# Bronze
action-setup: done
appropriate-polling: done
brands: done
common-modules: done
config-flow-test-coverage:
status: todo
comment: |
The error paths do not recover to a created config entry, and the unique
ID is not asserted in the user flow test.
config-flow: done
dependency-transparency: done
docs-actions: done
docs-conditions:
status: exempt
comment: This integration does not have any conditions.
docs-high-level-description:
status: todo
comment: |
The description does not explain what Schlage is or link to the
manufacturer.
docs-installation-instructions: done
docs-removal-instructions: done
docs-triggers:
status: exempt
comment: This integration does not have any triggers.
entity-event-setup:
status: exempt
comment: |
The Schlage cloud API is polled; entities do not subscribe to events.
entity-unique-id: done
has-entity-name: done
runtime-data: done
test-before-configure: done
test-before-setup: done
unique-config-entry: done
# Silver
action-exceptions:
status: todo
comment: |
The lock, switch, and select platform actions do not translate pyschlage
failures into HomeAssistantError.
config-entry-unloading: done
docs-configuration-parameters:
status: exempt
comment: This integration does not have an options flow.
docs-installation-parameters: todo
entity-unavailable: done
integration-owner: done
log-when-unavailable: done
parallel-updates: todo
reauthentication-flow: done
test-coverage: done
# Gold
devices: done
diagnostics: done
discovery-update-info:
status: exempt
comment: |
Locks are reached exclusively through the Schlage cloud API and have no
discoverable presence on the local network.
discovery:
status: exempt
comment: |
Locks are enumerated from the user's Schlage cloud account. They do not
announce themselves over mDNS or SSDP and expose no local network
service to match against.
docs-data-update: done
docs-examples: todo
docs-known-limitations: todo
docs-supported-devices: todo
docs-supported-functions: todo
docs-troubleshooting: todo
docs-use-cases: todo
dynamic-devices: done
entity-category: done
entity-device-class: done
entity-disabled-by-default:
status: exempt
comment: |
Every entity maps to a lock feature a user is expected to want.
entity-translations:
status: todo
comment: Switch names are not sentence cased.
exception-translations: done
icon-translations: done
reconfiguration-flow: todo
repair-issues:
status: exempt
comment: |
Authentication failures are handled by the reauthentication flow; there
are no other user-actionable conditions to repair.
stale-devices: done
# Platinum
async-dependency:
status: todo
comment: pyschlage is a synchronous library built on requests.
inject-websession:
status: todo
comment: pyschlage is a synchronous library built on requests.
strict-typing: done
@@ -1,4 +1,8 @@
{
"common": {
"data_description_password": "The password of your Schlage account.",
"data_description_username": "The email address of your Schlage account."
},
"config": {
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
@@ -14,6 +18,9 @@
"data": {
"password": "[%key:common::config_flow::data::password%]"
},
"data_description": {
"password": "[%key:component::schlage::common::data_description_password%]"
},
"description": "The Schlage integration needs to re-authenticate your account",
"title": "[%key:common::config_flow::title::reauth%]"
},
@@ -21,6 +28,10 @@
"data": {
"password": "[%key:common::config_flow::data::password%]",
"username": "[%key:common::config_flow::data::username%]"
},
"data_description": {
"password": "[%key:component::schlage::common::data_description_password%]",
"username": "[%key:component::schlage::common::data_description_username%]"
}
}
}
-1
View File
@@ -786,7 +786,6 @@ INTEGRATIONS_WITHOUT_QUALITY_SCALE_FILE = [
"rympro",
"saj",
"sanix",
"schlage",
"schluter",
"scrape",
"screenlogic",