diff --git a/AGENT_DIARY.md b/AGENT_DIARY.md index f86e7977..d3e4d3d4 100644 --- a/AGENT_DIARY.md +++ b/AGENT_DIARY.md @@ -1,4 +1,26 @@ +## [2026-10-10] PR-конвейер: три инцидента, где «код зелёный» ≠ «PR в порядке» + +- **#73 стал CONFLICTING после мержа #72 в main.** Merge разрешился сам в дневнике (union), + но auto-merge в `engine.py` я прочитал руками: он корректно сохранил и E24-фолбэк + (`try/except`), и `MSCODEBASE_DENSE_OFF`. Второй прогон уже дал настоящий CI. +- **Причина «нет CI» оказалась не в коде, а в триггере.** `pull_request: branches: [main]` → + stacked PR не даёт ни одного прогона; фазы 2 и 3 уехали с local clean-state как единственным + доказательством. Починено PR #76 (`feat/**, exp/**, fix/**, chore/**`; push остался main-only). + **Урок: чинить код до причины в пайплайне — это чинить следствие.** +- **#58 висел 11 дней CONFLICTING, и его работа (1282 строки кода + 3 теста) не была в main.** + Перебазировал: 3 конфликта решены объединением — `is_experiment_output` (main) + + `is_measurement_artifact` (ветка), устойчивая сигмоида (main) + объяснение контракта (ветка), + KNOWN_ISSUES union. 2097 тестов зелёные, CI зелёный, PR смержен. + Ветка обновлена `--force-with-lease`: «починить конфликтный PR» без замены истории невозможно. +- **Ложная тревога в мою пользу:** в `git diff` показалось, что вызов P3-якоря стоит после + `return pool`. На деле diff склеил два hunka — в файле вызов на месте (после identifier-anchor, + до O1-буста). Почти «починил» несуществующий баг; спасла проверка AST **до** правки. +- **Портфолио было на 6 экспериментов позади** (последняя запись — exp-53, сентябрь): §7.13 + нарушался месяцами. Добавлены exp-54..exp-59 (EN+RU), числа — из сырых артефактов. + Purity-guard падал трижды (p-01 `retrieval/score/results`, p-02 `vector/matching`, p-06 + `produced/written`): переформулировал текст, тест не тронул — 0/8 ложных парафраз сохранено. + ## [2026-10-10] EXP-29 — H5 закрыт, а число EXP-28 (18%) опровергнуто собственным же экспериментом - Разметка symbol/NL детерминированная и **заморожена до прогона** (`e29_label.py`): 15 symbolic / 18 NL.