Files
obsidian-vault/personal/projects/personal-os/project-truth-analyzer.md
T

36 lines
9.7 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Personal OS — актуальное состояние проектов
Статус: **первый срез работает через JSON; PostgreSQL-история необязательна и не включена** · 2026-10-04. Настроены два проекта: VSCode/SPM и CPM. Для CPM текущий live-снимок содержит открытую родительскую задачу, 19 прямых подзадач и выбранные PR #6844/#6951/#7037 (все merged). CPM пока покрывает только Asana и GitHub; связанного Zoom-решения, актуальной проверки из проектной заметки и измеренного продуктового эффекта в этом снимке нет. Поле `coverage_scope` сообщает эту границу потребителям. Живой прогон 2026-10-04 12:53 +06 получил полный свежий статус: Asana comment прочитан напрямую, Zoom и проектная заметка доступны, GitHub PR Draft. `~/context/projects.json` создан с режимом 0600; claim-check отвергает `implemented` и принимает `cancelled`. Проверка `node --test test/project-truth.test.js` проходит. Полный shadow-прогон во временную папку 2026-10-04 12:55 +06 прошёл: `shadow.json`, `projects.json` и `focus.json` показывают свежий проектный статус; повторный полный shadow-прогон 2026-10-04 13:29 +06 подтвердил `project_truth.persistence=json_only` и свежий `focus.json`. Для следующих career advisor briefs создан `agent/one-on-one-prep-playbook.md`, который требует свежий `projects.json` и claim-check; вторничная автоматизация `career-advisor-call-weekly-preparation` включена на 09:00; первый запуск ещё не проверен.
## Зачем
Focus, дневной план, подготовка к career advisor call и карьерная память должны читать одно проверенное состояние каждого проекта. Сейчас эти сценарии независимо собирают фрагменты из Asana, GitHub, Zoom и Obsidian и могут принять закрытую альтернативу за реализованную работу.
## Контракт
- Локальный read-only сбор событий по каждому проекту: Asana parent/subtasks и комментарии, GitHub PR/commit/review, Zoom решения, текущая проектная заметка. Связывать точными ID/URL и временем. Сырой транскрипт не дублировать.
- Сохранять `project_id`, `work_item_id`, `claim`, `state` (`proposed|approved|cancelled|implemented|verified|released|conflict|unknown`), `event_time`, `observed_at`, `source_ref`, `scope`, `supersedes`, `confidence`, `open_questions`. Состояние задачи в Asana и состояние технического решения — разные поля.
- При конфликте проверять последовательность: предложение → явное решение/отмена → код и PR → проверка сборки. Более поздний явный комментарий об отмене перевешивает раннее предложение и checkbox `completed`; событие закрытия PR не доказывает текущий статус — нужно проверить последующее reopening; Draft PR не доказывает merge или внедрение. Если подтверждения недостаточно, выводить `unknown/conflict` со ссылками, без уверенной формулировки.
- Публиковать краткий `project_state`: цель, принятые и отменённые решения, реально внедрённое и проверенное, открытые пункты, кто/что ждёт Алекса, свежесть и ссылки. Пересчитывать при новых событиях и периодически. Производные агенты используют этот снимок и проверяют его свежесть, прежде чем утверждать текущий статус.
- Карьерный факт отделять от результата реализации: предложение, исследование и корректный отказ после новых данных могут быть вкладом; внедрение заявлять только по подтверждённому коду/проверке. Подготовка к звонку и другие brief-сценарии должны ссылаться на `project_state` и блокировать противоречащие ему claims.
## Первая приёмка: VSCode/SPM migration
1. Zoom Apple Weekly 2026-09-29: Alex представил **предложение** о code-initialized Core Data models, не результат внедрения.
2. [Asana subtask 1218854852229979](https://app.asana.com/0/0/1218854852229979) закрыта; комментарий Alex от 2026-09-30 объясняет, что Xcode 27 / Swift 6.4 swiftbuild компилирует существующие Core Data модели в SPM, поэтому конверсия больше не нужна. Открыта [cleanup task 1218987523298563](https://app.asana.com/0/0/1218987523298563) для удаления runtime test hacks.
3. [[work/projects/vscode-migration/vscode-migration]] помечает модели в коде **Cancelled** 2026-10-01. Существующие `.xcdatamodeld` и codegen classes остаются ресурсами пакета; `.momd` читается из `Bundle.module`, сборка проверена на Xcode 27.2. См. [[work/projects/vscode-migration/findings]].
4. [GitHub PR #7080](https://github.com/duckduckgo/apple-browsers/pull/7080) — отдельная работа по сборке браузера как Swift package; 2026-10-02 его закрыли и вновь открыли, сейчас он Draft. Его нельзя использовать как доказательство реализации code-initialized models. Закрытый [PR #6976](https://github.com/duckduckgo/apple-browsers/pull/6976) касается AssetCatalogPlugin.
5. Итоговый статус для всех потребителей: **code-initialized Core Data models — cancelled; действующие модели сохранены и совместимы с Xcode 27 build system; cleanup test hacks — open**. Карьерный факт: Alex исследовал и представил альтернативу, затем изменил решение на основании новой возможности toolchain.
## Текущий охват и следующий шаг
VSCode/SPM имеет `coverage_scope=correlated_decision_task_pr`; CPM — `coverage_scope=current_asana_tasks_and_selected_prs`. Статус `fresh` означает свежесть настроенных источников, а не полноту сведений обо всех решениях проекта. Следующий кодовый шаг — пополнить реестр другими активными проектами и связывать Zoom/проектные заметки только с подтверждёнными ID и решениями. Первый запуск вторничной автоматизации — 2026-10-06; его результат ещё не проверен.
## Реализация и приёмка
1. **Реестр — работает.** `project-truth-projects.json` связывает VSCode/SPM с Asana, Zoom, заметкой и PR; CPM — с Asana parent, автоматически читаемыми прямыми подзадачами и выбранными PR. `migrations/004_project_truth.sql` подготовлена, но не применена; JSON-путь не зависит от неё.
2. **Сбор и сверка — работают.** `project-evidence.js` читает настроенные источники без записи в них. `project-truth.js` разделяет решение, задачу, PR и проверку, учитывает время событий и помечает конфликт или неполный источник.
3. **Потребители — подключены.** `source-snapshot.js` пишет `~/context/projects.json` (0600); focus и advisor playbook используют свежесть и `coverage_scope`. Claim-check блокирует неподтверждённое внедрение.
4. **Проверка — пройдена.** 45 тестов из `test/*.test.js`; живой refresh двух проектов и полный shadow-прогон с `project_truth.persistence=json_only` прошли 4 октября. Первый запуск автоматизации advisor call 6 октября ещё не проверен.
5. **Следующая граница.** Для CPM добавить подтверждённые Zoom-решения и актуальные проверки продукта; затем включать следующие проекты по конкретным Asana/PR/Zoom ID. Статус `fresh` означает только свежесть уже настроенных источников.