Part of #670
Summary
Add the required in-repo developer note explaining the HA 2026.7 event-queue guard,
why Keymaster defers/shards notifications, and how to validate the fix. Run final validation for
the complete issue #670 stack.
Scope / changes
- Add a concise dedicated developer/architecture note under
docs/ or an equivalent in-repo
development documentation location, for example docs/keymaster-fanout-architecture.md. Do
not put this only in README.md, and do not rely only on code comments.
- Document that
KeymasterCoordinator remains the manager/storage owner, entity listeners bind
to runtime-only per-lock coordinators, refresh is manager-owned and sequential, per-lock
coordinators use update_interval=None, and deferred notifications intentionally add one
event-loop-turn UI delay.
- Document the dual-target bridge transition: foundation can notify both global and per-lock
targets, binding flips entities to per-lock coordinators, and the refresh-pipeline task removes
the global leg after no entities remain manager-bound.
- Document the targeted and full validation commands from §7.7.
- Confirm docs mention the guard test scale split: fast lowered-threshold unit test in normal CI
and focused ~13.8k slow/perf case for on-demand/nightly validation.
Plan reference
§7.7, §8 PR 6; decision 11, summarizes decisions 1-10,
and implements the 2026-07-07 developer-docs location decision.
Dependencies
Depends on: #677, #678, #679, #684
Acceptance criteria
Risk / notes
Keep the note short and developer-focused; do not duplicate the entire plan.
This task should not change runtime behavior except documentation.
Size
S
Part of #670
Summary
Add the required in-repo developer note explaining the HA 2026.7 event-queue guard,
why Keymaster defers/shards notifications, and how to validate the fix. Run final validation for
the complete issue #670 stack.
Scope / changes
docs/or an equivalent in-repodevelopment documentation location, for example
docs/keymaster-fanout-architecture.md. Donot put this only in
README.md, and do not rely only on code comments.KeymasterCoordinatorremains the manager/storage owner, entity listeners bindto runtime-only per-lock coordinators, refresh is manager-owned and sequential, per-lock
coordinators use
update_interval=None, and deferred notifications intentionally add oneevent-loop-turn UI delay.
targets, binding flips entities to per-lock coordinators, and the refresh-pipeline task removes
the global leg after no entities remain manager-bound.
and focused ~13.8k slow/perf case for on-demand/nightly validation.
Plan reference
§7.7, §8 PR 6; decision 11, summarizes decisions 1-10,
and implements the 2026-07-07 developer-docs location decision.
Dependencies
Depends on: #677, #678, #679, #684
Acceptance criteria
README.mdand accurately describes the finalarchitecture.
pytest tests/test_coordinator_sync.py tests/test_debounce.py tests/test_entity.pypytest tests/test_switch.py tests/test_text.py tests/test_sensor.py tests/test_number.py \ tests/test_datetime.py tests/test_time.py tests/test_event.py tests/test_binary_sensor.pyruff check custom_components/ tests/ruff format --check custom_components/ tests/mypy custom_components/keymaster/toxthan default CI.
Risk / notes
Keep the note short and developer-focused; do not duplicate the entire plan.
This task should not change runtime behavior except documentation.
Size
S