23 KiB
Executable File
Runtime 14.10.2026: старый Asana collector заменён постоянным worker в основной
personal_os. Windmill schedule каждые пять минут, live project/personal rosters каждые 15 минут, events cursors, independent retries и совместимая legacy read projection. Первый live pass перечитал все 28 проектов и нашёл 35 620 memberships; начальный refresh backlog показан отдельно в dashboard. Автоматический scheduled batch выполнил 3 000 GET и обновил 648 задач без ошибок. Контракт и проверка.
date: '2026-10-10' updated: '2026-10-14' status: results tags:
- personal-os
- data-analysis
- rlm
- evaluation
Personal OS — результаты первых прогонов на рабочих данных (2026-10-10)
Обновление отчётов 14.10: разделы 1–7 — датированные первые эксперименты. Полный каталог результатов по 486 работам: work-claims-results-2026-10-12; все claims остаются кандидатами. Дополнение 8 содержит отдельную проверку связывания BSP-ворктри, не повтор статусов всего корпуса. GitHub mirror и work dashboard уже перенесены в основную БД; отсутствие GitHub-таблиц в исходной выборке 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 использован там, где привязан; неизвестности осмысленные.
Две системные ошибки:
- Релиз помечен как подтверждённый на 3 работах из 3 продуктовых. Улика: движение по release board или бот-запись «упомянута в задаче релиза». У Duck.ai задачу вернули в Pre-release Validation 6 октября; у accidental quit выдуман релиз iOS из тега. Флаг confirmed не помогает: true в 30 из 31 утверждений.
- Закрытая подзадача прочитана как реализация. 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 часов батчем на этой машине.
7. Дополнение (вечер 2026-10-10): карта системы в Windmill
Обсуждение показало, что без визуальной карты Алекс не может участвовать в проектировании. Развёрнут локальный Windmill на хостовом PostgreSQL; вся система описана как 18 потоков-скелетов и обзорный холст, без логики и расписаний. Шесть стадий из раздела 5 стали потоком f/analyse/work_claims_extract со статусом PROPOSED. Подробности и правила работы с картой: personal-os-windmill-system-map-2026-10-10.
8. Дополнение 2026-10-14: локальный агент — привязка BSP-ворктри к работе Asana
Дополнительный случай по VSCode-миграции из раздела 3: локальный агент разбирал назначение ворктри vscode-xcode-bsp, чтобы связать актуальный Git-прогресс с работой/задачей Asana и материалами дизайна. Это отдельная проверка связывания источников, а не повтор извлечения статусов по схеме v2 и не новый анализ всех 14 работ. Старые результаты и выявленные ошибки про релиз и отменённый CoreData-подход этой проверкой не исправлены и не перевалидированы.
8.1. Вход, режим и воспроизводимость
- Work item:
5b40803b-e98d-44aa-9757-000071cceb69. - Источник:
duckduckgo/apple-browsers, путь/Users/admin/DuckDuckGo/apple-browsers.git/vscode-xcode-bsp, веткаalex/vscode-xcode-bsp. - В обоих пакетах: 10 untracked-путей, включая
DuckDuckGo.code-workspaceи девять файловscripts/vscode/; переданные списки коммитов и PR пусты; gapno_exact_asana_reference. Содержимое кода и diff в модель не передавались. - Режим: один локальный chat-вызов на попытку, профиль
qwen27b, без RLM REPL/дочерних агентов, tools и внешнего inference.temperature=0, максимум 2 048 токенов ответа. В каждом пакете — 12 кандидатов Asana и четыре локальные заметки/драфта; сумма размеров текстов передаваемых records ограничена 28 000 символов. - Первая попытка запущена через preview потока; вторая — кнопкой дашборда через сохранённый Windmill
f/analyse/work_situation,mode=resolve. После переноса в основную БД повтор второй попытки с прежнимrequest_idвернулreused=true, без третьего вызова модели. - Обе строки
work_resolution_jobsперенесены вpersonal_osи сохранены как история. Полные пакеты входа, ответы, usage, времена,input_hash,prompt_hashи повторная проверка цитат: артефакт валидации. Артефакт находится вне Git.
8.2. Две попытки
Время — UTC; Asia/Bishkek = UTC+6. Продолжительность вычислена по сохранённым started_at и finished_at.
| Попытка / job ID | Время 14.10 | Prompt / ответ, токенов | Результат | Цитаты |
|---|---|---|---|---|
До исправления поиска — 6fdaa7e9-c921-4f1e-bae8-7fb1c128adf7 |
13:41:36–13:44:16, 159,836 с | 8 202 / 352 | unknown, succeeded |
3/3 существуют во входе |
После исправления — 35f15287-9fc9-4e07-bb11-101ad6f3debf |
14:19:09–14:21:04, 114,946 с | 9 190 / 644 | link_existing, succeeded |
4/4 существуют во входе |
Первая попытка: модель не нашла доказанную связь среди переданных кандидатов и вернула unknown, не выдумав task ID. Все 12 кандидатов были завершёнными задачами обновления/починки Xcode; нужные VSCode-задачи отсутствовали. Это выявленная ошибка retrieval: общая выборка по словам с общим LIMIT вытеснила редкие совпадения VSCode/BSP множеством Xcode-задач. Такой отказ нельзя считать доказательством отсутствия подходящей задачи в Asana.
Исправление между попытками: отдельная ограниченная выборка для каждого поискового термина, приоритет доступных собственных задач и понижение завершённых задач при ранжировании. Во втором пакете появились корневая VSCode-работа и её открытая подзадача. Промпт агента не менялся: обе попытки имеют prompt_hash=a43676e5f579eaf5beefd2225838414d11b67dca90f8d999dc5284be802dbdf7.
Вторая попытка: модель предложила связать ворктри с:
- Migration to fully VSCode-supported builds&debugging, GID
1209808486380252— корневая работа. - Add VSCode build&debug support, GID
1219079700626622— конкретная подзадача. В переданном Asana-record еёparent_gid=1209808486380252; обе задачи в этом снимке открыты.
Смысл модельного вывода: локальные workspace/scripts относятся к подходу VS Code/Cursor через sourcekit-xcode-bsp, альтернативному переносу кода браузера в SPM. Это предложение о назначении работы, а не вывод о готовности build/debug-интеграции.
8.3. Основания и предложенные дизайны
Главная цитата второй попытки — из design:26c4932b-4105-4e0a-88ab-2393c7f4d27d, заметки work/projects/vscode-migration/xcode-build-server.md:
VS Code setup | worktree
vscode-xcode-bsp, branchalex/vscode-xcode-bsp—DuckDuckGo.code-workspace,scripts/vscode/(uncommitted)
Она совпадает с веткой и путями в Git-record. Другие три цитаты — branch":"alex/vscode-xcode-bsp" из worktree и названия двух предложенных Asana-задач из их task-records. Все цитаты проверены как точные подстроки сохранённого входа; input_hash обеих попыток пересчитан и совпал с БД.
| Предложенный design ID | Источник | Основание во втором ответе |
|---|---|---|
26c4932b-4105-4e0a-88ab-2393c7f4d27d |
work/projects/vscode-migration/xcode-build-server.md, project note |
Отдельная точная цитата о ворктри, ветке и файлах |
297efc6a-2b98-49f8-80c6-40246acc1094 |
work/projects/vscode-migration/tech-design-xcode-build-server.md, draft |
ID существует во входе; отдельной цитаты, обосновывающей эту связь, ответ не содержит |
55968497-9f3a-487f-8e08-608b1000da58 |
work/projects/vscode-migration/vscode-migration.md, project note |
ID существует во входе; отдельной цитаты, обосновывающей эту связь, ответ не содержит |
Следовательно, проверка наличия IDs и цитат пройдена, но все три смысловые связи с дизайнами нельзя объявлять автоматически подтверждёнными. Этот ответ также не доказывает draft_of между Obsidian-драфтом и опубликованным tech design Asana.
8.4. Статус валидации и ограничения
| Что проверено | Результат |
|---|---|
| JSON, разрешённые IDs, точность цитат и целостность входных пакетов | PASS: обе попытки; 7/7 цитат существуют, оба входных hash совпали |
| Retrieval нужной Asana-работы | FAIL в первом пакете; нужные root/subtask присутствуют после исправления во втором |
| Смысловая привязка BSP → Asana | Кандидат с точной опорой на Obsidian и структурной связью parent/subtask; требует принятия человеком |
| Каждая из трёх предложенных design-связей | Нужна отдельная проверка; две связи не имеют собственной цитаты в ответе |
| Реализация, работоспособность build/debug, approval, release, отмены и текущий статус проекта целиком | Этой проверкой не установлены |
| Независимый holdout и обобщение качества на другие работы | Не проводились; retrieval исправлялся на этом же случае |
В обоих результатах: accepted=false, requires_review=true, evidence_verified=true, stale=false на момент завершения попытки. evidence_verified означает проверку IDs и точных цитат, а не принятие смысловых утверждений. Автоматическая проверка разрешений отклонила принятие связи BSP без отдельного подтверждения; в основном дашборде work item остался в очереди резолва, предложение и обе попытки доступны в карточке.
Обе попытки вернули task_draft=null. Сохранённый позже в интерфейсе локальный черновик BSP-задачи подготовлен отдельно; он не является результатом этих модельных вызовов. Новых задач Asana эти попытки не создали.
Вывод для общей проверки анализатора: результат на этом случае существенно зависит от полноты retrieval. Корректные цитаты позволяют проверять ответ, но не подтверждают автоматически статус проекта, релиз, реализацию или каждую предложенную связь. Ошибки схемы v2 из раздела 3 остаются отдельными кейсами для валидации.
Обновление collector не повторяло model evaluation и не меняло frozen inputs, raw ответы или статус кандидатов в этой валидации.