From 1c4f4e925c84702d81d350441545a62d381383eb Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Sat, 10 Oct 2026 19:23:46 +0600 Subject: [PATCH] [2026-10-10] eagle: personal/projects/personal-os/personal-os-data-analysis-workflow-2026-10-09.md personal/projects/personal-os/personal-os-rlm-stand-results-2026-10-10.md --- ...al-os-data-analysis-workflow-2026-10-09.md | 2 + ...ersonal-os-rlm-stand-results-2026-10-10.md | 87 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 personal/projects/personal-os/personal-os-rlm-stand-results-2026-10-10.md diff --git a/personal/projects/personal-os/personal-os-data-analysis-workflow-2026-10-09.md b/personal/projects/personal-os/personal-os-data-analysis-workflow-2026-10-09.md index ce8dc3da..3610ffd2 100644 --- a/personal/projects/personal-os/personal-os-data-analysis-workflow-2026-10-09.md +++ b/personal/projects/personal-os/personal-os-data-analysis-workflow-2026-10-09.md @@ -217,6 +217,8 @@ Graphiti передаёт при извлечении отношений пре ### 9.1a. Дополнение 2026-10-10 (вечер): выборка и первый прогон на рабочих данных +Полные результаты обоих прогонов, ошибки и решения: [[personal-os-rlm-stand-results-2026-10-10]]. + - Выборка подготовлена: 14 связных работ из `personal_os` (855 задач, 10 603 stories, 195 ссылок на PR) плюс Mattermost (1 465 сообщений за 1–9 октября), 7 транскриптов Zoom, 71 строка `activity_daily` и 9 daily briefs. Каталог `tools/rlm-lab/datasets/private/sample-2026-10-10/`, экспорт `scripts/rlm-sample-export.js`. Состав — предложение, не утверждён. - Первый прогон на одной работе (Duck.ai → меню приложения, контрольный случай без упоминания Алекса): шесть RLM-прогонов на Qwen27B и Coder30B не дошли до FINAL; одиночный вызов с заранее собранным контекстом на Qwen27B дал проверяемый JSON (10/10 улик по gid подтверждены, одно перепутанное авторство, завышено состояние «released»). Детали, исправления стенда и выводы: `tools/rlm-lab/datasets/private/sample-2026-10-10/eval/report-2026-10-10.md`. - Исправлено в стенде: падение mlx_lm на tool-call токене (обёртка `backend.py`), таймауты и бюджеты вызовов подняты (`config.json`). Шаг 9.2.3 и 9.2.4 ниже остаются актуальными; шаг 9.2.1 выполнен в части подготовки, выбор состава за Алексом. diff --git a/personal/projects/personal-os/personal-os-rlm-stand-results-2026-10-10.md b/personal/projects/personal-os/personal-os-rlm-stand-results-2026-10-10.md new file mode 100644 index 00000000..8e737fcf --- /dev/null +++ b/personal/projects/personal-os/personal-os-rlm-stand-results-2026-10-10.md @@ -0,0 +1,87 @@ +--- +date: '2026-10-10' +status: results +tags: + - personal-os + - data-analysis + - rlm + - evaluation +--- +# Personal OS — результаты первых прогонов на рабочих данных (2026-10-10) + +Продолжение [[personal-os-data-analysis-workflow-2026-10-09]], раздел 9. Здесь зафиксировано, что было сделано, что получилось, где модель систематически ошибается и что из этого следует. Исходные файлы прогонов, эталоны и отчёты на английском: `tools/rlm-lab/datasets/private/sample-2026-10-10/` в репозитории personal-os (каталог вне git). + +## 1. Выборка + +Скрипт `scripts/rlm-sample-export.js` читает `personal_os` (localhost, E1-restore) и собирает пакет на каждую корневую задачу: родители, подзадачи до глубины 4, зависимости на один шаг, задачи по ссылкам из текста, memberships, stories без лайков и реакций, ссылки на PR и gid из текста, хеши и времена. Модуль `scripts/rlm-sample-sources.js` добавляет общие источники. + +| Что | Объём | +|---|---| +| Работ | 14 (состав предложен, не утверждён) | +| Задач в снимке | 855 | +| Stories после фильтра | 10 603 | +| Ссылок на PR в тексте | 195 | +| Mattermost | 1 465 сообщений, 1–9 октября, chat.duckduckgo.com и mm.qentra.top | +| Zoom | 7 транскриптов, 29 сентября – 6 октября | +| activity_daily | 71 строка, апрель–июнь | +| daily briefs | 9 файлов, июнь | + +Пробелы: таблиц GitHub в `personal_os` нет, PR только как URL из текста; задачи релизов в выборке отсутствуют; у Fire Button нет родителя в БД; у Tab.swift не хватает 7 подзадач. Mattermost привязывается только по явному gid/PR, совпадения есть у одной работы (VSCode-миграция). Zoom, activity и briefs в анализ не входят, в снимке они пока балласт. + +## 2. Первый прогон: RLM на одной работе + +Работа: Duck.ai → пункт «AI Settings» в меню приложения, контрольный случай «AI Chat задевает главное окно без упоминания Алекса». Эталон написан до запуска по оригиналам. + +| Режим | Исход | Время | +|---|---|---| +| RLM Qwen27B ×2 | падение mlx_lm на tool-call токене; таймаут API | 42 с, 121 с | +| RLM Qwen27B | 8 вызовов на чтение, FINAL нет | 288 с | +| RLM Qwen27B | несколько repl-блоков в ответе, повторяется; остановлен | ~16 мин | +| RLM Qwen27B | один блок соблюдён, с шага 12 цикл; 24 вызова, FINAL нет | 694 с | +| RLM Coder30B | каждый ответ упирается в 2048 токенов, ничего не выполнено | 943 с | +| Один вызов Qwen27B с собранным контекстом | валидный JSON | 138 с | +| Один вызов Coder30B | валидный, тонкий | 25 с | + +Вывод: RLM на этих моделях без thinking не сходится даже на работе в 79 KB; одиночный вызов даёт проверяемый результат. Модель нашла факт, пропущенный в ручном эталоне: 5 октября Alex M упомянул задачу из задачи релиза 1.210.0. Эталоны надо сверять скриптами. + +Исправления стенда: `backend.py` отключает разбор tool-call в mlx_lm; таймауты и бюджеты вызовов подняты в `config.json`; добавлен `baseline.py`. + +## 3. Второй прогон: один вызов, схема v2, четыре работы + +Схема v2: утверждения о состоянии (proposed, decided, implemented, approved, released, cancelled, open, blocked) с уликой и флагом confirmed; хронология с уликами; люди; Алекс (mentioned, assignee, author, responsible, intersection_kind); ссылки; неизвестности. Контекст собирается `tools/rlm-lab/build_input.py`: корень полностью, у подзадач только комментарии, назначения, завершения, переименования и всё, где автор Алекс; бюджет 160 тысяч символов. + +| Работа | Prompt токенов | Время | JSON | Улики найдены | +|---|---:|---:|---|---| +| Duck.ai entry point | 9 682 | 146 с | валидный | 19/19 | +| Fire Button (Алекс DRI) | 49 814 | 489 с | валидный | 23/23 | +| VSCode migration (Алекс DRI, открыта) | 51 814 | 490 с | валидный | 15/15 | +| Prevent accidental quit (Алекс DRI) | 65 544 | 611 с | валидный | 23/23 | + +Первая попытка батча потеряна из-за лимита 2048 токенов ответа и таймаута 600 с; подняты до 8192 и 1800 с. Prefill ≈ 110–160 ток/с, это главная статья времени. + +Что верно во всех четырёх: ни одной выдуманной улики; роли Алекса совпали с посчитанной из записей истиной (owner на трёх, awareness на Duck.ai); хронологии с правильными датами; отмены ловятся, когда о них сказано прямо; Mattermost использован там, где привязан; неизвестности осмысленные. + +Две системные ошибки: + +1. **Релиз помечен как подтверждённый** на 3 работах из 3 продуктовых. Улика: движение по release board или бот-запись «упомянута в задаче релиза». У Duck.ai задачу вернули в Pre-release Validation 6 октября; у accidental quit выдуман релиз iOS из тега. Флаг confirmed не помогает: true в 30 из 31 утверждений. +2. **Закрытая подзадача прочитана как реализация.** VSCode: «CoreData мигрирован на code-initialized модели [confirmed]» по завершённой подзадаче, которая на деле отменена, потому что Xcode 27 собирает модели как есть. Та же ошибка project truth, что записана в README проекта 4 октября. + +Прочие пропуски: у Duck.ai нет ранней реализации PR 5553 и правила про ship review; у Fire Button не отмечен отсутствующий родитель и блокировка Sites-секции FE-задачей; у VSCode смешаны устаревший «[ON HOLD]» и сентябрьский перезапуск. + +## 4. Хранение + +Миграция `migrations/007_work_claims_pilot.sql` применена к `personal_os`: `work_analysis_runs` и `work_claims` (статус candidate/accepted/rejected, evidence_ref, evidence_found, model_confirmed). Загружено 4 прогона, 212 утверждений, 80 из 80 улик найдены. Это кандидаты; приёмка по дизайну [[personal-os-evidence-graph-design-2026-10-04]] не реализована. + +## 5. Что этот блок делает и чего не делает + +Делает: разбор одной корневой задачи с поддеревом в проверяемые утверждения с уликами. В будущей схеме это компонент, вызываемый на каждую работу из батча по архиву или по изменению из incoming. + +Не делает: привязку к другим работам, пересечения со сферой Алекса без явных ссылок, использование Zoom и несвязанных сообщений, поиск по корпусу. Для этого нужен следующий блок: явные связи по всему корпусу в таблице рёбер, кандидаты через соседей и поиск, второй дешёвый вызов на пару «работа ↔ кандидат». + +## 6. Решения и следующие шаги + +- Извлечение одним вызовом принято как рабочий режим для разбора работы; RLM откладывается до этапа поиска по архиву. +- Две системные ошибки лечатся правилами в коде поверх `work_claims`, не промптом: релиз только по задаче релиза с версией в корпусе, иначе suggested; завершённая подзадача даёт closed, реализация требует merge или прямого утверждения, пометка об отмене переводит в cancelled. +- Задачи релизов нужно добавить в выборку. +- Графовые продукты для этого шага не нужны; Cognee и Graphiti остаются вопросом для поиска между работами. +- Цена: 4 работы ≈ 29 минут модели; 60–100 эпизодов это 7–12 часов батчем на этой машине.