Пока я считал на хабе, параллельная сессия на ноуте HP17 посчитала то же самое и в 22:53 выложила _Dashboards\Code-Census.html. Я узнал об этом уже после того, как посчитал. Дублирование — мой промах по правилу §7.7 (сверяться с параллельными сессиями до крупной работы).
Разделение: объём кода и время — источник истины Code-Census.html (там замер по ЧАСАМ, он точнее моего). Эта страница оставлена ради того, чего там нет: аудит харнесса, история отклонённых советов, здоровье 186 роботов, проверка гипотезы Syncthing и сверка двух замеров.
E:\GitHub\imports-engines) плюс версии в .stversions. Ещё я не считал строки-комментарии кодом. Итог: ~393К — это «сколько лежит на дисках», ~199К — «сколько написано уникального». Обе цифры честные, вторая ближе к вопросу «сколько кода мы написали».coverage, mypy, black, pylint. Из привычного стека стоит только ruff (и то как чужая зависимость).check() и печатью ✅/❌. Работают, но запускаются только поштучно и только когда кто-то вспомнит.regress_run.py и coverage_map.py физически отсутствуют на хабе и в волте, они живут только на HP17-ZBook. На хабе пересчитать собственное покрытие нечем — доезжают только готовые отчёты. Это та самая дыра P0 «у пиров нет автоканала доставки ~/.claude/scripts».python ~/.claude/scripts/coverage_map.py — на хабе эта команда просто не сработает.pyproject.toml, нет requirements.txt, нет CI, нет pre-commit — 1 497 файлов не упакованы ни во что.coverage не стоит, так что цифра 2.4% посчитана по функциям, а не по строкам. Настоящее покрытие строк почти наверняка ниже.| Слой | Штук | Состояние |
|---|---|---|
| Задачи планировщика (наши ночные роботы) | 186 | 152 включены, 34 выключены |
| Скиллы | 101 | markdown-обёртки над скриптами |
| Базы SQLite | 61 | у каждой свой формат и свой хозяин |
| Хуки сессии | 22 | python |
| MCP-серверы (коннекторы) | ~19 | Telegram, WhatsApp, Gmail, Calendar, Drive, Trello, Granola, Fireflies, Calendly и др. |
| Тема разговора | Сессий | Доля | Ходов | Доля ходов |
|---|---|---|---|---|
| 🔧 Волт / правила / скиллы / память | 141 | 26.2% | 2 063 | 20.0% |
| 🔬 Ресёрч (в основном про саму систему) | 110 | 20.4% | 3 030 | 29.4% |
| 🔧 Прямая починка / инфра | 68 | 12.6% | 1 128 | 10.9% |
| 📝 Контент | 53 | 9.8% | 1 229 | 11.9% |
| 🤝 Аутрич и лиды | 34 | 6.3% | 518 | 5.0% |
| 🚀 Продукт / GitHub / релизы | 23 | 4.3% | 298 | 2.9% |
| Прочее | 110 | 20.4% | 2 056 | 19.9% |
| Месяц | Обвязка | Наружу | Отношение |
|---|---|---|---|
| Июнь 2026 | 133 | 33 | 4.0 : 1 |
| Июль 2026 | 178 | 74 | 2.4 : 1 |
/tt — прогнать, сломать нарочно, вердикт ✅/⚠️/❌secondop.py — чужие глаза на свежий кодcoverage_map.py → живые/мёртвые детали, тест, док/arch, скор 98/100regress_run.py — регресс-сетка. На хабе её нетcoverage не стоит)pyproject.toml, ни requirements.txtЛоматель (Codex/Grok/Gemini) — это разовое ревью в момент сборки. Он смотрит на свежий код и говорит «тут криво».
Харнесс — это «вчера работало, сегодня нет». Он ловит регрессии, тихие падения ночных роботов, дрейф качества LLM и гонки за блокировки — то, что ломатель не видит в принципе.
У нас есть первое и нет второго. Одно другое не заменяет.
| Когда | Кто и что предлагал | Решение | Почему |
|---|---|---|---|
| 03.07 коммент 10.07 зум 21.07 TG | Кирилл Симаков (Monosnap, 2.5M MAU) — 20 оптимизаций харнесса с самозамеренным A/B; «Agent Learning Infrastructure» (апгрейд чужих харнессов через A2A); фрактальный рой агентов; zero-trust на апдейты харнесса. Прямая оферта: «will help you to evolve/upgrade your agents/harness or create a custom one» | открыто | Живой человек с прямым предложением. Лежит в 02-Decisions\decision-harness-optimizations-from-kirill-dr-2026-07-04.md |
| 2026 | Денис Смирнов — AgentPlane.org, платформа-харнесс с оркестрацией агентов и облачным слоем | не разбирали ни разу | Единственный совсем неотработанный советчик. 07-People\person-denis-smirnov.md |
| 14.06.2026 | Тяжёлый knowledge-pipeline: Playwright, Tesseract OCR, FAISS/Qdrant, BERTopic, SQLCipher | отклонили | АК-47: «стек, который не починить отвёрткой». Взяли 4 дешёвые надстройки. DR независимо подтвердил ~70% нашей архитектуры |
| 16.06.2026 | «Единая review-поверхность + eval-харнес» | отложили | Параллельная сессия строила движок альфы, боялись дубля. Это ровно то, о чём ты спрашиваешь сейчас |
| 18.06.2026 | Codex: milestone-retro как 3-слойный контур — PostgreSQL, Redis/SQS, Jira/Slack, OpenTelemetry, approval-engine. Оценка: 6–8 недель, 1.5–2 FTE, $250–2000/мес | отклонили | Спроектировано под обычную SWE-команду, не под тебя. Взяли одну надстройку: /retro Step 4★ |
| 28.07.2026 сегодня | Decision Memo «QA-процесс и тест-харнес» — синтез 10 отчётов от 3 вендоров (Grok Heavy, ChatGPT Pro DR, Gemini Pro DR) | ждёт твоего «+» | Статус proposed. Ничего не построено |
E:\Obsidian\Anton-Knowledge\02-Decisions\decision-2026-07-28-qa-process-and-test-harness.md| Слой | Берём | Не берём и почему |
|---|---|---|
| Обычный Python | pytest | unittest — многословный, nose2 — мёртв |
| Проверка LLM-выходов | promptfoo (YAML/CSV, MIT, локально) | DeepEval — UI завязан на SaaS; Inspect AI — порог входа |
| Журнал прогонов | свой SQLite | Langfuse (Docker+Postgres+Clickhouse+Redis), LangSmith, Braintrust — вендор-лок и приватность |
| Ночные роботы | heartbeat + утренняя проверка | внешний SaaS-мониторинг — приватность |
Gemini предупредил: Syncthing поверх живых .git и SQLite-WAL тихо портит блокировки, и часть «случайных зависаний» — это оно.
Проверил на хабе — у нас этой дыры нет. Все *.db-wal нулевого размера; *.db, *.db-wal, *.db-shm уже в .stignore; .git исключён в .stignore.shared; ни одного sync-conflict по базам или гиту; git fsck чистый.
Корень видно в цифрах: 1 497 файлов кода, 186 ночных роботов, 101 скилл, 61 база — на одного не-технаря. Из 867 python-деталей 159 уже мёртвые (18%). Из 186 роботов 52 протухли, падают или не запускались ни разу (28%).
Мы производим детали быстрее, чем способны их содержать. Харнесс это покажет, но сам по себе не уменьшит. Поставить pytest поверх 1 497 неупакованных файлов — это добавить ещё одну деталь в тот же зоопарк.
Замер ноута по часам это подтверждает численно: стройка 1 073 ч против починки 274 ч. Ты просил улучшить харнесс, потому что «починка съедает время» — но починка это только 15% времени. Съедает стройка новых инструментов. Значит харнесс, каким бы хорошим он ни был, вернёт максимум пятую часть потерянного.
И сегодняшний день — живая иллюстрация: два узла независимо посчитали одну и ту же перепись и сделали два дашборда. Это ровно та стройка, о которой речь.
Coverage-Map и Dead-Code-Candidates.coverage_map.py уже размечает живое/мёртвое по ссылкам и дате правки, а мёртвое по определению никем не вызывается — тест на него писать некому и незачем. Но если не согласен — переубеди, спорить готов.Мы построили очень большую мастерскую: почти 200 тысяч строк, 1 500 деталей, 186 роботов, которые работают ночью.
Но проверялок у нас почти нет — тесты есть только у 2 деталей из 100. И даже те 55 проверок, что написаны, запустить разом нечем: программа для запуска тестов у нас просто не установлена.
Ты сказал «шаг вперёд, три назад». Я посчитал по разговорам: три к одному. Другая машина посчитала по часам и вышло семь к одному. Ты не преувеличивал, ты преуменьшал.
Но самое важное вот что. Ты думал, что время съедает починка. Оказалось — нет. Починка это только пятнадцать минут из каждого часа. Съедает стройка новых штук: почти шестьдесят минут из ста. Мы всё время строим новый инструмент вместо того, чтобы выйти наружу и поговорить с людьми.
Значит проверялки помогут, но мало. Они лечат поломки, а у нас болезнь другая: мы слишком много строим.
Ещё: из 186 ночных роботов каждый четвёртый молчит, падает или ни разу не работал.
Что делать: сначала выкинуть 159 сломанных и никому не нужных деталей, потом поставить простую проверялку и «пульс» роботам, а главное — перед каждой новой стройкой спрашивать «а кто этим будет пользоваться?» и не строить, если ответа нет.
~/.claude/projects/*.jsonl по первому сообщению: роботы, одноходовки скриптов и субагенты отделены и в статистику разговоров не входят. Темы размечены по ключевым словам первого сообщения — метод грубый, ошибка на отдельной сессии возможна, на 539 сессиях пропорция устойчива. Окно данных начинается в конце мая 2026 (более ранняя история ноутбука сюда не доехала), так что абсолютные числа — это «с конца мая», а не «за всё время». Покрытие считано по функциям, не по строкам: измерить строки нечем.