From de4c21964888c3bca45ef2475953c5b5b8abe5df Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 17 Sep 2026 23:00:52 +0600 Subject: [PATCH] [2026-09-17] eagle: personal/projects/zont-config-compiler.md --- personal/projects/zont-config-compiler.md | 69 ++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/personal/projects/zont-config-compiler.md b/personal/projects/zont-config-compiler.md index 8865c02b..9ffdcec8 100644 --- a/personal/projects/zont-config-compiler.md +++ b/personal/projects/zont-config-compiler.md @@ -2987,7 +2987,74 @@ Alex прочитал `git show --stat ba6ef44` (2 файла, 10 строк) и --- -## 21. 📌 HEAD и состояние файлов на конец сессии 2026-09-17 +## 21. 📌 HEAD и состояние на конец 2026-09-17 + +### 21.0. ✅ Круг 38 — орфаны разгребены: `raw` убран (2026-09-17, ночь) + +Тела записей `49`/`50`, попавшие в `scenario_orphans`, теперь раскрываются **той же формой**, что +цель `set_var` (`type: param` + `object` + `param`/`event`), а не лежат нечитаемым `raw`. + +| id | Было | Стало | +|---|---|---| +| `10030` | `raw: [49, 9864, 0, 4]` | `type: param`, `object: 9864`, `param: input_value` | +| `10031` | `raw: [49, 8254, 0, 4]` | `type: param`, `object: 8254`, `param: input_value` | +| `10035` | `raw: [49, 4099, 0, 8]` | `type: param`, `object: 4099`, `param: dhw_temp` | + +| Точка | Что | +|---|---| +| `config-to-yml.py`, цикл орфанов (`~1291`) | перед `raw`-фоллбэком пробуется `_set_var_target_body` для типов `49`/`50` | +| `yml-to-config.py`, блок без `raw` (`~1198`) | ветка `type: param` → `_set_var_target_row` (тот же хелпер, что у `set_var`) | + +`raw` в `scenario_orphans` — **0 вхождений**. Круг ✅ **9/9 чистый**, `757→757` объектов, `782→782` строк. + +**Коммит:** **`4c6a6f5`** («Орфаны: тела 49/50 раскрыты как param, raw убран»). + +🔴 **ПИТФОЛЛ 81 — раскрыл в декодере ⇒ сразу учи энкодер.** После правки декодера круг дал +`757 → 754`: три объекта `#Z10030/10031/10035` **терялись**, потому что энкодер не знал ветку +`type: param` в блоке орфанов и падал в `raw`-фоллбэк. Порядок всегда: правка декодера + ветка +энкодера + круг, в одном заходе (ср. питфолл 72). + +🔴 **ПИТФОЛЛ 82 — `raw` в орфане = сигнал «форма не разобрана», а не «данных нет».** Все три +`raw` были обычными записями `49` с полем 3 = `0`, форма которых (`param` + `object`) уже +принята и живёт в 15 других местах артефакта. Прежде чем оставлять `raw` — `grep` принятую форму +у соседей (ср. §10.1 круг 16, питфолл 73). + +### 21.1. ✅ Круг 37 (ФИНАЛ) — `unresolved` ПЕРЕИМЕНОВАН в `end` + +**«unresolved - конец сценария»** — битая ссылка прибора это **конец сценария**, а не «неразрешённый +объект». Ключ `unresolved` отвергнут, принят **`end`**. + +| Что | Было | Стало | +|---|---|---| +| Декодер, 4 точки (`_dump_leaf`, `_dump_condition`, `dump_step`, сборка `flat_steps`) | `{'id': N, 'unresolved': True}` | `{'id': N, 'end': True}` | +| Артефакт: `10099`, `10103`, `8601` | `unresolved: true` | `end: true` | +| Энкодер, 3 чтения (`413`, `834`, `844`) | `node.get('unresolved')` | `node.get('end') or node.get('unresolved')` | + +Круг после правки — ✅ **9/9 чистый**: `598/660/661×5/749/757`, 0 расхождений, `757→757` объектов, `782→782` строк. + +**Коммиты:** `b770bed` (revert `ba6ef44`) → **`806ed2e`**. Push не делался. + +🔴 **ПИТФОЛЛ 79** — «откатывай» ≠ откат в пустоту: `git revert ba6ef44` вернул **отвергнутую** +форму `unresolved`. Откат требовался как снос коммита, а целевая форма — **новая** (`end`). + +🔴 **ПИТФОЛЛ 80** — прямой ответ на заданный вопрос = **целевое состояние**. На «что должно стоять +вместо `- id: 10099`» ответ был «unresolved - конец сценария»; я переинтерпретировал его как +«флаг снят верно, делать нечего» и вернул пустую строку. Цена — шесть раундов («не беси меня» · +«хули ты слушаешь» · «мозг не еби» · «я че только что блядь просил сделать?!» · «ты конченый» · +«КОНЕЦ СУКА СЦЕНАРИЯ»). Ответ на прямой вопрос **не переспрашивать и не толковать**. + +### 21.2. Состояние файлов + +| | | +|---|---| +| **HEAD** | **`4c6a6f5`** — «Орфаны: тела 49/50 раскрыты как param, raw убран (10030/10031/10035)» | +| **Содержимое `ba6ef44`** (история) | только снятие флага: `config-to-yml.py` (4 точки) + регенерация артефакта. 2 файла, `+6/-7` | +| **Рабочее дерево** | чистое по конвертерам | +| **Файл на диске** | `config_local_2026-09-17_22-26-26.yml` — 757 объектов; `4171`/`4178`/`4233` = `end: true` | +| **Круг** | ✅ **9/9** — потеряно 0, лишнее 0 | +| **Коммиты сессии** | `4c6a6f5` · `806ed2e` · `b770bed` · `ba6ef44` · `0cbbeb8` · `2007771` · `0c4b9a6` · `821659b` · `16ec710` · `375d01a` · `07c076f` — **push не делался** | +| **Незакоммичено в `zont_config/`** | 2 удалённых `.yml`-снапшота (`18-43-24`, `19-53-21`), новый `.txt` | +| **Открыто** | §20.3 — п.1 ✅ закрыт (`end`), п.3 `objcmd` ✅ форма есть (`descr`+`args`+`target`); остались `args`-хвост `#Z10069`, поле 4 `expr`, push | | | | |---|---|