26 KiB
Отчёт: статистика выполнения kit-dev-flow и до-петлевые свидетельства
Дата: 2026-11-05 · Исполнитель: агент (задача из ТЗ_анализ_статистики.md) Формат: каждый пункт — ФАКТ (число/файл-источник) или явно помеченная ИНТЕРПРЕТАЦИЯ. Коммитов нет, исходные файлы не правились.
1. Состояние петли опыта (§5 SKILL.md)
| Факт | Значение | Источник |
|---|---|---|
Карточек runs/**/*.md в журнале |
0 | I:\Kit\DB.FlowExp_WorkStatistics (find по runs/ — пусто; в корне только README.md и .git) |
| Коммитов в клоне журнала | 1 (README, 14:03 05.11) | git -C I:\Kit\DB.FlowExp_WorkStatistics log → 0683962 README: формат карточек… |
| Конфиг точки опыта | настроен: flow_exp_dir + flow_exp_remote в ~/.zcode/kit-knowledge.json |
файл существует, оба поля заполнены |
| Remote клона | валиден (DB/DB.FlowExp_WorkStatistics, creds в URL) | git remote -v |
| Время создания петли | README 14:03, §5 SKILL.md 14:06, flow_stats.py 14:08 (05.11) | forensic-факты ТЗ (координатор) |
flow_stats.py --kind этап-модуля |
EXIT=0, без ошибок; вывод: «Карточек: 0 (проектов: 0)», все средние «—», таблица форм пустая, «(нет провальных карточек в выборке)» | запуск 05.11 из kit-knowledge/scripts/ |
Почему пусто (ИСТОЛКОВАНИЕ, согласуется с forensic): петле 4 часа; за это время не было ни одного workflow-прогона, запущенного через протокол §5 (последние прогоны — 01.11 в Kit.ZСode.Plagins и 04.11 в Kit.RAG, все до создания петли). Дополнительно: §5.2 возлагает запись карточки на агента сессии («молча, сразу») — механизм, который не проверяется ничем (см. предложения, п.1).
Парсер flow_stats.py (факт по коду, scripts/flow_stats.py):
- YAML-шапка парсится упрощённо: строки
ключ: значениемежду двумя---; распознаются только поля из белых списков STR_FIELDS/NUM_FIELDS (строки 24–25); кавычки срезаются; значения с#обрезаются как комментарий (строка 60) — факт: значение вродеrun_id: dwfrun-...пройдёт, ноstep: 7.4 этап 2содержит пробелы — ок, а вот#внутри значения потеряет хвост. - Секция «Уроки» собирается только как строки
- …после заголовка## Уроки(строки 65–76) — варианты заголовка («## Уроки (что учесть…)») тоже матчатся (startswith), это ок. - Без карточек скрипт не падает: render() корректно выводит нули, деления на ноль нет (group_stats →
ok*100//totalдостижим только при total>0). Агрегация при первой сотне карточек поведенчески не проверена (данных нет — дыра данных). - Фильтр
--kindтребует ТОЧНОГО совпадения строки kind: значения из аннотации §5.2 («документ|требования|архитектура|БД|этап-модуля») vs README-пример (kind: db) уже расходятся в регистре/языке («БД» vs «db») — факт-несоответствие двух документов плагина (skills/kit-dev-flow/SKILL.mdстрока 127 vsDB.FlowExp_WorkStatistics/README.mdпример карточки).
2. Реальные workflow-прогоны на диске (до-петлевая фактура)
2.1. Сводка по проектам
| Проект | dwfrun | dwfeval | Период (mtimes) | Амдментов (resumedFrom) | Источник |
|---|---|---|---|---|---|
| Kit.ZСode.Plagins | 2 | 1 | 01.11 12:24–13:42 | 1 | .zcode\workflow-runs\ (3 файла, ls) |
| Kit.DevAi | 7 | 0 | 23.10 16:46–24.10 08:37 | 0 | .zcode\workflow-runs\ |
| Kit.RAG | 84 | 2 | 30.10 18:11–04.11 19:43 | 5 (по метаданным payload; ретроспектива называет «6 resume/amend» на 39 прогонов к 01.11) | .zcode\workflow-runs\, метаданные run в payload |
| Итого найдено | 93 | 3 | 23.10–04.11 | 6 | подсчёт по ls + payload |
Драфты: Kit.ZСode.Plagins — 1 (Сборка-плагина-file-editor.dwf.ts, 47 КБ), Kit.DevAi — 5, Kit.RAG — 28. Планы (.zcode\plans): 2 в Kit.ZСode.Plagins (01.11 сборка file-editor; 05.11 план создания самого kit-dev-flow — факт: пресеты задуманы как «уже есть в ~/.zcode/workflows», строка 7 плана).
2.2. Форма прогонов: preset | generated
- ФАКТ: пресеты
kit-dev-process.dwf.ts(14 194 Б, 27.10 16:43) иkit-dev-tdd.dwf.ts(15 337 Б, 27.10 17:14) существуют вC:\Users\virus-home\.zcode\workflows\. - ФАКТ: ни один из 93 .mjs на диске не содержит маркеров пресета («Архитектор формирует процесс задачи», «Страховочная проверка», «Гейт сборки и контроль дисциплины», «rulesPath») — grep по распакованным payload всех прогонов дал 0 совпадений (в 57 прогонах есть строка «dotnet build» — это гейты C#-проектов Kit.RAG/Kit.DevAi, не пресет).
- ВЫВОД (интерпретация, высокая уверенность): 100 % найденных прогонов — generated; пресеты после создания 27.10 ни разу не запускались (или прогон не оставил следа — для saved-запусков .mjs в workflow-runs пишутся так же, след бы был). Статистика «preset vs generated» из карточек не накоплена — форма во всех фактических прогонах = generated.
2.3. Топологии (числа по распакованным payload lowered-скриптов)
Kit.RAG (84 dwfrun): модальный паттерн этапа модуля — 3 агента / 5 ask / 4 фазы / 4 report (38 из 84 файлов — точно эта форма; ещё ~10 — вариации 3–4 агентов). Проверенный образец: dwfrun-f63a6556 (этап 1 модуля serve) =
- Исполнитель Api-DTO (зона + общий МАНДАТ-блок COMMON: «правишь ТОЛЬКО …; ЗАПРЕЩЕНО: 1-docs, 2-db…»)
- Интегратор:
dotnet build+KITRAG_PG_TEST=1 dotnet test(гейт выполняется агентом с Bash, НЕ world.run) - Независимый ревизор (severity low/medium/high, сверка с каноном, файлы не правит)
- Если findings>0: исполнитель применяет находки → контрольный гейт интегратора (1 цикл, без цикла-с-лимитом) Отчёт рана: conclusion + findings[] (path/problem/clause/severity) + verified[] + notCovered[].
Kit.RAG, крупные прогоны: 5–8 акторов, 6–8 фаз — этапы с несколькими исполнителями (например dwfrun-5d13c3f4: 6 акторов/14 ask/7 фаз; dwfrun-ac7e61df: 8 акторов/10 ask/7 фаз). «Инициация-v2» (04.11): 2 актора.
Kit.DevAi (7 прогонов, 23–24.10, проект TaskHub): крупнейший dwfrun-5021e485 — 12 акторов, 13 ask, 12 фаз (фазы: «Фундамент: миграция БД…» → «Хаб…» → «Раннер…» → «DevHub…» → «Гейты: dotnet-тесты…» → «Приёмка диффа по требованию владельца» → «Исправление замечаний приёмки» → «Повторные гейты» → «Повторная приёмка свежим взглядом» → «Контракты §18» → «Развёртывание на стенд» → «Итоговый отчёт») — полный цикл с приёмкой диффа владельцем внутри одного рана. dwfrun-b3c7d50f — аудит/планирование: 10 акторов, фазы «Сверяем остаток работ» → «Независимая проверка плана» → «Правим план по замечаниям» → «Пишем документ плана» (ревизия плана свежим контекстом).
Kit.ZСode.Plagins (01.11, file-editor): 4 параллельных исполнителя (Promise.all: каркас / CodeMirror-vendor / логика / панель) → сервер+интеграционный тест → детерминированные гейты world.run (python smoke.py, python mcp_check.py) с циклом доводки до 3 итераций агентом-фиксером → независимое ревью → до 2 итераций правок high/medium с перепроверкой ревьюером → publishArtifact + результат. 1 амдмент (dwfrun-1ead86e0 resumed from dwfrun-3649c525): diff 352→353 строки, 11 хунков — ТОЛЬКО правки промптов: (а) пометки «прошлый прогон мог оставить файлы — прочитай и доведи, а не создавай вслепую» (ревизия после возобновления с кэшем), (б) уточнения контракта по фактам первого прогона (tools/list-обёртка, availableDisplayModes, utf-16 BOM-вариант, зависимости CodeMirror-режимов, эхо line). dwfeval-скрипт — 13 строк проб среды (python/curl/glob) перед стартом.
2.4. Повторяющиеся приёмы (встречаются в ≥3 независимых прогонах/проектах — факт по grep/diff)
| Приём | Где видно (примеры) | Число |
|---|---|---|
| МАНДАТ/зона исполнителя в промпте («правишь ТОЛЬКО …, ЗАПРЕЩЕНО …») | Kit.RAG типовой этап; Kit.DevAi COMMON («НИЧЕГО не коммить»); file-editor CONV | десятки прогонов Kit.RAG (все этапные) |
| Интегратор-гейт сборка+тесты после исполнителей | Kit.RAG модальный паттерн (интегратор ask); Kit.DevAi 5021e485/318aff72 (фазы «Гейты»); file-editor (world.run) | 84+7+1 |
| Независимая ревизия свежим контекстом (отдельный актор, файлы не правит) | Kit.RAG модальный паттерн (ревизор); Kit.DevAi «Повторная приёмка свежим взглядом», «Независимая проверка плана»; file-editor «независимый ревьюер» | повсеместно |
| Контрольный гейт после правок | Kit.RAG (gate2); Kit.DevAi («Повторные гейты после правок»); file-editor (повторный run тестов) | повсеместно |
| Эскалации: инструкция агенту «эскалируй, не обходи молча» в промпте | grep «эскалир» — в 60/84 прогонах Kit.RAG; структурных эскалаций (hole/question-фасад для развилки) — 1 факт: dwfrun-4a3c9e90 (Kit.RAG, 1 hole); живой прецедент dwfq-эскалации описан в ретроспективе И5 (dwfq-5fba54b3-1, санкция оркестратора на вне-зонный фикс) |
см. числа |
| Детерминированные гейты через world.run (вне агента) | file-editor (2–8 worldRead-run на прогон); Kit.DevAi 318aff72/5021e485 (5–7 world-вызовов); в типовом этапном паттерне Kit.RAG гейты выполняет агент-интегратор с Bash, world.run=0 | 3 из 3 проектов, но не во всех прогонах |
| Параллельные зоны (Promise.all) | file-editor этап 1 (4 исполнителя); Kit.RAG крупные этапы (par=1–4); пресеты (агенты этапа параллельно) | повсеместно где зон >1 |
| Амдмент после прогона (AmendWorkflow) | Kit.RAG 5, file-editor 1 | 6 из 93 (6,5 %) |
2.5. Чего в скриптах НЕТ (факт по grep 93 payload)
- Таймаутов на фазы/агентов:
timeoutвстречается только у world.run-гейтов (timeoutMs: 600000в пресетах и отдельных прогонах; в Kit.RAG 18 упоминаний «timeout» — в 1 прогонеdwfrun-d7c672e4, в основном 0–6, обычно в контексте не фасада, а текста). - Бюджетов (токены/стоимость): 0 упоминаний во всех 93.
- Интегратора-гейта как отдельной структуры в пресетах: в пресете есть только
dotnet build(kit-dev-tdd +dotnet test); «интегратор» как роль в пресете отсутствует — слово «интегратор» встречается в сгенерированных скриптах Kit.RAG (роль-актор), в пресетах нет. - Ревизии свежим контекстом как гарантированного шага в пресетах: нет (в пресетах проверка = страховочный тестировщик + контроль дисциплины архитектором; независимого ревизора-агента нет). Факт по тексту
~/.zcode/workflows/kit-dev-process.dwf.tsиkit-dev-tdd.dwf.ts. - Авто-записи карточки опыта: нет ни в пресетах, ни в одном из 93 скриптов (grep «карточк|flow_exp|FlowExp» по payload — 0 совпадений, факт).
2.6. Результаты прогонов (success/partial/fail)
- Журналов завершения ранов (status/result-файлы) в .zcode/workflow-runs нет — есть только .mjs-скрипты → по самим файлам результат рана не восстанавливается (дыра данных).
- Косвенные факты результатов: ретроспектива Kit.RAG (§2): «39 прогонов (1 ошибся и перезапущен, 6 — resume/amend после капов и правок)» к 01.11; приписки И3–И8: redo 0 (И3/И4), 1 доработочный цикл (И7), красный полный гейт 527/9 (И1), красный гейт этапа 5 И6 — закрыт за 1 прогон. Гейт-тренд 104→607→709→801→808→1025→1153→1164 тестов, 0 skip (
1-docs\0-mng\retrospective.md, строки 56, 302–431).
3. Ретроспективные числа Kit.RAG (готовая фактура для метрик петли)
Источник: I:\Kit\Kit.RAG\1-docs\0-mng\retrospective.md (431 строка) + приписки И3–И8.
| Показатель | Значение | Раздел |
|---|---|---|
| Прогоны workflow к 01.11 | 39 (~0,7 млрд токенов; redo/resume 6) | §1, §2 |
| Ускорение модуль→модуль | ×3–5 (indexing 2 дня → search 1 → ask 1) | §1 |
| Находки ревизий | 53 (пик, И1-2a') → 1–2 low (И2) → медиана 2/этап (И3–И6) | §2, И3/И4 |
| Доля документационных коммитов | ~68 % | §2 |
| Повторы граблей среды | контрольные байты ×3, кодировка ×3 модуля, конкуренция за БД ×2 — «текст не равен профилактике, нужны инструменты» | §1(3), §4(7) |
| Метрики процесса, уже предложенные к ведению (6.3) | находок ревизии/этап и доля применено; доля док-коммитов; redo/этап; wall-clock и токены; инциденты среды (класс+повтор); возраст docChanges | §6.3 |
| Эскалации живьём | dwfq-5fba54b3-1 → санкция оркестратора на точечный вне-зонный фикс (И5) | приписка И5 |
| И7: один рабочий день на модуль | 11 конвейерных коммитов 10:39–17:00, полных гейтов ×2, доработочных циклов 1 | приписка И7 |
| И6: сжатие рецептов | −52 % строк рецептов, медиана коммита 1054 симв (против 1793 И5), полных гейтов ≈1,2/этап | приписка И6 |
Интерпретация: все шесть классов метрик из §6.3 ретроспективы (01.11) покрываются (или могли бы покрываться) карточкой §5 — т.е. петля опыта создана 05.11 как раз под уже накопленную потребность, но на момент анализа не собрала ни одной карточки и не синхронизирована со scorecard dx-flow (см. предложения, п.5).
4. Эталон процесса: карточка dx-flow и метрики А–Г
Источник: I:\Kit\Kit.DevAi\std1-ext\_rules\dx\dx-flow.md (живая карточка; светофор датирован 2026-11-02, история — один замер 2026-11-02).
- Цикл этапа: ТЗ (/stage) → исполнение субагентами по зонам → интегратор (полный гейт) → ревизия свежим контекстом → правки → контрольный гейт → каскад статусов → коммит с рецептом. = модальный паттерн реальных прогонов Kit.RAG (совпадение факт-в-факт, §2.3).
- 14 метрик: А1 находки ревизии/этап (медиана, ≤2, high=0); А2 псевдо-якоря (=0); А3 дефекты после замыкания (=0); А4 повторы известных граблей (=0); Б1 доля док-коммитов (≤40%); Б2 redo-прогоны/этап (≤1); Б3 wall-clock и токены (тренд ↓); В1 батарея top-3 (100%); В2 темы с первого захода (≥75%); В3 дыры корпуса; В4 возраст docChanges (≤1 итерации); Г1 honest-skip сняты (100%); Г2 эскалации закрыты владельцем (≤1 дня); Г3 инциденты среды → карточка (в тот же день). Формат фиксации:
итерация | метрика | значение | светофор | триггер | действиев отчёте замыкания; действия — коммитом std1-ext. - Соседние карточки:
dx-check.md(чек-лист A1–A3, B1–B8, E — перенесён в std1-ext решением владельца 2026-11-05),dx-map.md,dx-dev-*вstd1-ext\_rules\dx\. - Прецедент plugin-хука в этом же маркетплейсе:
sys-qa-interactiveиспользует хукPostToolUseнаAskUserQuestion(hooks/hooks.json, команда python, timeoutMs 15000) — факт: механизм хуков в плагинах семейства обкатан.
5. Согласование: метрики карточки §5 vs А–Г dx-flow
Поля карточки §5.2 (SKILL.md строки 126–130; README журнала): date, project, step, kind, form, preset, model, agents, revisions, escalations, result, duration_min, run_id + уроки.
| Поле карточки | Ближайшая метрика А–Г | Соотношение |
|---|---|---|
| agents | — | в А–Г нет (и не нужно: структурная, не процессная) |
| revisions | А1? Б2? | КОЛЛИЗИЯ имён: «revisions» в карточке не определён численно; А1 = находки ревизии (это findings из отчёта рана!), Б2 = redo/amend-прогоны. Одно поле карточки не может означать оба — см. предложения п.5 |
| escalations | Г2 | дублирует частично: Г2 — «закрыты владельцем ≤1 дня» (время закрытия), карточка — только счётчик |
| duration_min | Б3 | дублирует половину: Б3 = wall-clock И токены; токенов в карточке нет |
| result: success/partial/fail | — | в А–Г нет; коррелирует с А3/Б2 |
| (нет поля) находки ревизии | А1 | дыра: единственная метрика с готовой базой (53→2) в карточку не попадает, хотя findings[] есть в отчёте каждого рана |
| (нет поля) повторы известных граблей | А4, Г3 | дыра: уроки пишутся текстом, класс/повтор не структурированы |
| (нет поля) псевдо-якоря | А2 | дыра (ловится ревизией, в отчёте рана — findings severity) |
| (нет поля) доля док-коммитов | Б1 | дыра (считается по git, в карточке нет) |
| (нет поля) возраст docChanges | В4 | дыра (метрика замыкания итерации, не рана — в карточку места нет по определению точки опыта) |
| (нет поля) батарея/темы/дыры корпуса | В1–В3 | дыра — но это метрики RAG-контура, а не workflow-рана; дублировать в карточку не нужно |
Вывод (интерпретация): карточка §5 не согласована с dx-flow: одно поле-коллизия (revisions), два частичных дубля (escalations/Г2, duration_min/Б3), как минимум четыре дыры, из которых самая дорогая — отсутствие А1 (находки ревизии), числово доступной в каждом отчёте рана.
6. Дыры данных (явно)
- Результаты (success/partial/fail) 93 найденных прогонов — не восстановимы с диска (журналов ранов нет; .mjs — только скрипт).
- Пресетные прогоны: 0 найдено — сравнение preset vs generated по числам невозможно (есть только качественное сравнение каркасов, §2.2/§2.5).
- Токены/стоимость прогонов — только одна агрегированная оценка ретроспективы (~0,7 млрд на 39 прогонов), по-прогонно отсутствует.
- Поведение flow_stats.py на ненулевом корпусе (сортировка, --last, --write-summary, коллизии kinds «БД»/«db») — не проверено (карточек нет).
- Kit.RAG
_2bp_logs/_2bp_fix_logs(psql-логи тестов этапа 2b) — следы прогона утраченного скрипта (ретроспектива §5.8: «скрипт утрачен с сессией»); сам скрипт не найден — дыра подтверждена ретроспективой.
7. Итоговая картина (интерпретация, кратко)
Процесс фактически обкатан на 93 прогонах в трёх проектах со стабильным ядром (зоны → интегратор-гейт → ревизия свежим контекстом → контрольный гейт) и зрелой ретроспективной статистикой; петля опыта §5 создана 05.11 как автоматизация уже существующей практики замеров, но (а) держится только на памяти агента сессии, (б) её поля карточки не согласованы со scorecard dx-flow А–Г, (в) пресеты, приоритет которых заявлен в §3.2, ни разу не использованы и отстают от сгенерированных скриптов по контурам контроля (нет ревизора-агента и интегратора как роли). Проверяемые предложения — в предложения_улучшений.md.