From 5c8557805fc093b8139dc5d05fdc94500735335b Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Sat, 3 Oct 2026 21:40:24 +0600 Subject: [PATCH] [2026-10-03] eagle: personal/plans/balda-callee-prism-plan.md personal/plans/personal-os-operating-plan-2026-10-03.md personal/plans/personal-os-source-audit-2026-10-03.md personal/projects/personal-os/personal-os-status-2026-10.md --- personal/plans/balda-callee-prism-plan.md | 11 +++++++ .../personal-os-operating-plan-2026-10-03.md | 30 ++++++++++++++----- .../personal-os-source-audit-2026-10-03.md | 2 +- .../personal-os/personal-os-status-2026-10.md | 24 +++++++-------- 4 files changed, 44 insertions(+), 23 deletions(-) mode change 100755 => 100644 personal/plans/personal-os-source-audit-2026-10-03.md mode change 100755 => 100644 personal/projects/personal-os/personal-os-status-2026-10.md diff --git a/personal/plans/balda-callee-prism-plan.md b/personal/plans/balda-callee-prism-plan.md index 3e2bf47f..9435f508 100755 --- a/personal/plans/balda-callee-prism-plan.md +++ b/personal/plans/balda-callee-prism-plan.md @@ -1,3 +1,14 @@ +# Текущее состояние — Balda / Broker — 2026-10-03 21:40 Бишкек + +Статус: **приёмочный Docker-прогон выполнен, но общий release остаётся NO-GO до проверки автоматической публикации артефактов и сборки точного HEAD PR #12.** Записи ниже — история и могут содержать устаревшие статусы. + +- **Прогон:** `run-fbe2cb459fe2965554402aba1bd5fcd0` стартовал с `a030ce3`, завершился `succeeded`, `cleanup=done`, `quality.passed=true`. Worker создал `4dafb9d` для команды `hi`. В исходном Mattermost треде `jqor5w1qd3n5irizqd1jqued1a` Balda durable outbox хранит два разных отправленных сообщения с provider ID: запрос апрува (event 13) и финал (event 30). Повторы webhook шли с теми же dedupe keys; cleanup (event 31) не создал третий финальный пост. +- **Доставка кода:** после успеха Balda не вызвала `execution_publish_artifacts`. Коммит `4dafb9d` опубликован вручную через проверяющий API Broker в Git-зеркало и чистый локальный `/Users/admin/Developer/go-cli-test`. После публикации `go test ./...` прошёл, `go run . hi` напечатал `hello world!`, `add 2 3` — `5`. Автоматический вызов публикации из Balda остаётся непроверенным/неисправленным. +- **PR [#12](https://github.com/baldaworks/balda/pull/12):** открыт, не draft, HEAD `c5186037`, GitHub сообщает `mergeable_state=clean`; 8/8 checks успешны, ревью пока нет. Изменение маршрутизирует header-authenticated webhook по `chat_id`, даёт fallback для отсутствующей/неактивной сессии и receipt после реальной отправки. Активный бинарник Balda содержит `vcs.revision=d094943b` и `vcs.modified=true`, поэтому успешный live-прогон **не доказывает** работу точного HEAD PR #12. Код можно отдавать на ревью; перед merge/release нужна приёмка сборки точного HEAD. +- **Следующий контроль:** проверить публикацию артефактов без ручного API-вызова и повторить уведомления на образе из `c5186037`. PR и Broker-изменения не слиты автоматически. + +--- + # Live state — Broker/Balda workspace run — 2026-10-02 21:42 Бишкек Статус: **live Balda → Broker продвинут дальше: local-git checkout, Docker network, status webhook и writable workspace root исправлены; нужен повторный Mattermost `/execute` для end-to-end приёмки. Public stable ещё NO-GO.** diff --git a/personal/plans/personal-os-operating-plan-2026-10-03.md b/personal/plans/personal-os-operating-plan-2026-10-03.md index 5c29a422..065df6b7 100644 --- a/personal/plans/personal-os-operating-plan-2026-10-03.md +++ b/personal/plans/personal-os-operating-plan-2026-10-03.md @@ -2,15 +2,17 @@ namespace: personal tags: [personal-os, execution-plan, focus, work-life-balance] date: 2026-10-03 -status: proposed-for-approval +status: approved-for-implementation +approved_on: 2026-10-03 +implementation_status: not-started mission: "[[personal/projects/personal-os/personal-os-purpose]]" --- # Personal OS — аудит и план запуска вокруг фокуса -**Решение, которое предлагается согласовать:** сначала запустить контур управления самочувствием, фокусом и посильной нагрузкой Алекса. Его главная проблема сейчас — **рваный фокус**: одновременно идут его задачи и много агентных задач, которые неожиданно возвращаются к нему как ревью/решения. Технические источники дают факты, но само приложение на переднем плане не определяет рабочую тему. Кодинговые агенты — второй контур, ограниченный человеческим временем ревью и токенами. Этот документ заменяет прежнюю версию плана от 2026-10-03, где на первое место ошибочно поставлена техническая надёжность feed. +**Утверждённое решение от 2026-10-03:** сначала запустить контур управления самочувствием, фокусом и посильной нагрузкой Алекса. Его главная проблема сейчас — **рваный фокус**: одновременно идут его задачи и много агентных задач, которые неожиданно возвращаются к нему как ревью/решения. Технические источники дают факты, но само приложение на переднем плане не определяет рабочую тему. Кодинговые агенты — второй контур, ограниченный человеческим временем ревью и токенами. Этот документ заменяет прежнюю версию плана от 2026-10-03, где на первое место ошибочно поставлена техническая надёжность feed. -**Выполнение:** этот документ описывает правки, но не включает автозапуск, старый Executor или запись в Asana/GitHub. Миссия: [[personal/projects/personal-os/personal-os-purpose]]. Состояние до этого аудита: [[personal/projects/personal-os/personal-os-status-2026-10]]. +**Состояние выполнения:** план утверждён, реализация не начата. Алекс запускает работу в **следующей сессии**, не в сессии утверждения. Утверждение охватывает локальный код, read-only интеграции и новый тихий shadow-автозапуск после теста; не охватывает старый Executor, push-уведомления или запись в Asana/GitHub. Миссия: [[personal/projects/personal-os/personal-os-purpose]]. Исходное состояние: [[personal/projects/personal-os/personal-os-status-2026-10]]. ## 1. Системная задача и критерий пользы @@ -55,9 +57,9 @@ mission: "[[personal/projects/personal-os/personal-os-purpose]]" **Аудит источников:** [[personal/plans/personal-os-source-audit-2026-10-03]] фиксирует `есть / нет / свежесть / достоверность / что требуется от Алекса / точная правка / проверка` для Asana, GitHub, браузера, worktrees и Codex/Claude/Balda. Его выводы уточняют P0.1; аудит не включал автозапуск сборщиков. -### Первый исполняемый срез — запуск после согласования +### Первый исполняемый срез — утверждён, старт в следующей сессии -**Режим разработки:** одна активная coding-задача Personal OS за раз, один проверяемый результат на задачу, без unattended respawn; текущие Balda/Broker/Virfield уже занимают часть reviewer capacity. До достоверного учёта токенов не выдавать агенту бесконечный Ralph loop. Для первого среза предложены лимиты: одна попытка исправления после неудачной проверки, один пакет на ревью Алексу в день, целевой размер ревью до 20 минут. Фактические токены/стоимость логировать, отсутствие usage обозначать `unmetered`; численные token caps P1 согласуются отдельно. Параллельно coding-задаче можно вести read-only диагностику следующего адаптера без нового запроса к Алексу. +**Режим разработки:** одна активная coding-задача Personal OS за раз, один проверяемый результат на задачу, без unattended respawn; текущие Balda/Broker/Virfield уже занимают часть reviewer capacity. До достоверного учёта токенов не выдавать агенту бесконечный Ralph loop. Лимиты первого среза: одна попытка исправления после неудачной проверки, один пакет на ревью Алексу в день, целевой размер ревью до 20 минут. Фактические токены/стоимость логировать, отсутствие usage обозначать `unmetered`; численные token caps P1 согласуются отдельно. Параллельно coding-задаче можно вести read-only диагностику следующего адаптера без нового запроса к Алексу. 1. **Собрать достоверную очередь человеческих обязательств из Asana и GitHub.** В [`sync.js`](file:///Users/admin/Developer/personal-os/sync.js) и новом `work-demand.js` различить назначение, прямой запрос/вопрос, dependency, ревью и FYI с `source ID`, временем, ролью и confidence; комментарий без ответа сам по себе не равен обязательству. В [`gh-snapshot.js`](file:///Users/admin/Developer/personal-os/gh-snapshot.js) получить все мои open PR в рабочих репозиториях и полный список текущих review requests независимо от unread, а для PR — head SHA, CI failures, approvals/changes requested и unresolved review threads. Репозитории брать из явной конфигурации и подтверждённых локальных worktrees, не только из текущего hardcoded `duckduckgo/apple-browsers`. Хранить раздельные `observed_at/stale/error`; ошибка GitHub не превращается в «нет PR». **Приёмка:** на выбранных Asana examples ложный FYI не становится «ответь»; мои 19 текущих PR в `duckduckgo/apple-browsers` не теряются из-за лимита 20; проверка review queue совпадает с текущим API/UI и имеет ссылки. **Польза:** система впервые показывает, что от меня реально ждут, без общего backlog dump. 2. **Привязать текущую работу и агентные ожидания к объектам шага 1.** В [`aw-query.js`](file:///Users/admin/Developer/personal-os/aw-query.js) вычислять `Now` из свежего переднего окна и AFK; DDG URL восстанавливать через существующий watcher или явно показывать `unknown`. Новый `context-links.js` связывает точный Asana task ID/browser PR/repo-worktree-branch-head SHA; новый `session-observer.js` читает только metadata Codex/Claude, `agent-run-adapters.js` принимает подтверждённый `needs_human` или оставляет `unknown`. **Приёмка:** Asana→browser PR→worktree→agent run даёт одну человеческую тему и отдельное агентное время; личный проект/статья не становятся автоматически «плохим отвлечением»; старое событие Xcode/VS Code не побеждает текущее окно. **Польза:** меньше ручного поиска «где остановился» и ложных переключений. @@ -65,7 +67,19 @@ mission: "[[personal/projects/personal-os/personal-os-purpose]]" 4. **Калибровать без нагрузки на Алекса.** Новый локальный `scripts/run-focus-shadow.sh`/LaunchAgent запускает только read-only incremental Asana/GitHub refresh и локальную сборку timeline/решений без карточек и уведомлений; отдельные каналы помечают `fresh/stale/failed`, целевая свежесть важных обязательств в рабочее время — до 15 минут, с проверкой API затрат и задержек. Два рабочих дня shadow-сбора и 20 интервалов разных типов сравнить с ID/URL/состояниями источников; два дня воспроизвести focus-рекомендации без доставки. Исправлять по одному правилу и сохранять пример/до/после в `calibration_cases/changes`; у Алекса уточнять максимум один вопрос в день только если ответ меняет рекомендацию. **Приёмка:** ноль ложных high-confidence привязок и выдуманных `needs_human`, нет скрытого пропуска важного обязательства, неизвестное не маскируется. **Польза:** рекомендации опираются на проверенные факты, а не на названия окон. 5. **Включить ограниченный пользовательский пилот.** После отдельного согласования границы дня и канала показывать одну карточку на естественном переходе; обычные обновления копить молча. Пять рабочих дней измерять добровольную оценку самочувствия/рваного фокуса, неплановые обращения, минуты ревью, пропущенные обязательства и использование карточки. На «неверно/слишком много» исправлять следующее предложение; неиспользуемую карточку остановить. **Приёмка:** нет обычных прерываний во время focus/meeting и после границы дня; Алекс за ≤10 секунд корректирует план. **Польза:** система начинает помогать в моменте, не создавая новый поток сообщений. -**Граница согласования:** этот срез предполагает локальные read-only интеграции, файлы контекста, проверку на выборке и новый тихий автозапуск shadow-сборщика после теста одного прогона. Старый `com.personalos.readonly` и Executor не включать. Push-уведомления, запись в Asana/GitHub, Zoom-импорт и iPad-деплой требуют отдельного решения после работающего P0 контракта. Участие Алекса до пилота — согласовать срез; к пилоту — границу рабочего дня и канал короткой карточки. +**Утверждённая граница:** локальные read-only интеграции, файлы контекста, проверка на выборке и новый тихий автозапуск shadow-сборщика после теста одного прогона. Старый `com.personalos.readonly` и Executor остаются выключенными. Push-уведомления, запись в Asana/GitHub, Zoom-импорт и iPad-деплой требуют отдельного решения после работающего P0 контракта. Участие Алекса до пилота больше не требуется; к пилоту нужны граница рабочего дня и канал короткой карточки. + +### Передача в следующую сессию — исполняемые пакеты + +**Стартовая инструкция:** «Выполни утверждённый первый срез Personal OS из этого документа. Начни с пакета A ниже; учитывай [[personal/plans/personal-os-source-audit-2026-10-03]] и миссию. Код и тихий локальный сбор разрешены в указанной границе. Не превращай это в новый раунд общего планирования. Дай один короткий отчёт о результате и проверках; не запрашивай ревью чаще одного раза в день». Разработка стартует в новой сессии; запись этого документа не запускает агентов или сервисы. + +1. **Пакет A — Asana obligations.** Проверить текущее `git status` и схему без изменения существующих чужих файлов; сохранить локальные изменения. Из [`asana.js`](file:///Users/admin/Developer/personal-os/asana.js), [`sync.js`](file:///Users/admin/Developer/personal-os/sync.js) и `stories` сделать `work-demand.js` + аддитивную миграцию `migrations/003_focus_core.sql`: `role`, `requested_action`, `requester`, `evidence_gid`, `observed_at`, `confidence`, `unknown`. Отделить прямой вопрос/назначение/ревью от FYI и комментария без ответа. **Готово, когда:** на проверенной выборке прямой запрос показан со ссылкой, FYI не назван обязанностью, ошибка источника не выглядит как пустой список; есть тесты на эти три случая и краткий отчёт о реальных примерах без копирования чувствительного текста. +2. **Пакет B — GitHub obligations.** После пакета A обновить [`gh-snapshot.js`](file:///Users/admin/Developer/personal-os/gh-snapshot.js): текущие мои PR и review assignments по подтверждённым рабочим репозиториям, CI/checks, approvals/changes requested, unresolved threads, head SHA, timestamps/errors по каждому источнику. `unread notification` оставить подсказкой, не источником истины для review queue. **Готово, когда:** число моих PR и текущих запросов на ревью совпадает с прямым GitHub API на момент проверки; сценарии failed CI, новый push после approval и resolved/unresolved comment дают правильное действие или `unknown`. +3. **Пакет C — наблюдаемый контекст.** После пакета B исправить [`aw-query.js`](file:///Users/admin/Developer/personal-os/aw-query.js) и добавить `context-links.js`/`session-observer.js`/`agent-run-adapters.js`: переднее окно+AFK, точный URL/ID, локальные worktrees, metadata сессий и только подтверждённые `needs_human`. Проверить DDG watcher; при отсутствии свежего URL сохранять `browser_url_unknown`. **Готово, когда:** Asana→PR→worktree→агент соединены доказанной связью, человеческое и агентное время раздельны, старый Xcode/VS Code bucket не называется текущим фокусом. +4. **Пакет D — посильное решение.** После пакета C добавить `capacity-model.js`, `day-coordinator.js` и локальные `focus.json`/`focus.md` по запросу: одна основная тема, до трёх действий, причины переносов, встреча/перерыв/граница дня/reviewer slot; отсутствие энергии и календаря остаётся `unknown`. **Готово, когда:** обычный и перегруженный fixture-дни дают выполнимые планы, FYI/готовый agent PR не прерывают фокус, карточка занимает один экран. +5. **Пакет E — тихая проверка и пилот.** После пакета D проверить один read-only прогон, затем включить только новый `run-focus-shadow` для двух рабочих дней без уведомлений, проверить 20 интервалов и зафиксировать исправления. До пользовательского пятидневного пилота получить от Алекса границу рабочего дня и канал карточки; включить доставку только после этого. **Готово, когда:** источник/связь/роль/решение проверены по ссылкам, ноль ложных уверенных `needs_human`, измерены человеческие прерывания и reviewer minutes. + +**Общие правила приёмки пакетов:** каждый пакет завершается работающим кодом, тестом фактического риска, коротким diff/артефактом и указанием оставшихся `unknown`; следующий пакет может готовиться автономно, но новые результаты к ревью Алексу не отправлять сверх одного пакета в день. Даты и числа из аудита — снимок 3 октября: в новой сессии проверить свежесть Asana/GitHub/AW, а не считать 19 PR постоянной величиной. ## 2. Что действительно есть 2026-10-03 @@ -158,10 +172,10 @@ mission: "[[personal/projects/personal-os/personal-os-purpose]]" ## 5. Последовательность, зависимости, участие Алекса -1. **Сейчас — утверждена миссия, план предложен.** Отдельная read-only задача аудирует, какие источники реально доступны и чего не хватает Asana/GitHub/browser/worktree/agent adapters. По её результату уточнить конкретные правки P0.1 и показать Алексу изменения до включения сборщиков. Границы рабочего дня, начальные лимиты reviewer/tokens и канал карточки согласовать перед пилотом; добровольная энергия/настроение не обязательны. +1. **Сейчас — миссия и первый срез утверждены, реализация не начата.** Аудит источников записан отдельно; следующая сессия стартует с пакета A выше. До пятидневного пользовательского пилота уточнить границу рабочего дня и канал карточки; добровольная энергия/настроение не обязательны. 2. **P0.1 — блокер фактов:** после аудита собрать тихую временную линию человека/агентов/рабочих тем, проверить привязки к Asana/PR/meeting/worktree и честно показать неизвестные интервалы. Проверить 20 интервалов и два дня без новых сообщений Алексу. 3. **P0.2 — затем блокер решений:** выбрать посильную работу из Asana, PR, TD, Ship Review, встреч, team growth и агентных ревью по роли, пользе, сроку, энергии и доступному времени; испытать перегруженный день до включения schedule. 4. **P0.3 → P0.4:** показать один короткий живой focus state, провести 5 рабочих дней измеряемого пилота с возможностью исправить перегрузку. Только после этого решать о регулярной доставке. 5. **P1 и параллельные ветки:** включить ограниченный coding loop с учётом review/tokens; импортировать Zoom; отдать тот же focus state на iPad. Balda/Broker/Virfield не дублировать. -**Необходимое участие Алекса в пилоте:** одно согласование границ; затем по желанию один короткий сигнал «полезно/неверно/слишком много» и ручная смена энергии/фокуса, когда захочется. Система не требует ежедневного ведения журнала. Внешние записи и старый автономный Executor этим планом не разрешены. +**Необходимое участие Алекса в пилоте:** перед доставкой карточки — граница рабочего дня и канал; затем по желанию один короткий сигнал «полезно/неверно/слишком много» и ручная смена энергии/фокуса, когда захочется. Система не требует ежедневного ведения журнала. Внешние записи и старый автономный Executor этим планом не разрешены. diff --git a/personal/plans/personal-os-source-audit-2026-10-03.md b/personal/plans/personal-os-source-audit-2026-10-03.md old mode 100755 new mode 100644 index 784ded5e..8653c377 --- a/personal/plans/personal-os-source-audit-2026-10-03.md +++ b/personal/plans/personal-os-source-audit-2026-10-03.md @@ -27,4 +27,4 @@ plan: "[[personal/plans/personal-os-operating-plan-2026-10-03]]" **Один реальный рабочий поток:** Asana task с явным запросом к Алексу → связанный browser PR → локальный worktree → Codex/Claude run → итог, ожидающий его ревью. Система показывает текущую тему, источник запроса, свежесть, confidence и отдельно время человека/агента. Вторая ветка: статья или личный проект остаётся `unknown/personal`, пока нет доказательства намерения. Приёмка — 20 вручную проверенных интервалов из двух дней: ни одной ложной high-confidence связи и ни одного выдуманного `needs_human`. -**Следующий шаг:** согласовать конкретные правки P0.1 по этому аудиту, затем вести тихий baseline без новых уведомлений. Код, сервисы и внешние системы этим аудитом не изменены. +**Следующий шаг:** утверждённый 3 октября первый срез и исполняемые пакеты A–E находятся в [[personal/plans/personal-os-operating-plan-2026-10-03]]. Реализация начинается в следующей сессии с пакета A; этот аудит не изменял код, сервисы и внешние системы. diff --git a/personal/projects/personal-os/personal-os-status-2026-10.md b/personal/projects/personal-os/personal-os-status-2026-10.md old mode 100755 new mode 100644 index ce20eae5..4c119fc7 --- a/personal/projects/personal-os/personal-os-status-2026-10.md +++ b/personal/projects/personal-os/personal-os-status-2026-10.md @@ -15,13 +15,14 @@ confidence: 1 - **Personal OS (рабочий контур вокруг Asana) — ВЫКЛЮЧЕН.** Остановлен после инцидента с автономным Executor (апр–май 2026, см. [[personal/projects/personal-os/executor-security-analysis]]). - **Требуется перепланирование с нуля** — старая архитектура (Hermes/Eagle + cron + executor) не возобновляется как есть. + Новый план утверждён 2026-10-03, реализация ещё не начата — старая архитектура (Hermes/Eagle + cron + executor) не возобновляется как есть. - **Миссия и приоритет теперь уточнены Алексом:** [[personal/projects/personal-os/personal-os-purpose]] — самочувствие, фокус, баланс, затем работа и карьера. Текущий главный симптом — «рваный фокус» из-за параллельной работы и контроля агентов. Первые два блокера: точная временная линия человеческой/агентной работы с привязкой к теме; затем анализ нужной работы с учётом - энергии, встреч и reviewer load. Конкретный аудит и предложенная очередь: - [[personal/plans/personal-os-operating-plan-2026-10-03]]. Это план для согласования, не включённая система. + энергии, встреч и reviewer load. Утверждённый план с исполняемыми пакетами A–E: + [[personal/plans/personal-os-operating-plan-2026-10-03]]. Аудит источников: + [[personal/plans/personal-os-source-audit-2026-10-03]]. Старт — в следующей сессии с пакета A; код и сервисы пока не запущены. - Агентная инфраструктура в целом живёт отдельно (Balda / Callee / Prism на Mac) — это не Personal OS, а общий агентный стек; на нём может быть построена будущая версия. @@ -50,21 +51,16 @@ confidence: 1 - **Virfield** (VM-лизы для UI-тестов): кандидат v2, до production не готов ([[personal/projects/virfield]]). - **Obsidian vault** `~/obsidian/` — жив, синхронизация через git/NAS + Syncthing; MCP — `mcpvault`. -## Что нужно для перезапуска (вход в перепланирование) +## Что нужно для перезапуска (утверждённый порядок) -> 📋 **Актуальный предложенный план:** [[personal/plans/personal-os-operating-plan-2026-10-03]]. +> 📋 **Актуальный утверждённый план:** [[personal/plans/personal-os-operating-plan-2026-10-03]]. > Прежний [[personal/plans/personal-os-v2-plan]] — технический черновик до уточнения миссии; > его порядок (iPad/иконки/порт) не задаёт приоритет для запуска Personal OS. -1. Пересобрать цели: какие из исходных болей (комментарии без ответа, приоритеты дня, - Asana vs реальность, карьерные сигналы) актуальны сейчас — см. [[personal/projects/personal-os/personal-os-purpose]]. -2. Учесть уроки — [[personal/projects/personal-os/personal-os-failed-approaches]]. -3. Решить хост и транспорт (Mac + Mattermost — де-факто текущий выбор) и модель провайдера - (подписочный OAuth через прокси — запрещён, см. failed-approaches). -4. Data-слой (sync.js → Postgres → pre-rendered markdown) — единственная часть, которая - работала стабильно; кандидат на переиспользование. -5. Executor — только после закрытия контролей из security-analysis (изоляция, никаких - авто-записей в Asana, никаких рабочих данных в чат вне контура). +1. В следующей сессии начать с пакета A в утверждённом плане: Asana obligations с ролями, явным запросом и evidence. +2. Затем пакеты B–D: GitHub obligations, рабочая тема/агентные ожидания и посильный focus state. +3. Пакет E: тихая проверка на двух днях и 20 интервалах; после согласования границы рабочего дня и канала — пятидневный пилот. +4. Старый Executor остаётся выключенным; его возвращение зависит от контролей в [[personal/projects/personal-os/executor-security-analysis]]. ## Связанные