[2026-09-18] eagle: personal/projects/zont-config-compiler.md personal/tech/roundtrip-key-verification.md
This commit is contained in:
@@ -3,7 +3,7 @@ title: 🔁 Round-trip key verification — проверка нового клю
|
||||
namespace: personal
|
||||
type: how-to
|
||||
created: '2026-09-17'
|
||||
updated: '2026-09-17'
|
||||
updated: '2026-09-18'
|
||||
tags:
|
||||
- personal
|
||||
- how-to
|
||||
@@ -151,6 +151,44 @@ diff <(iconv -f <вх> -t utf-8 <оригинал> | tr -d '\r' | sort) \
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Одно имя на два разных действия = схлопывание (2026-09-18, ZONT круг 46)
|
||||
|
||||
**Симптом:** в YAML два **разных** действия читались под одним ключом, и одно затирало другое.
|
||||
|
||||
**Случай:** `set_contour_temp` — имя действия у двух **разных** типов записи:
|
||||
- **тип 9** (команда, поле 4 = уставка **числом**): `#Z8817=9,'descr',10034,'2782'` → 5.2 °C
|
||||
- **тип 59 objcmd** (поле 3 = **источник**/литерал): `#Z10379=59,'objcmd 8669 ",,,%0";#h',9146,0,0`
|
||||
|
||||
Ветка objcmd проверялась в коде **раньше**, перехватывала тело типа 9 и собирала
|
||||
`#Z8817=59,'objcmd 10034 ",,,%0";#h',5.2,0,1` вместо `#Z8817=9,…,10034,'2782'`. Плюс
|
||||
`_register_action9` перезаписывал запись секции → `Duplicate ID 8817`.
|
||||
|
||||
**Правила:**
|
||||
- Два разных действия — **два разных имени**. Одно имя на два типа записи = гарантированный
|
||||
конфликт веток. Владелец формулирует разницу сам: *«установить целевую температуру x для
|
||||
контура y»* vs *«установить температуру контура x в значение y»*.
|
||||
- При каждом переименовании или вводе ключа **сверить пересечение словарей**:
|
||||
`grep -n "_ACTION9_KEYS\|_OBJCMD_MASKS" *.py` → общие имена = баг.
|
||||
- Один id в двух секциях (шаг сценария + объект секции) → **одна** строка на id: вторая точка
|
||||
уступает первой, а не регистрирует своё тело повторно.
|
||||
|
||||
## 🔴 Артефакт в репо ≠ свежий вывод (2026-09-18, ZONT круг 46)
|
||||
|
||||
`zont_config/*.yml` в репозитории — это **выход прошлого прогона**. Пока файл не перегенерён, он
|
||||
показывает **старую** форму, и правка выглядит невнесённой. `test_roundtrip.py` пишет в `temp`,
|
||||
**целевой артефакт не обновляет**.
|
||||
|
||||
```bash
|
||||
# приёмка: сначала перегенерировать ЦЕЛЕВОЙ файл, потом смотреть глазами
|
||||
python3 config-to-yml.py zont_config/config_X.txt > zont_config/config_X.yml
|
||||
grep -n -A4 "<изменённый id>" zont_config/config_X.yml
|
||||
```
|
||||
|
||||
**Симптом:** «всё ещё вижу старое» при зелёном круге. Порядок — круг, **потом** перегенерация,
|
||||
**потом** чтение артефакта.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Круг зелёный ≠ приёмка (2026-09-17, ZONT круг 39)
|
||||
|
||||
Жёсткий урок той же сессии. Round-trip **байтово чистый** не означает, что правка верна.
|
||||
|
||||
Reference in New Issue
Block a user