From d1d3f8bb493f8ea3bb1585720a0b7a92ca8e9460 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Tue, 15 Sep 2026 20:38:47 +0600 Subject: [PATCH] [2026-09-15] eagle: family/tech/zigbee-t610-z2m-i-zha.md work/projects/cpm-web-extension-breakage-validation.md --- family/tech/zigbee-t610-z2m-i-zha.md | 36 +++++++++++++++++-- .../cpm-web-extension-breakage-validation.md | 5 +-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/family/tech/zigbee-t610-z2m-i-zha.md b/family/tech/zigbee-t610-z2m-i-zha.md index c9bd7155..8c9b3c96 100644 --- a/family/tech/zigbee-t610-z2m-i-zha.md +++ b/family/tech/zigbee-t610-z2m-i-zha.md @@ -56,15 +56,47 @@ related: ### Зоны (Areas) после миграции +> 🔴 **ОШИБКА, ИСПРАВЛЕНА: пара `sauna` ↔ `bed_dimmer` была перепутана.** +> Файл `~/tmp-t610/rename-map.json` (составленный агентом **до** миграции) содержал **неверные IEEE** для двух устройств: `a4c1384fbe0b3a6b` помечен как `bed_dimmer` (на деле **`sauna`**), `a4c13882a4b42db0` помечен как `sauna` (на деле **`bed_dimmer`**). +> +> **ИСТОЧНИК ИСТИНЫ — только `/config/zigbee2mqtt/configuration.yaml`** (секция `devices:`, каждому IEEE свой `friendly_name`). Проверено: `sauna` = `a4c1384fbe0b3a6b`, `bed_dimmer` = `a4c13882a4b42db0`. +> +> **УРОК: НЕ доверять промежуточным картам, построенным агентом. Перед переименованием сверять КАЖДЫЙ IEEE с исходным конфигом.** Исправлено скриптом `full_check.py` (сверка 16/16 по истинной карте, `mismatches: 0`). + ``` kotelnaia recirculation_pump, boiler_controller_power, - heating_cable_plug, boiler_water_leak + heating_cable_plug, boiler_water_leak, sauna kabinet office_table_light_switch, smart_light_office, office_temperature_sensor dushevaia night_light_shower_2, shower_2_presence_sensor lestnitsa light_stairs tualet toilet_1_floor_temperature -bedroom bed_dimmer kitchen kitchen_hood +bedroom bed_dimmer, wireless_light_switch_bed kitchen kitchen_hood ``` +### Истинная карта 16 устройств (из Z2M `configuration.yaml`) + +| IEEE | friendly_name | +|---|---| +| `0xa4c13862d39377e6` | office_temperature_sensor | +| `0xa4c138f8da8bc478` | recirculation_pump | +| `0x84fd27fffed9e137` | night_light_shower_2 | +| `0xa4c1386d40ddb67b` | light_sensor_stairs — ❌ НЕ подхвачен ZHA | +| `0xa4c1381186ed1a32` | smart_light_office | +| `0xa4c13873b5c1575b` | office_table_light_switch | +| `0xa4c13807b64c7fd4` | kitchen_hood | +| `0xa4c1386d0839706a` | light_stairs | +| `0xa4c1384fbe0b3a6b` | **sauna** | +| `0xa4c138b0f9e674a5` | wireless_light_switch_bed | +| `0xa4c13882a4b42db0` | **bed_dimmer** | +| `0xa4c138c4a94a6a31` | shower_2_presence_sensor | +| `0xa4c1383d5fcaa063` | boiler_water_leak | +| `0xa4c138eb6fbe9d19` | heating_cable_plug | +| `0xa4c1381694217e10` | boiler_controller_power | +| `0xa4c138c650636cf6` | toilet_1_floor_temperature | + +> ✅ **Сверка 2026-09-15 (ночь-15): 15 из 16 устройств в HA совпадают с истинной картой, `mismatches: 0`.** Отсутствует только `light_sensor_stairs` (батарейный, спит). + +### Зоны (первоначальная выдача) + > 🔴 **ПИТФОЛЛ: удаление `device_id` из реестра СБРАСЫВАЕТ `area_id`.** После миграции все 13 устройств оказались без зон, хотя сами зоны (11 шт.) целы. Восстанавливать через `config/device_registry/update` с `area_id`. ### Автоматизации: 12/16 живых diff --git a/work/projects/cpm-web-extension-breakage-validation.md b/work/projects/cpm-web-extension-breakage-validation.md index 72fa6875..8ae0e8a9 100644 --- a/work/projects/cpm-web-extension-breakage-validation.md +++ b/work/projects/cpm-web-extension-breakage-validation.md @@ -17,7 +17,8 @@ | Natural crash / memory / CPU termination в production | **Не проверено** | Механизм доказан, реальная частота и связь с outage требуют M3/M4. | | Close Other Tabs forget-ит retained tab | **Подтверждено и исправлено в M1** | Сохраняется тот же экземпляр Tab без ложного didCloseTab. | | Duplicate Tab из popup переносит original | **Подтверждено и исправлено в M1** | В main window уходит копия, source остаётся отдельным объектом. | -| Закрытие окна forget-ит shared pinned/other-owned tabs | **Подтверждено и исправлено в M1** | Закрываются только tabs, реально принадлежащие закрываемому окну. | +| Pin/unpin/reorder/move/merge теряют lifecycle tab | **Подтверждено и исправлено в M1** | Tab сохраняет identity; WebKit получает `didMoveTab` с old index/window вместо ложных close/open. Pinned tabs имеют корректный flattened index. | +| Закрытие окна forget-ит shared pinned/other-owned tabs | **Подтверждено и исправлено в M1** | `didCloseTab` получают только реально закрытые tabs; shared pinned сохраняются и при закрытии последнего окна. | | Нестабильный WebExtension base URL | **Исправлено и локально проверено в M2** | URL детерминирован по identifier и сохраняется между load/reload; production migration/storage validation остаётся rollout-задачей. | | Startup/session-restore content-script miss | **Подтверждено как transient** | Не объясняет устойчивый all-tabs outage. | | Failed background load навсегда застревает в m_backgroundWebView | **Исходный вывод отвергнут** | WebKit способен повторно загрузить background; устойчивый outage требует повторяемой причины/traffic. | @@ -35,7 +36,7 @@ | ------------------------ | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| M1 tab lifecycle | `codex/cpm-tab-lifecycle-fixes` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-tab-lifecycle-fixes` | **Готово:** три lifecycle fix; 4 targeted tests и macOS build проходят. | +| M1 tab lifecycle | `codex/cpm-tab-lifecycle-fixes` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-tab-lifecycle-fixes` | **Готово, без коммита:** Close Other Tabs, popup duplicate, pin/unpin, reorder, cross-window/new-window move, merge, pinned indices и закрытие shared pinned при последнем окне; 229/229 затронутых macOS tests проходят. | | M2 stable base URL | `codex/cpm-stable-base-url` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-stable-base-url` | **Готово:** 11/11 tests; iOS/macOS builds проходят. | | M3 attribution telemetry | `codex/cpm-failure-telemetry` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-failure-telemetry` | **Готово к PR:** passive PII-free facts, forwarding proxy, runtime kill switch; 23/23 tests; schemas iOS/macOS валидны. | | M4 production validation | `codex/cpm-production-validation` — `/Users/admin/DuckDuckGo/apple-browsers.git/cpm-production-validation` | **Ожидает production data:** runbook готов; начинать после одного telemetry release. |