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

9.7 KiB
Executable File
Raw Blame History

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 закрыта; комментарий Alex от 2026-09-30 объясняет, что Xcode 27 / Swift 6.4 swiftbuild компилирует существующие Core Data модели в SPM, поэтому конверсия больше не нужна. Открыта cleanup task 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 — отдельная работа по сборке браузера как Swift package; 2026-10-02 его закрыли и вновь открыли, сейчас он Draft. Его нельзя использовать как доказательство реализации code-initialized models. Закрытый PR #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 означает только свежесть уже настроенных источников.