31 KiB
Рекомендации еженедельного анализа kit-dev-flow — 2026-11-06
Исполнитель: этап «analyst» конвейера (авто). Источники: _summary.md
(перегенерирован этим прогоном flow_stats.py --write-summary), карточка
runs/2026/2026-11-05-анализ-kit-dev-flow-10fa0e8f.md (единственная в петле,
прочитана полностью, включая разделы «Уроки»),
baseline/2026-11-05-до-петли.md (93 до-петлевых прогона в 3 проектах,
23.10–04.11), dx-flow.md (эталон: 14 метрик А1–Г3, цели/триггеры, светофор
от 2026-11-02), recommendations/2026-11-05-рекомендации.md (прошлый анализ —
сверка прогресса R1–R9). Период: 2026-11-05 → 2026-11-06; клон журнала —
этап 01-clone, ветка main, HEAD abafea3 (единственная запись reflog — сам
клон: с прошлого анализа в журнал ничего не коммитилось и не приезжало).
Артефакты, записанные в журнал этим прогоном:
recommendations/2026-11-06-рекомендации.md (этот документ),
_recommendations.md (перезаписан: TOP-таблица), _summary.md
(перегенерирован скриптом). Карточки runs/ и остальные файлы журнала не
изменялись. Коммит не выполнялся — отдельный этап конвейера.
Состояние на дату
- Карточек в петле: 1 — новых за период нет. Единственная карточка
dwfrun-10fa0e8f(05.11 18:43, kind документ, form preset, preset kit-dev-process, agents 4, revisions 0, escalations 10, result fail, duration «-») остаётся и первой, и последней: прогонов разработки через петлю ещё не было, срез--kind этап-модуля— 0 карточек. Петле сутки; она ещё не собрала ни одного замера класса, ради которого создавалась. flow_stats.pyотработал по трём выборкам без ошибок (EXIT=0), вывод повторяет прошлый замер: все проекты → «Карточек: 1 (проектов: 1)», форма preset 1 / success 0 %, средние: агентов 4.0, ревизий 0.0, эскалаций 10.0, длительность —;--kind этап-модуля→ «Карточек: 0» (с пустой таблицей форм);--kind документ→ та же карточка.- Новых замеров А1–Г3 нет: светофор остаётся от 2026-11-02 (А1–А4, Б1, Б2, В2, В4 — 🟡; Б3, В1, В3, Г1–Г3 — 🟢, dx-flow:114). Петлевые факты светофор не переключают — замер делается отчётом замыкания итерации проекта, не анализом петли.
- Ни одна из R1–R9 прошлого анализа не исполнена — перепроверено построчно
06.11:
project/stepкарточки — по-прежнему пути (карточка:3–4); NUM_FIELDS парсера без findings/redo/tokens (flow_stats.py:23); словарь kind в README — латинскоеdb(README:32) при «БД» в SKILL.md (baseline §1); ссылка dx-flow.md:8../../readme.mdведёт вне репозитория. Это ожидаемо: исполнение висит на решениях владельца Р-1..Р-8 (карточка, «Уроки») и отдельных задачах внедрения P1–P6. - Окно решения Р-1 ещё открыто для класса этап-модуля (0 карточек — миграции формата пока не потребовалась бы ни для одной), но уже закрыто для класса документ: единственная карточка записана старым форматом. Цена промедления растёт с каждой новой карточкой: утверждить P4+P5 (формат карточки, словарь kind, --verify-last) — самое дешёвое по цене момента действие недели.
- Новый механический факт периода: многострочные уроки теряют хвост при агрегации — см. R9(4).
Сверка с целями dx-flow
Метрики хуже цели — кандидаты в рекомендации (правило светофора)
| Метрика | Цель | Последний факт | Светофор | Изменение за период 05→06.11 |
|---|---|---|---|---|
| А1 находки ревизии/этап, high | медиана ≤2, high=0 | медиана 2/этап (И3–И6), И3-э1: 2 high | 🟡 | новых замеров нет; неизмеримость пресетной веткой переподтверждена: единственная карточка — revisions 0, поля findings нет (R2/R5) |
| А2 псевдо-якоря | 0 | И3-э1: 2 | 🟡 | новых замеров нет; приём «пересчёт/живой запрос» в таблице приёмов dx-flow так и не дописан (R7) |
| А3 дефекты после замыкания | 0 | И1: этап «доезжал» ×2 | 🟡 | новых замеров нет; петлевой прецедент (находка LOW не закрыта правкой артефакта) актуален (R7) |
| А4 повторы известных граблей | 0 | И2: 3; И3: инструменты введены | 🟡 | новых фактов нет; ждёт данных петли |
| Б1 доля док-коммитов | ≤40 % | И1 ~70 %, И2 ~56 % — две итерации подряд >50 % | 🟡 | без изменений; триггер «упрощать каскад» исполнен не был (R8) |
| Б2 redo-прогоны/этап | ≤1 | И1 4, И2 2; И3/И4 0 | 🟡 | поле redo карточкой не собирается — переподтверждено (R2) |
| В2 темы с первого захода | ≥75 % | 2/4 = 50 % | 🟡 | без изменений; контур RAG-корпуса, не петля |
| В4 возраст docChanges | ≤1 итерации | до 4 этапов | 🟡 | без изменений; триггер «выносить легализацию чаще» (R8) |
Метрики в цели (🟢), которые карточка петли не измеряет
| Метрика | Цель/тренд | Факт (переподтверждён 06.11) |
|---|---|---|
| Б3 wall-clock и токены | тренд ↓ на однотипных | duration_min «-» («пресетом не фиксируется», карточка:13), поля токенов нет (R2) |
| Г2 эскалации | закрытие ≤1 дня | счётчик есть (10), время закрытия и разбивка по темам в карточку не попадают — прямой урок карточки (R2) |
Правило отбора соблюдено: в TOP — все 🟡-кандидаты (кроме названных исключений) плюс впервые доказанная неизмеримость 🟢-метрик и механические дефекты журнала. R1–R9 сохраняют номера и ранги прошлого анализа: фактуры периода (0 новых карточек, 0 новых замеров) для переранжирования нет; к каждой добавлен статус исполнения и перепроверка.
TOP-рекомендации
R1. Формат полей карточки — по README, а не пути и прочерки
Тип: механическая (имена/значения полей карточки, имя файла) · Приоритет: 1 · Статус против 2026-11-05: не исполнено — перепроверено 06.11.
- Доказательство: карточка:3–4 —
projectиstepсодержат полный путьI:/Kit/Kit.ZСode.Plagins/tasks/2026-11-05-анализ-kit-dev-flow; формат README:25,30–31 задаёт короткие идентификаторы (project: kit-rag,step: 7.4 этап 2) и имя файла<дата>-<проект>-<шаг>-<hash>— в имени фактической карточки части<шаг>нет;duration_min: "-"(карточка:13) — конвенция «не зафиксировано» нигде не определена. Следствие уже в_summary.mdэтого прогона: «проектов: 1», где «проект» — путь, а уроки печатаются с путём дважды — «(I:/Kit/…, I:/Kit/…, preset)» (_summary.md:12). Каждая новая папка задачи станет «новым проектом» — группировка по project фрагментируется. - Действие: в README зафиксировать:
project— короткое имя проекта (словарь: kit-rag, kit-dev-ai, kit-zcode-plagins…),step— короткий идентификатор шага, незафиксированное значение — пустое или-, имя файла — со всеми четырьмя частями; требование продублировать в генерацию карточки (SKILL.md §3.3/§5.2). Входит в пакет решения владельца Р-1 (P4+P5). - Как проверить: следующая карточка — короткие
project/step,<шаг>в имени файла; две карточки одного проекта дают в_summary.md«проектов: 1», а не 2.
R2. Поля карточки для А1/Б2/Б3/Г2: findings, findings_high, redo, tokens
Тип: механическая (имена полей карточки) · Приоритет: 2 · Статус: не исполнено — whitelist парсера без изменений (flow_stats.py:23–25, проверено 06.11).
- Доказательство: единственная карточка: revisions 0 при kind=документ
(«у пресета нет циклов ревизии», карточка:10), тогда как А1 — находки
ревизии (findings[] отчёта рана): поле
revisionsчисленно не определено, коллизия А1/Б2 (baseline §5); duration_min «-» и токенов нет — Б3 неизмерима; урок карточки прямо требует: «разбивка по темам каждой эскалации в материал прогона не попадает — учесть при доработке формата карточки/отчёта рана» (10 эскалаций при 4 агентах). Парсер распознаёт только STR_FIELDS/NUM_FIELDS — новые поля молча теряются. - Действие: расширить шапку карточки полями
findings(всего находок ревизии),findings_high,redo(амдменты/resume),tokens; определитьrevisions= «циклы правок по находкам ревизии»; темы эскалаций — полемescalation_topicsили кратким списком в «Уроках»; новые числовые поля добавить в NUM_FIELDS одним коммитом с README/SKILL.md. Входит в пакет Р-1 (P4+P5: amend_runs/review_findings/tokens). - Как проверить: карточка-фикстура с новыми полями проходит парсер без
потерь; в
_summary.mdпо kind=этап-модуля появляются средние findings/redo — сверка с А1/Б2 без ручного сбора; для preset-прогонов Б3 получает числа.
R3. Атрибуция журнала при прогонах над журналом: baseline HEAD + зоны
Тип: семантическая (зоны/areas исполнителей) · Приоритет: 3 · Статус: не исполнено; сам этот прогон аналитика тоже не зафиксировал baseline HEAD (этап работал в окружении без git-бинарника, клон дан этапом 01-clone) — прецедент повторится, пока правила нет.
- Доказательство: урок карточки «Вне-зонная запись в журнал
DB.FlowExp_WorkStatistics в окне прогона»: 2 локальных коммита 18:16:09
(
075f063) и 18:16:45 (e6c9559) + файлы baseline/, scripts/, dx-flow.md — журнал не входит в areas ни одного из 4 исполнителей; контролёр заявил «коммитов не делал» (проверка_контрольная.md §2.1/K1); атрибуция невозможна, классифицировано «параллельная активность, задаче не приписывать», решение владельца Р-8. Предписание урока: «до старта фиксировать baseline HEAD журнала и/или явно включать его в areas, чтобы атрибуция была формальной». - Действие: правило в dx-flow/SKILL.md: прогон, работающий над журналом
опыта или иным общим репозиторием, фиксирует в карточке базовую ревизию
(поле
journal_base) либо включает журнал в areas назначенного исполнителя; изменения между base и HEAD вне зон — задаче не приписываются. - Как проверить: в следующей карточке прогона над журналом есть базовая ревизия; diff base..HEAD объясним зонами; находки класса K1 («коммиты неизвестного происхождения») не воспроизводятся.
R4. Словарь kind: один канон в README и SKILL.md
Тип: механическая (словарь kind) · Приоритет: 4 · Статус: не исполнено — README:32 с db на месте (проверено 06.11); SKILL.md вне журнала, синхронизацию проверять при утверждении Р-1.
- Доказательство: README:32 — словарь «документ | требования |
архитектура | db | этап-модуля», пример
kind: db; SKILL.md:127 (по baseline §1) — «БД»: расхождение регистра/языка в двух документах плагина. Фильтр--kindтребует ТОЧНОГО совпадения (flow_stats.py:93–94) — «БД» и «db» станут двумя классами, выборки потеряют карточки. Для аналитического класса отдельного значения/правила нет (см. R6): единственная карточка использовала «документ». - Действие: зафиксировать канонический словарь из 5 значений (латинское
db) в README, дословно синхронизировать SKILL.md; в flow_stats.py — нормализация kind (trim/lower, синоним «бд»→«db») до сравнения; значение для аналитического класса согласовать с R6. Входит в пакет Р-1. - Как проверить: тестовая карточка
kind: БДпопадает в выборку--kind db; в отчёте класс один; словари README и SKILL.md совпадают дословно.
R5. Каркас пресета — до модального паттерна (ревизия, интегратор, запись карточки)
Тип: семантическая (топология/роли/гейты пресета) · Приоритет: 5 · Статус: не исполнено — единственный preset-прогон в фактуре по-прежнему даёт revisions 0, escalations 10, result fail.
- Доказательство: первый и единственный пресетный прогон (до-петлевые 93 — все generated, baseline §2.2): revisions 0 («у пресета нет циклов ревизии»), escalations 10 при 4 агентах («заметная часть решений ушла в approvals владельца» — Р-1..Р-8), result fail (карточка:10–12); в пресетах нет ролей интегратора и независимого ревизора (baseline §2.5), тогда как сгенерированный модальный паттерн Kit.RAG (зоны → интегратор-гейт → ревизор свежим контекстом → контрольный гейт, baseline §2.3) совпадает с эталоном dx-flow «факт-в-факт» (baseline §4). Пресетная ветка не производит ни ревизий, ни данных для А1 — и именно она пока единственная пишет карточки.
- Действие: привести
kit-dev-process.dwf.ts/kit-dev-tdd.dwf.tsк модальному паттерну: исполнители по зонам с мандатами → интегратор-гейт → ревизор свежим контекстом → контрольный гейт → финальная стадия «карточка + commit»; до выравнивания не форсировать приоритет пресетов из §3.2 SKILL.md. Входит в решения владельца Р-2/Р-3. - Как проверить: grep ролей интегратора/ревизора в тексте пресета;
следующий пресетный прогон даёт карточку с findings и осмысленным
revisions, эскалации без разбухания approvals; в
_summary.mdтаблица «форма» наполняется обеими ветками.
R6. Правило для аналитических/исследовательских задач (sd-анализ)
Тип: семантическая (роли/гейты класса задач) · Приоритет: 6 · Статус: не исполнено; этот еженедельный анализ — первый кандидат на применение правила (класс тот же: ТЗ → отчёт → рекомендации).
- Доказательство: урок карточки «Нет файла правил для аналитических/исследовательских задач (ТЗ → отчёт → предложения)»: этапы аудита и контрольной проверки строились по общему каркасу без норматива; правила тестов c-tst/db-tst/d-tst неприменимы (задача не меняет код/БД/DAL, правки плагина запрещены ТЗ); процессные шаги 1–7 process.md не применялись. Урок прямо предписывает: «при повторении класса задач стоит завести правило (например, sd-анализ)».
- Действие: завести правило класса: каркас «ТЗ → аудит/верификация по ТЗ → доработка → независимая контрольная проверка → сдача владельцу»; гейты класса — воспроизведение фактов и сверка с ТЗ вместо тестов; утверждение через ретроспективу (std1-ext).
- Как проверить: следующая аналитическая задача (включая следующий прогон этого конвейерного анализа) строит план по правилу — ссылка в плане рана; контрольная проверка идёт по формализованному чек-листу, а не «по общему каркасу».
R7. Исполнить триггер А2 и закрытие находок контрольного гейта правкой
Тип: семантическая (гейты/приёмы dx-flow) · Приоритет: 7 · Статус: не исполнено — таблица приёмов dx-flow:37–49 по-прежнему без строки про пересчёт чисел/живые запросы якорей.
- Доказательство: А2 = 2 (И3-э1, 🟡), триггер метрики требует «приём в dx-flow + формулировка dx-dev-8»; в цикле этапа пересчёт упомянут (dx-flow:16–18), но отдельного приёма в таблице приёмов нет. Петлевые прецеденты того же корня (утверждения без пересчёта): аудит §2.2 приписал руну «grep ≥1 строка» по всем 4 маркерам пресета, независимое воспроизведение — 2 маркера ×0 (карточка, «Уроки»); и факт класса А3: «аудит после себя не правил никто — расхождение живёт в артефакте (LOW)» — находка контрольного гейта задокументирована, но не закрыта правкой.
- Действие: ретроспективой (владелец в контуре утверждения) дописать в таблицу приёмов dx-flow строку «якоря перепроверяются живым запросом (dx-dev-8), числа — независимым пересчётом» с числом-прецедентом; дополнить шаг «ПРАВКИ» цикла этапа: находки контрольного гейта закрываются правкой артефакта, а не только документированием.
- Как проверить: строка приёма с прецедентом-числом в dx-flow; на следующем прогоне класса А2 = 0, за контрольным гейтом — diff правки артефакта, а не только запись о находке.
R8. Исполнить сработавшие триггеры Б1 и В4 (ретроспективой проекта)
Тип: семантическая (каскад статусов, клапан легализации) · Приоритет: 8 · Статус: не исполнено — новых итераций проекта за период не было.
- Доказательство (без изменений с прошлого анализа): Б1 — И1 ~70 %, И2 ~56 %: две итерации подряд >50 % при цели ≤40 % ⇒ триггер «упрощать каскад» уже сработал, метрика 🟡; по правилу карточки dx-flow (строки 76–79): правило соблюдается, а метрика хуже цели ⇒ на следующей ретроспективе пересматривается оценка правила/приёма. В4 — возраст docChanges до 4 этапов при цели ≤1 итерации ⇒ триггер «выносить легализацию чаще».
- Действие: в ближайшей ретроспективе проекта: каскад статусов — строго одно место (readme модуля) + ссылки; легализация docChanges — на каждом замыкании этапа.
- Как проверить: замер git log следующей итерации — доля док-коммитов ≤50 % (цель ≤40 % к следующей); возраст старейшей записи docChanges на легализации ≤1 итерации; строка «итерация | метрика | значение | светофор | триггер | действие» в отчёте замыкания.
R9. Механика журнала: ссылка, пустая таблица, «#» в значениях, обрезка многострочных уроков
Тип: механическая (ссылки, вывод отчёта, парсер) · Приоритет: 9 · Статус: не исполнено — все три дефекта прошлого анализа перепроверены 06.11 и на месте; расширен новым фактом этого прогона (п. 4).
- Доказательство: (1) dx-flow.md:8 — ссылка
[readme.md](../../readme.md)из корня журнала ведёт вне репозитория (оригинал карточки — std1-ext Kit.DevAi); (2)render()при 0 карточек печатает пустую таблицу «| форма | прогонов | success |» без строк — наблюдено сегодня в выборке--kind этап-модуля; (3) парсер обрезает значение по «#» (flow_stats.py:60val.split(" #")[0]) — значение с решёткой внутри потеряет хвост, ограничение в README не описано; (4) новое: многострочные уроки теряют хвост — парсер собирает только строки, начинающиеся с «- » (flow_stats.py:73–74), продолжения пункта отбрасываются: в_summary.mdэтого прогона урок «Вне-зонная запись…» обрывается на «: 2» (_summary.md:12) — потеряны «2 локальных коммита 18:16:09 (075f063) и 18:16:45 (e6c9559)…»; урок «Дефект точности…» обрывается на «:» (_summary.md:13). Самые содержательные части уроков в агрегат не попадают. - Действие: заменить ссылку явным указанием источника («эталон: Kit.DevAi/std1-ext/_rules/dx/dx-flow.md»); не печатать таблицу без строк; склеивать строки одного пункта «Уроков» до следующего «- »/заголовка; в README (формат карточки) — запрет «#» в значениях шапки, кроме явного комментария через пробел.
- Как проверить: выборка с 0 карточек — без пустой таблицы; в
_summary.mdурок читается целиком (до конца пункта); ссылка ведёт в осмысленное место либо заменена путём; значение без «#» читается парсером целиком.
Не вошло в TOP (осознанно)
- В2 темы с первого захода 50 % < 75 % — контур RAG-корпуса, не петля;
триггер (тюнинг запросов,
--tag env:*) уже в «Открытых хвостах» dx-flow. - А4, Б2 — свежих фактов нет (А4: И2 3 повтора, инструменты введены в И3; Б2: поле пока не собирается — R2); пересчёт после наполнения петли.
- Г1, Г3, В1, В3 — в цели, 🟢, действий не требуют.
- «Папка задачи вне git», «нет start.md/module_reqs.md» — условия окружения конкретной задачи, дефектом процесса не являются.
- Переранжирование R1–R9 — фактуры периода нет (0 новых карточек, 0 новых замеров); номера сохранены для трассируемости с анализом 2026-11-05.
Что сделано этим прогоном аналитика
- Запущен
flow_stats.pyтрижды (все проекты +--write-summary; kind «этап-модуля»; kind «документ») — EXIT=0, выводы идентичны прошлому замеру;_summary.mdперегенерирован. - Прочитаны README.md, dx-flow.md, единственная карточка
runs/(полностью, включая «Уроки»), baseline, прошлые рекомендации и_summary.md; сверка прогресса: R1–R9 не исполнены, механические дефекты перепроверены построчно, зафиксирован один новый факт — обрезка многострочных уроков в агрегате. - Записаны: этот файл и
_recommendations.md(перезаписан). Карточкиruns/и остальные файлы журнала не тронуты. Коммит не выполнялся — отдельный этап конвейера (этап аналитика работал в окружении без git-бинарника; клон ветки main подготовлен этапом 01-clone).