From 3b1de27f4bbd28c77eede3de6496c133c54168ca Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Fri, 13 Nov 2026 21:36:42 +0600 Subject: [PATCH] [2026-11-13] eagle: personal/projects/personal-os/personal-os-action-plan-2026-10-05.md personal/projects/personal-os/personal-os-fixes-2026-11-13.md personal/projects/personal-os/personal-os-production-acceptance.md personal/projects/personal-os/personal-os-repeat-audit-2026-11-13.md --- .../personal-os-action-plan-2026-10-05.md | 2 +- .../personal-os-fixes-2026-11-13.md | 21 ++++++ .../personal-os-production-acceptance.md | 38 +++++++++-- .../personal-os-repeat-audit-2026-11-13.md | 67 +++++++++++++++---- 4 files changed, 107 insertions(+), 21 deletions(-) diff --git a/personal/projects/personal-os/personal-os-action-plan-2026-10-05.md b/personal/projects/personal-os/personal-os-action-plan-2026-10-05.md index 10809c98..244dcb7c 100644 --- a/personal/projects/personal-os/personal-os-action-plan-2026-10-05.md +++ b/personal/projects/personal-os/personal-os-action-plan-2026-10-05.md @@ -1,6 +1,6 @@ # Personal OS — план действий E1–E5 -Текущее исполнение A01–A17: [журнал исправлений и оставшаяся приёмка](personal-os-fixes-2026-11-13.md), [повторный независимый аудит](personal-os-repeat-audit-2026-11-13.md). E4/E5 182/181 опубликованы; live job `01a1d4fd-69e7-e2f1-6101-64557020c44d` проверяется автоматически. Полная приёмка пока не подтверждена. +Текущее исполнение A01–A17: [журнал исправлений и оставшаяся приёмка](personal-os-fixes-2026-11-13.md), [повторный независимый аудит](personal-os-repeat-audit-2026-11-13.md). E4/E5 182/184 опубликованы; последний job `01a1d560-18e7-a2f1-c56f-e6658578b44d` завершён, результат ограничен устаревшим входом и закрытым рабочим днём. Выполняется устранение обнаруженного архитектурного отклонения: новые бизнес-правила переносятся в Python, оркестрация — в Windmill с сохранением состояний. Полная приёмка пока не подтверждена. ## Уточнение плана после независимого аудита 13 ноября diff --git a/personal/projects/personal-os/personal-os-fixes-2026-11-13.md b/personal/projects/personal-os/personal-os-fixes-2026-11-13.md index b77c263b..1b78b30a 100644 --- a/personal/projects/personal-os/personal-os-fixes-2026-11-13.md +++ b/personal/projects/personal-os/personal-os-fixes-2026-11-13.md @@ -2,6 +2,17 @@ Состояние: **исполнение продолжается; полная приёмка пока не подтверждена**. Основание — [аудит 17 проблем](personal-os-implementation-audit-2026-11-13.md). Этот журнал описывает исправления после исходного аудита; старые проверки сохранены как история. +## Текущий контрольный срез — после E5 184 + +- E5 183 `01a1d540-9d02-97e0-627a-7804a314bb20` завершён с полным refresh_sources=true за1201,6с. Признак success не стал зачётом: фактический результат ошибочно отклонил10 подтверждённых запросов. Причина — вложенные сырые комментарии перезаписывали типизированные доказательства в индексе. Исправлены приоритет явных коллекций, независимость от порядка и отклонение конфликтующих привязок, включая waiting. +- Проверенный replay в Windmill: ranked, rejected=[], planning_errors=[]. Опубликован E5 **184**,14:46:21Z. Настоящий повтор без packet/proposal `01a1d560-18e7-a2f1-c56f-e6658578b44d` завершён за34,9с: ranked, rejected=[], planning_errors=[]. Повтор использовал refresh_sources=false после полного прогона183. В нём Asana/GitHub уже устарели в локальном shadow, поэтому действия удержаны; этот запуск не закрывает проверку полноценного дневного плана. Обсуждения глобально свежие, но старые результаты метода удержаны до пересборки. После19:00 личный бюджет равен0. +- Полный набор до следующих исправлений независимого аудита: **272 Node +106 Python, PASS, ноль пропусков**. Артефакты `/private/tmp/personalos-node-full-final.log`, `/private/tmp/personalos-python-full-final.log`. Повторный аудит затем воспроизвёл ложный зачёт дня при непринятом плане, отсутствие повторной проверки часов/версий Asana/GitHub при допуске плана и лишний grace для уведомлений. Эти случаи исправляются и проходят отдельное перекрёстное ревью. +- Источники обсуждений перечитывает отдельный лёгкий observer каждые300с. Настоящий автоматический запуск подтверждён exit0. Receipt содержит точную версию пакета и метода; неизменный подтверждённый результат обновляется только после фактического перечитывания. Старый метод не становится новым. Текущий publisher начат14:36:34Z, PID28529, exec32742; не создавать дубликат. Очередь общей модели сериализована;65K-token запрос нельзя приписывать publisher без корреляции. +- **Обязательный архитектурный пробел:** план18.10 требует Windmill и Python/SQL; отмены не найдено. Новые Node businesshandlers/оркестрация launchd не удовлетворяют этому требованию. Выполняется перенос доменных правил в Python при сохранении SQLite, IDs, history, решений и leases; существующий Node UI/API остаётся транспортом. Переключение расписаний — только после проверки Python-паритета и реального Windmill preview. До переключения старые расписания сохраняются, чтобы не создавать разрыв. +- Python Clarify:19 проверок, сравнение рабочего источника166 записей полностью совпало с прежним алгоритмом. Python GTD:21 проверка прошла. Эти проверки не заменяют сквозную приёмку после смены оркестрации. + +Остаётся выполнить перенос новых обработчиков/оркестрации, проверить свежие Next TP и обязательства безAsana в опубликованном процессе, повторить полный набор и независимый аудит, сверить Outlook после разблокировки, затем принять5 настоящих рабочих дней. Автоматическое продолжение `personal-os` остаётся активным; зачёт пилота0/5 не изменён. + ## Реализованные изменения - A01–A03, A12, A16: входящие адресные обязательства без предварительного ответа; атомарные действия разных типов; единый жизненный цикл accept/reject/complete/cancel/wait/defer/reopen/optional с revision и историей. Ручные решения не переписываются запоздавшей моделью. Проверка завершения требует точного артефакта и автора; неоднозначное закрытие остаётся на проверке. Связь с Asana необязательна. Для Next TP требуется подтверждённое авторство, назначенный исполнитель не считается автором комментария. @@ -76,3 +87,13 @@ My Tasks, Weekly Review и Work History реально загрузились в - Исправлены исходная давность Asana, гонка API→SQL, проверки всей цепочки родителей, устаревание модельного решения на новом дне, сохранение ручных решений и возврат отложенного вопроса к сверке. Обработка сначала выбирает1‑Must/Top Priority и сроки среди ещё не рассмотренных работ, затем продвигается дальше; один сбой не задерживает остальные. - Новые локальные ссылки уведомлений открывают именно результат, уточнение или обязательство с наступившей сверкой. Нагрузка таких сверок учитывается до новой работы. Схема payload проверена настоящим Swift decoder без отправки лишнего уведомления; сериализация исключает одновременную повторную отправку. - Независимый аудит воспроизвёл ещё один A12 на копии рабочего snapshot:4 карточкиupdate_design сID4bb64e2ddf1bd1e1dfc9a715 иразнымиrevision, ручное решение возвращает404ambiguous. Устраняется в каноническом слое без изменения рабочих источников и без подмены решений пользователя. + +## Публикация E5 183 + +13 ноября14:05:58Z опубликован E5 version_id183. Перед публикацией выполнен реальный Windmill preview локальногоflow на сохранённом рабочем снимке: priority_status=ranked, rejected0, effective_budget0 после19:00, pending_review_status=unknown явно отражает непройденное обновление источников. Это replay для проверки схемы, не финальный живой прогон. + +Dry-run и push ограничены `f/attend/attention_loop_e5__flow/**`, включены keep-deleted и skip всех ресурсов/секретов/прочих сущностей. Фактический get опубликованногоflow подтвердил побайтное совпадениеread_context/propose_actions/day_constraints. Зависимости осталисьpsycopg3.3.6, psycopg-binary3.3.6, typing-extensions4.16.0. + +Следующий обязательный шаг: после завершения A12 и перезапуска только локальногоUI/API — опубликованный E5 безpacket/proposal/profile/policy, `refresh_sources=true`. Состояние самостоятельной очереди обсуждений после настоящего нового сбора также должно быть проверено; завершение старого анализа не засчитывается как свежесть. + +Финальный живой E5 183 запущен: **01a1d540-9d02-97e0-627a-7804a314bb20**; вход `/private/tmp/personalos-e5-final-live-input.json`, `refresh_sources=true`, без packet/proposal/profile/policy. CLI session59853, журнал `/private/tmp/personalos-e5-final-live-run.log`. До завершения повтор не запускать. diff --git a/personal/projects/personal-os/personal-os-production-acceptance.md b/personal/projects/personal-os/personal-os-production-acceptance.md index b4514838..5ccfbef1 100644 --- a/personal/projects/personal-os/personal-os-production-acceptance.md +++ b/personal/projects/personal-os/personal-os-production-acceptance.md @@ -1,16 +1,42 @@ # Personal OS — аудит и приёмка -## Исправления после аудита A01–A17 +## Текущее состояние 13 ноября 2026 -Текущее исполнение: [журнал исправлений](personal-os-fixes-2026-11-13.md), [повторный независимый аудит](personal-os-repeat-audit-2026-11-13.md). E4/E5 опубликованы как версии **182/181**; зависимости сохранены: psycopg/psycopg-binary 3.3.6, typing-extensions 4.16.0. Живой E5 без переданных packet/proposal/profile/policy запущен: `01a1d4fd-69e7-e2f1-6101-64557020c44d`, вход `/private/tmp/personalos-e5-live-input-20261113.json`. В этом прогоне отключено повторное обновление источников: он читает свежий текущий API и SQL. Это проверяет самостоятельное получение действий, но не новый запуск всех сборщиков. +**Полная приёмка открыта.** Факты, дефекты и проверки: [журнал исправлений](personal-os-fixes-2026-11-13.md), [повторный независимый аудит](personal-os-repeat-audit-2026-11-13.md), [исходные17 находок](personal-os-implementation-audit-2026-11-13.md). -API `/api/planning-sources` ответил HTTP 200: 17 действий обсуждений, 199 сигналов Asana, 10 GitHub review requests; Asana/GitHub/discussion свежие, профиль целей verified. Локальный пересчёт дал ranked, пять целей и сохранил Next TP и review PR #8095 в backlog с причиной capacity: до границы 19:00 уже не оставалось достаточного окна. My Tasks, Weekly Review, Work History фактически загрузились в отдельном Chrome без JavaScript ошибок; интерактивные ручные решения и визуальная доставка уведомлений этим не проверены. +Опубликованы E4 version182 и E5 version184. Исправленная оркестрация находится в локальном E5 и проверяется до публикации; старые расписания ещё не переключены. Требование Windmill/Python/SQL не отменялось: новые доменные правила перенесены в Python, Node UI/API сохраняет транспорт к существующим источникам. История SQLite, IDs обязательств и решения пользователя сохраняются. -Полный Node прогон с включёнными DB-проверками: 221 passed, 9 skipped; оставшиеся девять DB-проверок выполнены отдельным прогоном (13 passed вместе с четырьмя повторяющимися unit-тестами). Полный Python: 69 passed. Дополнительные исправления продолжают проверяться; дата и счётчик полной приёмки не повышены. +- Полный набор после основного переноса: **281 Node +130 Python, PASS, ноль пропусков**. После этого добавлены регрессии завершённой связанной задачи, рабочего окна и публикации; финальный набор после всех правок требуется повторить. +- Реальный production-preview **01a1d57f-5a2a-3854-bf18-93909a5a9166** завершён с success=true за76,4с. Выполнены живое чтение источников, E4/E5, сохранение latest-plan, GTD, подготовка, наблюдение и уведомления. Сохранённый план имеет execution_owner=windmill и тот же runID. Asana, GitHub и глобальная коллекция обсуждений свежие. Это настоящий новый production-путь, но ещё локальный preview до замены опубликованной версии. +- Прогон состоялся в21:22 Бишкек, после подтверждённой границы19:00: личный бюджет0, рабочих слотов0, ожидается одна ручная сверка5мин. Подготовка не создала нового черновика, поэтому второй проход этим прогоном не проверен. План не выдаётся за принятый рабочий день. +- В результате воспроизведена потеря трёх самостоятельных обязательств Zoom из-за завершённого родительского таска. Исправление сохраняет их; повтор на том же входе дал rejected0. Неизвестная оценка времени остаётся неизвестной. Дорабатывается явный путь уточнения таких действий и уведомления о нём; придуманная оценка не подставляется. +- Обсуждения обрабатываются текущим методом по частям. Оба связанных Next Top Priority уже повторно подтверждены; старые/изменённые результаты сохраняются с причиной удержания. Полнота всех пакетов не объявляется по глобально свежему времени коллекции. Лёгкий observer сверяет точный source revision без повторного вывода модели. +- Zoom: Owned84 на5страницах, Shared0, Starred0;29 импортов в проверяемом периоде сопоставлены поSHA256, gaps=[]. UI MyTasks/WeeklyReview/WorkHistory проверен headless Chrome; доставка macOS уведомления подтверждена receipt. Эти проверки не означают, что пользователь просмотрел баннер. +- Outlook free/busy ещё не принят на живом ответе: Mac заблокирован. Apple Calendar/EventKit не используется. Пилот — **0/5 настоящих принятых дней**. Субъективные решения пользователя не подменяются автоматическими. -Автоматическое продолжение в текущем чате включено: `personal-os`, каждые 15 минут. Mac остаётся заблокирован; Outlook и визуальная доставка требуют живой проверки после разблокировки. Пилот — 0 из 5 принятых реальных дней. +Автоматизация **personal-os** активна каждые15мин в этом чате, читает актуальный журнал, проверяет реальные jobs, исправляет дефекты и обновляет Obsidian. Завершение текущих анализов, публикация, переключение расписаний и сквозная приёмка ещё входят в работу; только ожиданием пяти дней состояние не объясняется. -Ниже — история проверок. Старые сведения о заглушках, пропущенных тестах и недостающих полях не описывают текущее дерево. +## Процесс и границы исполнения + +1. **Capture.** Существующие read-only сборщики Asana/GitHub, Mattermost и Zoom сохраняют источники, область обхода и часы последнего настоящего чтения. ActivityWatch/Git сохраняют исторические интервалы и привязки; активность не закрывает обязательство. Outlook читается только как занятые интервалы встреч. Неизвестный или частичный источник явно ограничивает план. +2. **Обсуждения.** Node адаптер читает прежние архивы/API; `discussion_packets.py` собирает реплики, автора, дату, связи и проверки артефактов. `discussion_actions.py` извлекает типизированные события по точной цитате, `discussion-state.py` применяет жизненный цикл с историей и человеческим приоритетом. Связь с Asana необязательна. Завершение связанной задачи само по себе не закрывает отдельное обещание. Разные обещания не объединяются по частичному совпадению текста. +3. **Свежесть без повторной модели.** `observe-discussion-sources.py` перечитывает источники и сверяет полную версию пакета и метода. Совпадение обновляет receipt фактического чтения. Изменённый/исчезнувший вход или прежний метод удерживает действие до нового анализа. Публикация старого процесса не может присвоить себе новую версию метода. +4. **Clarify.** Python SQLite-очередь сохраняет workID, ревизию источника, lease, попытки, результаты и пользовательское решение. Windmill разделяет observe→claim→infer→finish. Сначала выбираются ещё не обработанные1‑Must/Top Priority и сроки, затем остальные работы; повтор не задерживает всю очередь. Генератор и verifier используют ограниченное адресное чтение источников. Доступны все наблюдённые комментарии до80+1; переполнение/неподтверждённый родитель удерживает действие. Сбой инфраструктуры имеет ограниченные повторы, постоянная неоднозначность — ручную сверку. Ручной перенос/отказ не стирается новым чтением. +5. **Приоритет E4.** `acceptance-plan-input.py` объединяет обязательства, адресные запросы, назначения, GitHub, цели, роли, AoR и Career. `priority_input.py` проверяет цепочки целей и передаёт в `rank.py`. Классы: обязательный срок сегодня/раньше →SAM Major Incident →1‑Must →SAM Minor Incident →прочая просрочка →остальные. Далее учитываются дата, подтверждённый handoff NextTP, разблокирование зависимостей, влияние на цели и известная DDG-оценка, ответственность, AoR и время участия. Неизвестная важность остаётся неизвестной. DDG SAM применяется только к согласованным NativeApps bugs/incidents; недельные доли60/20/15/5 не подменяют важность. +6. **План E5.** После сборщиков фиксируются контекст и политика. Windmill выполняет E4 и `day_constraints.py`: энергия/облегчение,90мин по будням до19:00 Бишкек, резерв, ревью, зависимости, непрерывные окна, WIP и недельные остатки при наличии подтверждения. Незнакомая длительность не превращается в произвольный короткий шаг. Непоместившиеся, ожидания, удержанные и отклонённые действия сохраняются с ID и причиной. +7. **Публикация.** Python host transport допускает только фиксированные операции. Результат сверяется с точным зафиксированным входом, политикой и ограничениями; перед записью повторно проверяются состояние дня, ёмкость, часы, ревизии источников/действий/ревью и пригодность временных слотов. UUID, lease и квитанции защищают от параллельной записи/повтора. UI-пересчёт отправляет Windmill job через сохраняемый dispatcher, а не запускает отдельный локальный планировщик. +8. **Prepare и Engage.** Локальные черновики NextTP/recap проходят фиксированный обработчик и получают собственное ревью. Если подготовка изменила очередь ревью, Windmill выполняет один дополнительный расчёт с новым контекстом. После окончательного плана обновляются GTD, наблюдение и разрешённые уведомления. Отправка в Asana/Mattermost/Outlook не производится этим контуром. Задержанный Clarify повторно проверяет рабочее окно; завершение уже начатого анализа разрешено после19:00. +9. **Reflect и приёмка.** Weekly Review показывает Inbox, NextActions, WaitingFor, Someday, все проекты без подтверждённого шага, цели и ёмкость. Одна смена времени наблюдения не отменяет человеческий обзор; смысловое изменение отменяет прежнюю ревизию. Незавершённые источники не дают принять обзор как полный. Пилот требует настоящих наблюдений, финальной сверки, объективной нагрузки и явного отклика о самочувствии/посильности/фокусе. Пропущенный день не засчитывается. + +## Что ещё требуется до зачёта + +- Завершить текущую обработку обсуждений и проверить все сохраняемые обязательства, включая самостоятельные действия безAsana; уточнения должны иметь путь решения и уведомление. +- Пройти финальный опубликованный E4/E5 после всех регрессий и фактический второй проход после черновика; переключить только заменяемые расписания, проверить отсутствие двух владельцев исполнения. +- Подтвердить выделенную очередь исполнения для планирования, чтобы долгие сборщики/модель не занимали все исполнители. Старые контейнеры и чужие задания не останавливаются. +- Повторить полный тестовый набор, независимый аудит и фактический UI после переключения. Проверить Outlook после разблокировки. +- Пройти пять настоящих рабочих дней и оценить своевременность действий, закрытие открытых циклов, баланс направлений, цену обслуживания системы и субъективную посильность. + +Ниже сохранена история. Старые сведения о заглушках, отдельном локальном planner, пропущенных тестах и прежних часах не описывают текущий код или подтверждённый production-preview. ## Независимый аудит реализации 13 ноября после проверки E5 diff --git a/personal/projects/personal-os/personal-os-repeat-audit-2026-11-13.md b/personal/projects/personal-os/personal-os-repeat-audit-2026-11-13.md index 70ef517f..acff6630 100644 --- a/personal/projects/personal-os/personal-os-repeat-audit-2026-11-13.md +++ b/personal/projects/personal-os/personal-os-repeat-audit-2026-11-13.md @@ -2,42 +2,79 @@ Срез от 13 ноября 2026 года, Asia/Bishkek. Номера соответствуют [первичному аудиту](personal-os-implementation-audit-2026-11-13.md). -Устранены воспроизведённые дефекты потери известных типов действий, смешения разных обязательств, перезаписи решений пользователя, размещения задач поверх разрывов между встречами и публикации устаревшего результата claims. Полная приёмка требует штатных прогонов опубликованных версий, измеренного охвата источников и проверки на рабочих днях. +## Текущий независимый вердикт + +**Полная приёмка открыта.** Новый маршрут Windmill записал рабочий снимок плана в production-preview на реальных источниках после закрытия дня. Штатный запуск опубликованной версии по расписанию, размещение действий в открытом дне, второй проход на реальном черновике, полнота разбора обязательств, Outlook и пилот **0 из 5** остаются открытыми. + +- **Рабочий E5.** Production-preview `01a1d57f-5a2a-3854-bf18-93909a5a9166` завершился в 21:22 по Бишкеку. По квитанциям выполнены sync, snapshot, attention, фиксация входа, запись плана, GTD, подготовка, наблюдение, проверка уведомлений и завершение. `latest-plan.json`, `plan.json` и `published-plan.json` побайтово совпали и содержат этот UUID и `execution_owner=windmill`. Во входе было 217 записей задач, 213 назначений и сигналов Asana, 36 действий обсуждений и 8 запросов GitHub-ревью. Ревизии обсуждений, уточнений и очереди проверок совпали с закреплённым входом. Свежесть Asana и GitHub подтверждена. Календарь частичный. После 19:00 план выделил 0 минут и 0 слотов, 5 минут одного Clarify-ревью остались в перегрузке. В итоговом снимке видны 35 действий сверх бюджета, 233 удержанных, 13 ожиданий и 2 конфликта. Опубликованный ранее v184 и два диагностических preview также завершились с исчерпанным бюджетом. +- **Архитектура.** В репозитории E5 управляет порядком шагов. Python обрабатывает канонический вход, правила допуска и версии источников, очередь обсуждений, бюджет проверок, Clarify, Weekly Review и проекцию принятых проектных утверждений. Существующие Node-модули передают запросы и читают источники. Пересчёт из UI направляется в Windmill с закреплённым UUID; запросы во время активного цикла сохраняются для следующего запуска. Рабочая запись подтверждена для запуска из preview. Опубликованная версия без режима `production` блокируется диспетчером. Публикация новой конфигурации, фактический запуск пересчёта из UI и переключение прежних LaunchAgents требуют проверки. [E5](../windmill/workspace/f/attend/attention_loop_e5__flow/flow.yaml) · [Порт входа](../scripts/acceptance-plan-input.py) · [Диспетчер](../scripts/windmill-dispatch.py) +- **Два прохода E5.** Первый фиксирует снимок, E4 и ограничения дня. Хост сверяет фактический результат с этим входом и текущими ревизиями. При изменении очереди после подготовки черновика второй проход пересобирает вход и план до наблюдения и уведомления. В production-preview квитанция подготовки показала `changed=false`, второй проход не запускался. Квитанция уведомлений подтверждает вызов проверки доставки. Изолированные тесты покрывают два снимка, повтор, отмену, совпадение входа и отклонение устаревшего состояния. Найденный допуск прошедшего интервала исправлен: повтор исходного сценария удерживает план перед записью. [Хост](../scripts/planning-runtime.py) · [Тесты записи](../test/test_planning_runtime_publication.py) · [Проверка интервалов](../test/test_plan_state_windows.py) · [Тест отмены](../test/work-evidence-planning.test.js) +- **A02/A03, дефект из production-preview и повтор на его сохранённом входе.** E5 отверг три открытых действия Zoom из-за признака завершения связанной задачи Asana. Одно действие включало постмортем на следующей неделе. После исправления все три исходных ID видны в удержаниях с причиной отсутствия оценки времени. Срок завершённой задачи больше не переносится на эти действия. Бюджет остался нулевым. Адресные Asana-комментарии к завершённой задаче сохраняются отдельно. Более ранний запрос без подтверждённого исхода ждёт сверки. Повтор на сохранённом рабочем входе и тесты подтвердили исправление. Рабочий повтор опубликованной версии открыт. [Ограничения E5](../windmill/workspace/f/attend/attention_loop_e5__flow/day_constraints.py) · [Сбор Asana](../work-demand.js#L108) · [Регрессия](../test/test_daily_planner.py) +- **Обсуждения, фактический остаток.** Снимок источников в 21:15:28 по Бишкеку обнаружил 26 работ, сверил 5, отметил 21 изменившуюся и 5 пропавших. Причины пересекаются: у 21 менялся метод, у 4 вход. В сохранённом наборе из 31 работы только 6 записей имели точный хеш текущего метода, 5 из них содержали действия. Из 37 сохранённых действий проекция показала 12 открытых с актуальным источником, 23 удержанных после изменения источника, 1 удержанное после изменения метода и 1 закрытое. Очередь ревью показывала 0 минут при частично устаревших источниках. Это результат фильтра допуска. Статус обновления был `running`; подтверждения обработки оставшихся обязательств и измерения пропусков извлечения нет. [Наблюдатель источников](../scripts/observe-discussion-sources.py) · [Проекция](../scripts/discussion_queue.py) · [Бюджет](../scripts/pending_reviews.py) +- **Уточнение и claims.** В рабочем SQLite сохранён один исход Clarify `needs_review` с причиной `no_verified_next_action`. В позднем чтении 166 назначений были `source_unavailable`, текущих подтверждённых действий было 0. Есть проверенный путь до ручной сверки и изолированный положительный тест через E4/E5. Реальный автономный допуск конкретного модельного шага и обработка всей очереди пока не показаны. Рабочий повторный scan claims принял в очередь все 597 работ, после чего проверка обработчика вернула `busy`. 597 — объём поставленных работ. Полное применение и качество утверждений предстоит проверить. [Clarify](../scripts/clarification-runtime.py) · [Очередь](../scripts/clarification-queue.py) · [Claims](../scripts/work-claim-updates.js) +- **Проверки этого среза.** Прошли 134 Python-теста и 48 целевых Node-тестов, включая паритет хеша и SQLite, перенос правил GTD, актуальность источников, бюджет ревью и устойчивые UUID. TCP-тест отмены также прошёл на временном порту. Рабочий Outlook, обычное окно доставки уведомлений, переключение расписаний и результат пятидневного пилота в этих прогонах не измерены. + +### Предыдущий срез после перекрёстного ревью + +**Полная производственная, архитектурная и целевая приёмка Personal OS открыта.** Проверены отдельные сценарии и воспроизводимые дефекты. Полный разбор очереди и эффект системы за рабочую неделю пока не подтверждены. + +Исторические находки и результаты сохранены для прослеживаемости. Текущие рабочие статусы приведены выше. + +- **A12, реальные данные:** четыре карточки с одинаковым ID `4bb64e2ddf1bd1e1dfc9a715` не позволяли принять решение: `Canonical action is absent or ambiguous`, HTTP 404. Проверка источников выявила разные обязательства. Выполнено безопасное разделение на четыре устойчивых ID с сохранением всех шести свидетельств. Объединяются только доказанные дубли: одинаковый явный ID обязательства либо точная нормализованная цитата одного источника. Частичное совпадение цитат недостаточно. История решений сохраняется; первое решение по одному разделённому действию не переносится на остальные. Миграция рабочего снимка выполнена под короткой блокировкой с резервной копией; фиктивные пользовательские решения в рабочую систему не записывались. Все четыре действия разрешены на временной копии реального снимка. Чтение защищено и от поздней записи старого процесса. Версия алгоритма и байты издателя/нормализатора закрепляются при запуске процесса. [Исправление](../scripts/discussion-state.py) · [Регрессии](../test/test_discussion_identity.py) · [Издатель](../scripts/publish-discussion-actions.py) +- **Clarify → Engage:** ручной перенос и отклонение не исчезают после изменения источника. До назначенной даты перенос остаётся удержанным; после неё требуется решение пользователя. Недостаточное подтверждение модели и исчерпание попыток имеют ручной путь. Эти состояния попадают в бюджет ревью без допуска самой работы к исполнению. Записи Waiting For, Deferred и Optional с наступившей датой сверки также получают отдельную проверку и уведомление, сохраняя исходное состояние. Weekly Review отражает перенос в Someday, отклонение — в отдельном списке; задачи не возвращаются автоматически во входящие. [Очередь](../scripts/clarification-queue.js) · [Бюджет ревью](../scripts/pending-reviews.js) · [GTD](../scripts/gtd-review.js) +- **Реальный фоновый обработчик:** загрузка LaunchAgent подтверждена через `launchctl`; интервал — 900 секунд. Прогон 1‑Must на той же текущей версии источника завершился состоянием `needs_review`. Общий адаптер показал пять минут ручной сверки, API ответил 200. Это подтверждает рабочий путь до ручного решения, а не положительный автономный допуск модельного действия в план. +- **A11, реальное чтение Zoom:** подтверждён полный обход доступной коллекции: Owned — 84 заметки на пяти страницах; Shared и Starred — по одной завершённой странице, доступных записей нет. В области даты отсечения перечитаны и импортированы 29 транскриптов. Для 20 дата получена из `meeting_start_time`, для девяти — из явной даты заголовка; неизвестных дат в этой выборке нет. SHA и содержимое всех 29 импортов сопоставлены. Это полнота данной доступной коллекции и периода, а не гарантия доступа ко всем встречам организации. +- **Уведомления:** для ранее выполненного реального запроса есть receipt macOS. Новый payload уведомлений прошёл проверку декодером Swift; ссылки на точное действие и защита от повторов покрыты изолированными тестами. Receipt и декодирование не подменяют наблюдение каждого нового вида баннера в обычном рабочем дне. + +- **A09/A10, повторная проверка допуска.** В воспроизведении прямое GitHub-ревью оставалось в «актуальном» плане после истечения свежести источника. Отдельно наблюдатель засчитывал синтетический день с неизвестной очередью ревью. Теперь API и пересчёт сверяют версии и часы Asana/GitHub, а наблюдатель использует тот же допуск и учитывает его результат при зачёте. Сверены удаление GitHub-обязательства через настоящий маршрут, истечение свежести, совместимость с новым наблюдением неизменившихся данных и незачёт дня. Рабочий счётчик этим проходом не изменялся. [Допуск](../scripts/plan-state.js) · [Маршрут](../scripts/db-browser.js#L937) · [Наблюдатель](../scripts/observe-acceptance-pilot.py) · [Тест](../test/test_acceptance_pilot.py) +- **A08, граница уведомлений.** Воспроизведена доставка обычного напоминания во время защищённого фокуса в 19:12 при границе 19:00. Теперь послерабочее окно применяется только к административной сверке. Рабочие уведомления и запросы ревью ждут разрешённого окна. [Условие доставки](../scripts/observe-acceptance-pilot.py#L157) · [Регрессия](../test/test_operations_review.py) + +Последние целевые проверки: **72 теста прошли** — пять тестов миграции идентичности, шесть перепривязки и происхождения метода, 11 Node-тестов жизненного цикла/черновиков, 35 Node-тестов канонической проекции/Clarify/бюджета ревью и 15 Python-тестов операционного контура. Это наборы данного прохода, не счётчик полного тестового набора репозитория. `git diff --check` прошёл. A12 дополнительно проверен другим агентом; связанные исправления очереди и бюджета прошли перекрёстную проверку через реальные функции JS → Python. [Миграция](../test/test_discussion_identity.py) · [Перепривязка](../test/test_discussion_rebind.py) · [Очередь](../test/clarification-queue.test.js) · [Бюджет](../test/pending-reviews.test.js) · [Операционный контур](../test/test_operations_review.py) + +### Открытая производственная приёмка + +- Опубликованный E5 **v183**, job `01a1d540-9d02-97e0-627a-7804a314bb20`, запущен с `refresh_sources=true`; на момент фиксации этого раздела выполняется. Итог и проверка фактического результата добавляются после завершения. Этот прогон ещё не зачтён. +- Чтение Outlook остаётся заблокированным состоянием пользовательской сессии. Полный охват занятых интервалов не подтверждён; отдельные интервалы из Asana не заменяют эту проверку. +- Пилот: **0/5** зачтённых рабочих дней. Самочувствие, посильная нагрузка, непрерывный фокус, соблюдение границы дня, рабочие и карьерные результаты требуют реальных наблюдений и сверки пользователя. +- Полнота всех источников, обработка всей очереди, качество выводов модели и положительный автономный допуск конкретного модельного действия через E4/E5 не объявлены доказанными. Проверка отката, внешняя публикация, релиз и продуктовый эффект не входят в доказательства этого прохода. +- **A08/A17, архитектурное расхождение.** Этапный план от 18 октября прямо закрепляет оркестрацию Windmill и новые обработчики Python/SQL. Позднее добавленные критерии A01–A17 явно не отменяют это ограничение. Штатный локальный контур использует LaunchAgents и новые JS-обработчики уточнения, недельного обзора и пересчёта. Общий E4/E5 в Windmill подтверждает часть вычислений. Архитектурная приёмка требует отдельно закрыть расхождение. [Этапный план](personal-os-action-plan-2026-10-05.md#L40) · [Ограничение](personal-os-action-plan-2026-10-05.md#L64) · [Локальный запуск](../scripts/com.personalos.clarification-worker.plist) + +Далее сохранены результаты отдельных этапов аудита. Устранены воспроизведённые дефекты потери известных типов действий, смешения разных обязательств, перезаписи решений пользователя, размещения задач поверх разрывов между встречами и публикации устаревшего результата claims. Полная приёмка требует штатных прогонов опубликованных версий, измеренного охвата источников и проверки на рабочих днях. ## A01–A07. От сигнала к плану -- **A01 — исправлено, тестовые источники.** Адресный запрос попадает в очередь до первого ответа. Адресат и действие определяются по фрагменту сообщения. Регрессии покрывают FYI, прямой вопрос, несколько адресатов и несколько действий одного типа. Полнота для произвольных формулировок, языков и каналов не измерена. [Сборщик](../scripts/build-discussion-packets.js#L48) · [Регрессии](../test/discussion-lifecycle.test.js) -- **A02 — исправлено в локальном контуре, проверено на рабочих чтениях.** Обсуждения, запросы Asana и GitHub доходят до E4 или получают причину удержания. В реальных прочитанных данных найдено финальное ревью PR #8095. Очередь уточнения передаёт текущее проверенное действие в канонический вход E4, а E5 повторно проверяет совпадение источника. Опубликованный E5 до этой правки не использовал результаты модели в локальном плане. Повторная публикация и положительный сквозной прогон штатного фонового обработчика требуют подтверждения. [Сборка входа](../scripts/acceptance-plan-input.js#L48) · [Вход E5](../windmill/workspace/f/attend/attention_loop_e5__flow/read_context.py#L63) -- **A03 — исправлено для проверенных путей и ручной сверки.** Разные обязательства получают отдельные ID. Рекап требует связи публикации с источником обещания. Один артефакт с несколькими возможными обязательствами удерживается для сверки. Для точных PR и Asana-документов проверяются автор, артефакт и время. Решения пользователя имеют ревизию и историю, новые пробелы и конфликтующие результаты открывают сверку. Общие действия и неподтверждённые результаты закрываются после ручной проверки. Доказательства релиза и эффекта остаются отдельными. [Экстрактор](../windmill/workspace/f/analyse/discussion_actions.py#L225) · [Артефакты](../scripts/discussion-artifacts.js#L17) · [Решения](../scripts/discussion-state.py#L51) +- **A01 — исправлено, тестовые источники.** Адресный запрос попадает в очередь до первого ответа. Адресат и действие определяются по фрагменту сообщения. Регрессии покрывают FYI, прямой вопрос, несколько адресатов и несколько действий одного типа. Полнота для произвольных формулировок, языков и каналов не измерена. [Сборщик](../scripts/discussion_packets.py) · [Регрессии](../test/discussion-lifecycle.test.js) · [Паритет Python](../test/discussion-python-port.test.js) +- **A02 — канонический маршрут проверен, модельная приёмка открыта.** Обсуждения, запросы Asana и GitHub доходят до E4 или получают причину удержания. Рабочее чтение показало финальное ревью PR #8095. Очередь уточнения передаёт проверенное действие в канонический вход, E5 повторно проверяет исходную ревизию. Production-preview записал план после закрытия дня. Реальный Clarify дошёл до ручной сверки. Положительный автономный допуск модельного действия, обработка остатка и рабочий план с ненулевым бюджетом открыты. [Вход Python](../scripts/acceptance-plan-input.py) · [Вход E5](../windmill/workspace/f/attend/attention_loop_e5__flow/read_context.py#L63) +- **A03 — сопоставление артефактов проверено, потеря самостоятельных обязательств устранена на сохранённом входе.** Разные обязательства получают отдельные ID. Рекап требует связи публикации с источником обещания. Один артефакт с несколькими возможными обязательствами удерживается для сверки. Для точных PR и Asana-документов проверяются автор, артефакт и время. Решения пользователя имеют ревизию и историю, новые пробелы и конфликтующие результаты открывают сверку. После исправления все три открытых Zoom-обязательства из production-preview остаются видимыми. Для адресных Asana-комментариев отдельный путь подтверждён тестами. Повтор опубликованной версии и измерение ложных закрытий открыты. [Экстрактор](../windmill/workspace/f/analyse/discussion_actions.py#L225) · [Артефакты](../scripts/discussion_artifacts.py) · [Решения](../scripts/discussion-state.py#L51) - **A04 — исправлено, рабочие чтения и локальный пересчёт.** При подтверждённых 90 минутах облегчённый день дал 45 минут. «Перенести» останавливает подбор, «слишком много» уменьшает объём, «не тот фокус» допускает явно выбранное действие. Граница буднего дня сохранена. [Ограничения](../windmill/workspace/f/attend/attention_loop_e5__flow/day_constraints.py#L114) · [Тесты](../test/test_daily_planner.py) -- **A05 — исправлено для подтверждённых интервалов, календарь покрыт частично.** 25-минутное неделимое действие не помещается в два раздельных окна по 20 минут. В рабочем чтении Asana подтверждён интервал отдельной встречи. Полный охват Outlook и всех рабочих встреч не доказан. [Интервалы](../scripts/acceptance-plan.py#L16) · [Размещение](../windmill/workspace/f/attend/attention_loop_e5__flow/day_constraints.py#L341) +- **A05 — непрерывное размещение проверено, календарная приёмка открыта.** 25-минутное действие не помещается в два раздельных окна по 20 минут. В рабочем чтении Asana подтверждён интервал отдельной встречи. Повторное ревью добавило проверку окна, истёкшего между расчётом и записью. Чтение Outlook и полный охват рабочих встреч требуют подтверждения. [Интервалы](../scripts/acceptance-plan.py#L16) · [Размещение](../windmill/workspace/f/attend/attention_loop_e5__flow/day_constraints.py#L341) · [Запись](../scripts/planning-runtime.py) - **A06 — правила реализованы, измеряемые входы частичны.** E4 использует подтверждённую цепочку родителей для AoR, версионированные карьерные правила, роль и ответственность. DDG SAM применяется в согласованной области Native Apps. Недельные доли и фактический WIP учитываются при наличии подтверждённых данных. Точность карьерного сопоставления и недельное соблюдение долей не измерены. [Вход E4](../windmill/workspace/f/attend/attention_loop_e5__flow/priority_input.py) · [Рейтинг](../windmill/workspace/f/attend/roles_importance_e4__flow/rank.py) · [Политика](priority-policy.json) - **A07 — исправлено в E4/E5, синтетические конфликты.** Подтверждённый срок и просрочка выделены, невместимое обязательство остаётся видимым с причиной. Next TP не наследует срок исходной оценки. Обещания без структурированного подтверждённого времени остаются ограничением источника. [Сроки](../windmill/workspace/f/attend/attention_loop_e5__flow/priority_input.py#L78) · [Конфликты](../windmill/workspace/f/attend/attention_loop_e5__flow/day_constraints.py#L361) ## A08–A10. Доставка и критерии приёмки -- **A08 — частично закрыто.** Штатный скрипт запускает подготовку Next TP. Готовый артефакт попадает в локальную очередь и может вызвать уведомление в разрешённое окно. Повторы, тихие интервалы и привязка к актуальному источнику проверены изолированно. Уточнения, требующие решения пользователя, попадают в общий бюджет ревью и групповые уведомления. Произвольные подготовки модели не запускаются. Фактическая доставка баннера в обычный день ещё не подтверждена. [Штатный вызов](../scripts/run-focus-shadow.sh#L69) · [Уведомления](../scripts/observe-acceptance-pilot.py#L207) -- **A09 — исправлено, локальные регрессии.** Ошибка пересчёта, возраст плана и изменение пользовательского состояния блокируют выдачу старого плана как актуального. Отказ рабочего сервиса не воспроизводился. [Допуск плана](../scripts/plan-state.js#L17) · [Тесты](../test/plan-state.test.js) +- **A08 — вызовы нового контура подтверждены, рабочая доставка открыта.** Готовый черновик, уточнение или наступившая сверка входят в общий бюджет и ждут разрешённого окна. Новый E5 пересчитывает план после изменения ревизии очереди. Production-preview после рабочей границы вызвал подготовку, наблюдение и проверку уведомлений. Очередь при подготовке не изменилась. Повторы, тихие интервалы и актуальность источника покрыты тестами. Есть receipt прежнего реального уведомления и проверка нового payload декодером Swift. Доставка из новой production-ветки и второй проход на реальном черновике открыты. [Оркестрация](../windmill/workspace/f/attend/attention_loop_e5__flow/flow.yaml) · [Уведомления](../scripts/observe-acceptance-pilot.py) +- **A09 — допуск исправлен, включая истёкшие слоты.** Ошибка пересчёта, возраст плана и изменение состояния или источника блокируют выдачу старых действий. Хост проверяет точный снимок E4/E5 перед записью. Изолированный сценарий с окном 10:00–10:15 и записью в 10:20 теперь отклоняется. Работа этого допуска на опубликованной версии внутри рабочего дня открыта. [Допуск плана](../scripts/plan_state.py) · [Тесты](../test/test_plan_state_windows.py) · [Запись](../scripts/planning-runtime.py) - **A10 — критерии исправлены, рабочая приёмка открыта.** Для зачёта нужны покрытие источников, итоговое наблюдение, измерения пропусков, ложных закрытий, нагрузки ревью и переключений, а также подтверждение самочувствия, посильности и фокуса. Синтетический неполный или перегруженный день не засчитывается. Пять реальных зачтённых дней и улучшение относительно исходного уровня не подтверждены. [Критерии](../scripts/observe-acceptance-pilot.py#L103) · [Тесты](../test/test_operations_review.py) ## A11–A17. Источники, история и проектное состояние -- **A11 — повторное чтение исправлено, охват коллекции частичный.** Видимые заметки после даты отсечения перечитываются, изменившееся содержимое сохраняется. Повторный вход в видимом Chrome и возобновление синхронизации проверены на подменённом браузере. Охват Shared и пагинация остаются непроверенными. [Zoom](../scripts/zoom-browser-sync.js#L109) · [Тесты](../test/zoom-browser-sync.test.js) -- **A12 — исправлено для проверяемого тождества.** Привязка к Asana сохраняет ID и решение при том же источнике с уточнённой цитатой. Модель работает вне блокировки записи. При параллельной обработке старый снимок не перезаписывает новый, пользователь может принять решение во время анализа. Смысловые дубли разных источников без общей связи требуют сверки. [Публикация](../scripts/publish-discussion-actions.py#L47) · [Перепривязка и гонка](../test/test_discussion_rebind.py) +- **A11 — реальное чтение доступной коллекции подтверждено.** Прежний пробел Shared/пагинации закрыт: Owned 84/пять страниц, Shared 0/одна страница, Starred 0/одна страница, терминальные курсоры проверены. В выбранном периоде перечитаны 29 транскриптов; проверены содержимое, SHA и основание даты встречи. Повторный вход в видимом Chrome проверен на подменённом браузере; реальный прогон использовал действующую сессию. [Zoom](../scripts/zoom-browser-sync.js#L109) · [Тесты](../test/zoom-browser-sync.test.js) +- **A12 — исправлено, включая реальные исторические коллизии.** Привязка к Asana сохраняет ID и решение при том же источнике с уточнённой цитатой. Четыре разные обязанности с одним старым ID безопасно разделены; каждую удалось разрешить на копии рабочих данных. Доказательства и история сохранены. Модель работает вне блокировки записи; чтение и миграция защищены от позднего старого издателя. Метод нового процесса не может быть ошибочно приписан старому процессу после изменения файла. Смысловые дубли разных источников без общей связи требуют сверки. [Публикация](../scripts/publish-discussion-actions.py) · [Миграция](../test/test_discussion_identity.py) · [Перепривязка и гонка](../test/test_discussion_rebind.py) - **A13 — исправлено, история с изменением HEAD.** Историческая привязка берётся из подтверждённой связи дерева или PR в том же снимке. Двусмысленность остаётся без проектной связи. [История](../scripts/work-history.js#L64) · [Регрессии](../test/work-history.test.js) - **A14 — исправлено, изолированные прогоны.** Причина отклонения и предыдущая ревизия передаются на ограниченную переработку. Повтор сохраняет результат, вытесненный черновик перестаёт быть активным. Реальный отклонённый артефакт в штатном цикле ещё не проверен. [Ревизии Next TP](../scripts/priority-handoff.py#L88) · [Регрессии](../test/test_operations_review.py) - **A15 — исправлено, синтетический пропуск.** Предыдущий день без финального наблюдения доступен для сверки пробела и не засчитывается. Штатное восстановление реального пропуска ещё не наблюдалось. [Восстановление](../scripts/observe-acceptance-pilot.py#L103) -- **A16 — исправлено на тестовых источниках.** Next TP извлекается без обязательной ручной привязки встречи. Для закрытия проверяются автор публикации, хронология и однозначная связь с источником обещания. Назначение карточки и вручную заданная связь сами по себе не закрывают обязательство. Реальный прогон новой встречи с публикацией требует подтверждения. [Реестр и сверка](../scripts/build-discussion-packets.js#L101) · [Экстрактор](../windmill/workspace/f/analyse/discussion_actions.py#L73) -- **A17 — частично закрыто.** Версионированный обработчик claims сохраняет модельные ответы и частичные пакеты до применения, защищает решения пользователя и отзывает устаревшие аренды. Данные обсуждений проходят через человеческий цикл решений. Проекция сохраняет пробелы успешного анализа, показывает пустую область как неизвестную и ведёт отдельное время сверки источника. Проверено на выделенной PostgreSQL. Размер оставшейся очереди, устранение её блокировок, свежесть GitHub и достаточность принятых проектных фактов требуют рабочих наблюдений. [Claims](../scripts/work-claim-updates.js) · [Источники](../scripts/work-claim-sources.js) · [Проекция](../scripts/project-state.js) +- **A16 — исправлено на тестовых источниках.** Next TP извлекается без обязательной ручной привязки встречи. Для закрытия проверяются автор публикации, хронология и однозначная связь с источником обещания. Назначение карточки и вручную заданная связь сами по себе не закрывают обязательство. Реальный прогон новой встречи с публикацией требует подтверждения. [Реестр и сверка](../scripts/discussion_packets.py) · [Экстрактор](../windmill/workspace/f/analyse/discussion_actions.py#L73) +- **A17 — правила сохранения и допуска проверены, качество данных открыто.** Claims сохраняет ответы и частичные пакеты до применения, защищает решения пользователя и отзывает устаревшие аренды. Python-проекция оставляет пробелы явными, принимает только действующие человеческие решения и хранит время сверки источника отдельно. Выделенная PostgreSQL проверила транзакции и проекцию. Рабочий scan поставил в очередь 597 работ, финального применения нет в доказательствах. Для целевой приёмки также нужны свежий GitHub, достаточность принятых фактов и проверка архитектуры после переключения. [Claims](../scripts/work-claim-updates.js) · [Источники](../scripts/work-claim-sources.js) · [Проекция](../scripts/project_state.py) ## GTD и лидерские практики -- **Capture и Clarify.** Источник, автор, отдельное действие и состояние сверки видны в очереди. Остаточный риск — неполнота Zoom, неоднозначные реплики и операции без наблюдаемого артефакта. +- **Capture и Clarify.** Источник, автор, отдельное действие и состояние сверки видны в очереди. Доступная коллекция Zoom проверена в указанном периоде. Остаточные ограничения — доступность других источников, неоднозначные реплики и операции без наблюдаемого артефакта. - **Organize и Reflect.** Есть очередь следующих действий, ожидания с датой, отложенное и недельный обзор. Штатная неделя с закрытием открытых циклов ещё не наблюдалась. [Недельный обзор](../scripts/gtd-review.js) - **Engage.** План ограничивают рабочая граница, подтверждённое время, непрерывные окна, состояние пользователя и WIP при наличии данных. Перед исполнением видны конфликт срока и причина удержания. Полнота фактического WIP и недельного распределения пока не доказана. - **Ответственность и результат.** Рейтинг различает владельца, исполнителя и ревьюера. Реализация, релиз и эффект требуют отдельных подтверждений. Рабочая неделя должна показать своевременность делегирования, рекапов и ревью, а также время обслуживания очереди. -## Проверки этого прохода +## Промежуточные проверки до последнего перекрёстного ревью - 35 тестов Node для обсуждений, артефактов, контекста и Zoom. 12 тестов Python для извлечения, перепривязки, параллельного решения и устаревшего снимка. Браузер и источники подменялись, записи шли во временные каталоги. - 34 теста E5, 5 тестов E4, 7 тестов операционной сверки и 9 тестов состояния плана и истории. Отдельная сборка читала рабочие источники и писала во временный каталог. Обычный бюджет составил 90 минут, облегчённый — 45. PR #8095 присутствовал во входе. @@ -50,8 +87,10 @@ Фоновый обработчик берёт одно назначение за запуск. Первые попытки идут по актуальному 1‑Must, Top Priority и срокам, а повторные уступают ещё не обработанным задачам. Явный 1‑Must сохраняет приоритет после получения конкретного действия. Someday/Maybe остаётся удержанным. Результат привязан к содержимому Asana и версии комментариев. До 80 комментариев доступны с постраничным чтением в пределах запроса модели. Превышение лимита или отсутствие подтверждённого родителя удерживает действие. Успешно проверенные предложения ограничены операциями исследования и уточнения объёма. Недостаточное подтверждение попадает на ручную сверку. Действия проходят E4 и ограничения E5. Обработчик пишет только локальное состояние. [Очередь](../scripts/clarification-queue.js) · [Обработчик](../scripts/clarification-worker.js) · [Проверка модели](../scripts/clarification-propose.py) -Изолированное чтение рабочих источников дало 217 записей графа задач и 165 назначений. 130 попали в очередь, 35 удержаны как Someday/Maybe. В одном реальном прогоне qwen27b для задачи 1204180319229711 вернул пустой список действий, проверяющий подтвердил пустой результат. Временная очередь сохранила причину удержания. Подтверждённый моделью конкретный шаг, его допуск через E4/E5 и продвижение после сбоя проверены на тестовых данных. Положительный рабочий прогон, запуск LaunchAgent по расписанию и полная обработка очереди остаются отдельными проверками. +Изолированное чтение рабочих источников дало 217 записей графа задач и 165 назначений. 130 попали в очередь, 35 удержаны как Someday/Maybe. В одном реальном прогоне qwen27b для задачи 1204180319229711 вернул пустой список действий, проверяющий подтвердил пустой результат. Временная очередь сохранила причину удержания. Подтверждённый моделью конкретный шаг, его допуск через E4/E5 и продвижение после сбоя проверены на тестовых данных. На этом промежуточном этапе LaunchAgent ещё не был подтверждён; текущий статус его загрузки приведён в начале документа. Положительный автономный допуск и полная обработка очереди остаются отдельными проверками. Повторное чтение после включения 1‑Must дало 131 назначение в очереди и 35 Someday/Maybe. Текущий Top Priority получил все 44 наблюдённых комментария. Задач с переполнением лимита 80 в этом срезе не было. Первый запуск на рабочей локальной очереди выбрал 1‑Must 1220422645861898. Модель запросила чтение точного источника, затем предложила ожидание. Проверяющий принял результат без неподтверждённых утверждений. Обработчик сохранил задачу как «Требует решения», общий адаптер отразил пять минут ревью. Действие в план не допущено. Запуск начался на версии источника до расширения истории комментариев, поэтому следующее чтение может обоснованно заменить эту ревизию. + +Последующий прогон на той же текущей версии источника также дошёл до `needs_review`; пять минут сверки и доступность через API 200 подтверждены. LaunchAgent загружен с интервалом 900 секунд. Эти факты закрывают проверку реального пути к ручной сверке, но не превращают ожидание или отсутствие конкретного шага в автономно допущенную задачу.