Files
launcher-next/AGENTS.md
T

6.3 KiB
Raw Blame History

AGENTS.md — Launcher Next

Назначение

Launcher Next — отдельная программа для доставки, activation, запуска и rollback корпоративных Plant 3D 2026 plugin packages. Она заменяет legacy цепочку launcher → P_Serv_Starter → BAT → LISP → OrthoLoader → 20 NETLOAD:

Launcher Next → manifest → local staging → SHA-256 validation → versioned activation → one startup NETLOAD → Plant 3D 2026 → entry assembly → wait → automatic rollback.

Репозиторий C:\dev\launcher-next независим. Legacy launcher repositories используются только read-only.

Приложение и режимы

Существует одна видимая программа: Launcher.Next.App. Не создавать отдельные test/pilot launchers с отдельным composition root; Pilot CLI — режим того же приложения.

Launcher modes: Legacy, DryRun, NextPilot, NextPreferred. Допустимые plugin modes: Smoke, DryRun; Apply требует отдельного задания. Без explicit pilot configuration безопасные defaults: DryRun, PilotEnabled=false, AllowProcessStart=false. Pilot CLI читает реальную local configuration, а не создаёт safe-default вместо отсутствующего файла.

На test machine реальный Process.Start разрешён, если задача требует runtime проверку и safety gates выполнены. Не ставить лишний review barrier после foundation/interface/composition root/Prepare: задача real pilot должна дойти до Execute, process, checkpoint, ProcessExited, automatic rollback, RolledBack, documentation и push.

Plant 3D launch contract

Подтверждённый Plant 3D 2026 contract:

/product PLNT3D /language ru-RU /b <generated-startup-script>

Не передавать /p, пока profile не доказан отдельным runtime evidence. Всегда использовать ProcessStartInfo.ArgumentList. Передавать P_REC_ANNOT_RUNTIME_MODE=Smoke или DryRun из pilot configuration.

Pilot root, manifest и package

Разрешённый isolated root: C:\AutoCAD User Support\LauncherNextPilot. Он не смешивается с C:\AutoCAD User Support\Applications. Запрещены UNC/relative roots, Program Files, Autodesk ApplicationPlugins, repository directory, path traversal, symlink/junction escape и writes в legacy root.

Manifest содержит schema, package ID/version, product/year/series, architecture, entry assembly, rollout channel, rollback safety, relative files, length и SHA-256. Блокировать Autodesk DLL, PDB, test/legacy assemblies, absolute/path-traversal paths, missing entry assembly, changed files и hash mismatch.

Prepare, Execute и startup script

PrepareAsync читает configuration, discovers product, validates manifest and source, creates deterministic LaunchPlan/script content/process specification и не создаёт activation state/script/process.

ExecuteAsync повторно проверяет gate и one-time permit, сохраняет ActivationSnapshot, использует unique staging, повторно проверяет hashes, атомарно activates version/pointers, materializes script, повторно проверяет process state, запускает один process и сохраняет PID/session. Не подменять service ручным PowerShell copying.

Startup script содержит ровно один _.NETLOAD только entry assembly из versioned local directory; он не запускает commands/LISP/OrthoLoader, не меняет TRUSTEDPATHS, не ссылается на UNC и не NETLOAD internal dependencies.

Session и rollback

States: Prepared, Activating, Activated, ProcessStarting, ProcessStarted, WaitingForRuntimeCheck, ProcessExited, RollbackStarted, RolledBack, Failed. Session atomically persisted; permit token никогда не пишется. Active/incomplete session блокирует второй run.

Automatic rollback выполняется после завершения конкретного PID. Он читает persisted session/snapshot, восстанавливает exact current/previous pointers, удаляет startup script и pilot version, очищает staging, идемпотентен и работает после перезапуска. Проверять фактические файлы, не только сообщение.

CLI: pilot prepare, pilot run, pilot status, pilot rollback. pilot run --wait-for-exit --rollback-after-exit не завершается сразу после Process.Start — он ждёт AutoCAD и rollback.

Legacy isolation, documentation и tests

Launcher Next не изменяет legacy launcher/P_Serv_Starter/BAT/LISP/ app_netload.lsp/OrthoLoader/Settings.xml, AutoCAD profile, registry или TRUSTEDPATHS. Допустима read-only hash verification.

Документировать цепочку CLI → configuration → manifest → validation → Prepare → permit → snapshot → staging → activation/pointers → script → Process.Start → PID → NETLOAD → plugin → wait → ProcessExited → rollback → RolledBack с реальными классами/методами.

Tests не запускают AutoCAD; process invoker заменяется fake. Обязательны parser, gates, manifest/hash, staging/atomic activation, permit, arguments, persistence, wait, automatic/standalone/idempotent rollback и legacy isolation. Реальный Plant runtime фиксируется отдельным evidence.

Definition of Done

Launcher slice завершён, когда normal UI сохранён, CLI вызывает реальный application service, build без warnings, tests passed, требуемый runtime pilot выполнен, assembly loaded from versioned directory, PID закрыт штатно, rollback и RolledBack проверены, механика документирована, ветка published обычным push.