# AGENTS.md ## Назначение проекта Этот репозиторий содержит аудит, архитектуру, исходный код, тесты, runtime evidence и документацию миграции корпоративной экосистемы Autodesk AutoCAD Plant 3D 2019 на Autodesk AutoCAD Plant 3D 2026. Конечная цель — функционально эквивалентная рабочая схема Plant 3D 2026: корпоративный Launcher, локальная доставка и активация пакетов, managed плагины, команды, Ribbon, Plant project integration, DataLinks, Ortho, аннотации, обновление, диагностика и rollback. Миграция не считается завершённой после успешной компиляции: необходима runtime-проверка реальных сценариев в Plant 3D 2026. ## Связанные репозитории - основной Autodesk-репозиторий: `C:\dev\autodesk`; - Launcher Next: `C:\dev\launcher-next`; - legacy launcher (read-only): `C:\dev\launcher\git`, `C:\dev\p_serv_starter`; - legacy P_Rec_Annot (read-only): `C:\dev\autodesk\link\P_Rec_Annot\v1.0.4\repo`. Legacy и deployed-файлы нельзя изменять без отдельного прямого задания. ## Целевая платформа и принцип миграции - Autodesk AutoCAD Plant 3D 2026, series R25.1, Windows x64, .NET 8; - использовать реальные Autodesk 2026 managed assemblies; - managed package загружается локально, не напрямую с UNC; - Autodesk DLL нельзя коммитить, помещать в package/fixture или публиковать. Переносится функциональное поведение, а не историческая структура файлов. Не воспроизводить без отдельного доказательства 20 последовательных `NETLOAD`, legacy LISP bootstrap, `OrthoLoader.dll`, загрузку с сети или прежние workaround. Предпочтительная цепочка: `Launcher Next → versioned local package → один managed entry assembly → internal dependencies → commands and Ribbon`. ## Статус legacy-команд Ни одна активная команда Plant 3D 2019 не исчезает молча. Для каждой команды фиксируется ровно один статус: `IMPLEMENTED`, `RUNTIME_VERIFIED`, `REPLACED_WITH_NATIVE`, `RETIRED_APPROVED` или `BLOCKED_WITH_REASON`. Aliases сохраняются, пока их удаление не утверждено отдельно. ## Runtime уровни `Smoke` проверяет assembly load, регистрацию команд, Plant context, Ribbon, отсутствие необработанных исключений и отсутствие записи в DWG. `DryRun` проверяет реальные Plant data, Ortho/sheet/view definitions, DataLinks, Plant objects, детерминированный план и отсутствие записи в DWG/project DB. `Apply` разрешается только отдельным явным заданием: write guard, ограниченная DWG transaction, тестовая копия проекта, baseline, rollback/UNDO, duplicate protection и runtime evidence обязательны. Apply нельзя включать только локальной конфигурацией. ## Runtime важнее предположений Build и unit tests не доказывают Autodesk integration. Для `RUNTIME_VERIFIED` необходимы фактические результаты: команда, module path, DBMOD, Ribbon, DataLinks, Ortho status, telemetry и состояние файлов после закрытия. Не выдумывать UI evidence: использовать `null`, `NOT VERIFIED` или `BLOCKED WITH REASON`. На тестовой машине реальный Plant 3D запуск разрешён, если он входит в задачу и есть test branch, локальный fixture, пройденные build/tests, rollback и нет production deploy. Не создавать искусственный review-gate перед Process.Start. Остановка допустима лишь после завершения доступной части работы и при конкретном внешнем blocker: установка, ОС, права, Autodesk runtime, fixture или необходимость production-данных. ## Test fixtures и отсутствие записи Fixtures создаются вне Git, например ``. Ortho fixture — настоящий Plant project с Pipe, DataLinks row, line group, Ortho drawing, Ortho viewport и source-model connection; обычный AutoCAD viewport не годится. Production DWG/project использовать нельзя без прямого разрешения. Нельзя коммитить DWG, DCF, Project.xml с runtime-data, project DB, Ortho generated files или реальные engineering values. Для Smoke/DryRun проверять DBMOD до/после, SHA-256 содержательных project files, отсутствие непредусмотренных transactions/DCF/project-metadata writes. `LastWriteTime` недостаточен. Отделять служебные Plant cache/session files от содержательных данных. ## Ribbon, механика и evidence Ribbon — часть продукта: проверять tab, panel, button, command binding, stable IDs, отсутствие дубликатов при документах/workspace/reinitialization. Команда может быть отдельно рабочей, но plugin slice не завершён без Ribbon evidence или отдельного UI defect. Документировать каждую runtime-цепочку: component/project/class/method, input/output, Autodesk transaction mode, writes, telemetry, failure code и rollback action. Документация соответствует фактическому коду. Evidence содержит только проверенные значения. Не добавлять username, permit, полный environment, real project paths/line numbers/ObjectId/RowId/properties, полные logs, local manifest или startup scripts. Путь fixture заменять на ``. ## Warnings и Git Известный `MSB3277` WindowsBase 4.0.0.0/8.0.0.0 допустим только при полном совпадении с ранее зафиксированным warning. Новые warnings исследовать; не подавлять `NoWarn` без причины. Запрещены force push, amend/rebase опубликованной истории, push binaries, изменение неизвестного remote и production deployment из test branch. Перед commit выполнять: ```powershell git diff --check git status --short git diff --cached --check ``` Не смешивать Launcher defect, plugin defect, runtime evidence и unrelated formatting в одном commit. ## Definition of Done Срез завершён, когда реализованы код, build/tests, валидный package и требуемый runtime-сценарий; записаны фактические результаты; выполнен rollback; fixture и production изолированы; механика документирована; ветка опубликована обычным push. ## Общая карта проекта Каноническая общая карта проекта находится в Google Drive: `https://drive.google.com/drive/folders/1avnR0V8q7y5pfWRYwB6LPBEEyfpN7PpV`. Локальная синхронизированная копия, если она доступна, определяется только переменной среды `PHIM_PLANT3D_PROJECT_MAP_ROOT`; её путь не хардкодить. Перед работой над архитектурой, миграцией или runtime-сценарием обязательно прочитать доступные индекс/обзор карты, целевую архитектуру и migration status, индекс runtime evidence, а также записи карты для затрагиваемых Launcher и P_Rec_Annot. Затем сверить их с локальными AGENTS.md, релевантными tracked документами, текущим кодом и тестами. Источники истины имеют следующий приоритет: фактическое runtime evidence; текущий код, tests и tracked configuration на проверенном Git HEAD; tracked документация репозитория; общая карта проекта. Внешняя карта описывает и связывает работу, но не является build/runtime dependency и не переопределяет текущий код или runtime evidence. Проверять свежесть каждой используемой записи карты по фактическим `git rev-parse HEAD`, ветке и привязанному runtime evidence. Если карта или её локальная копия недоступна, фиксировать `PROJECT_MAP_UNAVAILABLE`; если зафиксированные commit/runtime status не совпадают с фактическими — `PROJECT_MAP_STALE`. Эти статусы не разрешают выдумывать evidence: продолжать по доступным локальным источникам и явно сообщать расхождение. Системные инварианты сохраняются: Launcher доставляет versioned local package с одним managed entry assembly и без Autodesk DLL; P_Rec_Annot подтверждает реальное Plant/Ortho/DataLinks поведение runtime evidence, а не только build или tests. После изменения архитектуры либо runtime-статуса в отчёте указывать конкретные документы общей карты, которые требуют обновления (архитектура, статус миграции, evidence index и запись затронутой подсистемы); не заявлять, что они уже обновлены, без фактического изменения.