# Матрица PowerShell-скриптов AWatch-rus Дата актуализации: 2026-06-17 Документ фиксирует фактический статус оставшихся PowerShell-файлов после перехода на Rust-first контур. Это не означает, что PowerShell полностью удален. Цель матрицы: отделить рабочий runtime от установочных действий, аварийного отката и устаревших проверочных скриптов. В tracked документации не публикуются имена рабочих хостов, private IP, учетные записи, токены и runtime evidence paths. Live-проверка выполнялась по фактическим Scheduled Tasks, процессам и deployment config, но приватные идентификаторы здесь заменены на обобщенные описания. ## Классы | Класс | Значение | |---|---| | `runtime` | Скрипт участвует в штатном выполнении или является зависимостью штатного выполнения. | | `installer` | Скрипт нужен для установки, настройки, проверки или ремонта, но не должен постоянно работать. | | `fallback` | Скрипт оставлен как аварийный откат или reference-слой после перевода штатного пути на Rust. | | `obsolete` | Скрипт не нужен для штатной работы; кандидат на удаление после проверки ссылок и задач. | ## Фактический runtime-базис Штатный контур уже Rust-first для основных Windows-сборщиков: - загрузка 1C/file telemetry выполняется через `aw-windows-telemetry.exe file1c-upload`; - синхронизация DLP evidence выполняется через `aw-windows-telemetry.exe dlp-evidence-sync`; - browser/DLP/file-operations collectors выполняются через подкоманды `aw-windows-telemetry.exe`; - учет рабочего времени выполняется через `awatch-agent-rs.exe`; - collector guard выполняется через `aw-windows-telemetry.exe collector-guard`. Оставшийся рабочий PowerShell runtime на момент проверки: - сгенерированный recovery loop; - сгенерированный per-user launcher; - Hayabusa/EVTX upload path. ## Runtime и generated runtime | Файл | Класс | Фактическая роль | Штатный путь сейчас | Решение | |---|---|---|---|---| | `C:\ProgramData\AWatch-rus\launch-watchers.ps1` | `runtime` | Сгенерированный пользовательский launcher для watchers/collectors. | Запускается через скрытый VBS-wrapper из per-user Scheduled Tasks. | Оставить до замены launcher-а на Rust/service-friendly task reconciler. | | `C:\ProgramData\AWatch-rus\recovery-loop.ps1` | `runtime` | Сгенерированный recovery loop. | Запускается через скрытый VBS-wrapper из recovery Scheduled Task. | Мигрировать в Rust recovery/guard, затем убрать PowerShell runtime. | | `windows/export-upload-hayabusa-to-aw-server.ps1` | `runtime` | Выгрузка Hayabusa/EVTX evidence на сервер. | Используется отдельной Scheduled Task. | P1: перенести в `aw-windows-telemetry.exe` или отдельный Rust EXE. До миграции не удалять. | | `windows/export-evtx-for-hayabusa.ps1` | `runtime` | Экспорт EVTX для Hayabusa upload path. | Используется как зависимость Hayabusa upload path. | P1: перенести bounded EVTX export в Rust. До миграции не удалять. | ## Fallback после Rust-first миграции | Файл | Класс | Фактическая роль | Штатный путь сейчас | Решение | |---|---|---|---|---| | `windows/worktime-session-collector.ps1` | `fallback` | Legacy worktime/RDP collector. | `awatch-agent-rs.exe` является основным runtime. | Оставить до отключения `worktimeLegacyFallbackEnabled` после acceptance gate. | | `windows/browser-domains-native-collector.ps1` | `fallback` | Legacy browser/domain collector. | `aw-windows-telemetry.exe browser-domains-collector` является основным runtime. | Оставить как rollback/reference до расширенной parity-проверки. | | `windows/dlp-endpoint-signals-collector.ps1` | `fallback` | Legacy DLP endpoint collector. | `aw-windows-telemetry.exe dlp-endpoint-collector` является основным runtime. | Оставить как rollback/reference до расширенной parity-проверки. | | `windows/file-operations-collector.ps1` | `fallback` | Legacy file operations collector. | `aw-windows-telemetry.exe file-operations-collector` является основным runtime. | Оставить как rollback/reference до расширенной parity-проверки. | | `windows/dlp-policy-client.ps1` | `fallback` | Получение policy для PowerShell DLP collector. | Нужен только если включается legacy DLP collector. | Удалять вместе с PowerShell DLP fallback, не раньше. | | `windows/export-upload-file-1c-telemetry.ps1` | `fallback` | Legacy 1C/file telemetry upload. | `aw-windows-telemetry.exe file1c-upload` является основным runtime. | Оставить rollback до нескольких успешных циклов production upload. | | `windows/sync-dlp-evidence-artifacts.ps1` | `fallback` | Legacy DLP evidence sync. | `aw-windows-telemetry.exe dlp-evidence-sync` является основным runtime. | Оставить rollback до закрепления Rust evidence sync. | | `windows/aw-collector-guard.ps1` | `fallback` | Legacy collector guard. | `aw-windows-telemetry.exe collector-guard` является основным runtime. | Оставить rollback до подтверждения guard/recovery parity. | | `windows/aw-standalone-service.ps1` | `fallback` | Legacy standalone supervisor wrapper. | Не является целевым runtime для нового Rust-first контура. | Держать только для отката старого install-kit, затем удалить. | ## Installer, repair и operator layer | Файл | Класс | Фактическая роль | Штатный путь сейчас | Решение | |---|---|---|---|---| | `windows/ActivityWatch.Windows.Common.psm1` | `installer` | Общие PowerShell-функции для установки/обслуживания. | Используется установочными и repair-скриптами. | Оставить до замены installer layer. | | `windows/ActivityWatch.Windows.Common.psd1` | `installer` | Manifest общего PowerShell-модуля. | Используется вместе с `.psm1`. | Оставить до замены installer layer. | | `windows/deploy-single-user.ps1` | `installer` | Установка для одного пользователя. | Установочный сценарий, не постоянный runtime. | Постепенно заменить Rust bootstrap/Ansible action. | | `windows/deploy-domain-users.ps1` | `installer` | Установка для доменных пользователей. | Установочный сценарий, не постоянный runtime. | Постепенно заменить Rust bootstrap/Ansible action. | | `windows/deploy-ensemble.ps1` | `installer` | Оркестрация Windows-компонентов установки. | Установочный сценарий, не постоянный runtime. | Постепенно заменить Rust deploy coordinator или Ansible wrapper. | | `windows/install-standalone-service.ps1` | `installer` | Установка standalone service. | Установочное действие. | Заменить Rust installer/bootstrap CLI. | | `windows/install-collector-guard-service.ps1` | `installer` | Установка collector guard service. | Установочное действие. | Заменить Rust installer/bootstrap CLI. | | `windows/install-dlp-client.ps1` | `installer` | Установка DLP client части. | Установочное действие. | Заменить Rust installer/bootstrap CLI. | | `windows/migrate-awatch-rus-paths.ps1` | `installer` | Миграция путей AWatch-rus. | Разовое migration/repair действие. | Заменить Rust migration CLI с backup/dry-run. | | `windows/rebuild-worktime-tasks.ps1` | `installer` | Пересборка worktime Scheduled Tasks. | Repair/installer действие. | Заменить Rust task reconciliation CLI. | | `windows/fix-session-watchers.ps1` | `installer` | Ремонт watcher-ов по сессиям. | Repair действие. | Заменить Rust repair subcommand. | | `windows/cleanup-disc-sessions.ps1` | `installer` | Очистка устаревших disconnected-session артефактов. | Maintenance/repair действие. | Заменить Rust maintenance subcommand. | | `windows/hardening-recovery.ps1` | `installer` | Восстановление и hardening после повреждения установки. | Emergency repair, не постоянный runtime. | Заменить Rust recovery CLI; опасные действия только через явный apply-режим. | | `windows/validate-deployment.ps1` | `installer` | Проверка установки. | Частично заменен `aw-windows-telemetry.exe validate-deployment`. | Расширить Rust validation до полной parity, затем удалить `.ps1`. | | `windows/audit-cryptopro.ps1` | `installer` | Аудит CryptoPro/сертификатного окружения. | Операторская проверка, не постоянный runtime. | Оставить до появления Rust audit CLI или отдельного Ansible-only gate. | | `scripts/powershell/detmir-powershell-profile.ps1` | `installer` | Операторский PowerShell profile/helper. | Не является runtime AWatch-rus. | Оставить как operator helper, либо заменить документацией/CLI aliases. | ## Obsolete / parked | Файл | Класс | Фактическая роль | Штатный путь сейчас | Решение | |---|---|---|---|---| | `windows/run-user1-probe.ps1` | `obsolete` | Ручной диагностический probe одного пользователя. | Не нужен для штатного runtime. | Удалить после проверки отсутствия ссылок в runbook/CI/tasks. | | `.pssa_run.ps1` | `obsolete` | Локальный helper для PSScriptAnalyzer. | Не является продуктовым компонентом. | Удалить после завершения PowerShell retirement или заменить CI-командой. | | `windows/email-outbound-collector.ps1` | `obsolete` | Legacy outbound email metadata collector. | Функция не включена в текущий runtime. | Не возвращать в production как PowerShell; при необходимости реализовывать заново в Rust с отдельным privacy/legal gate. | ## Правила дальнейшей миграции Полное удаление PowerShell не входит в текущий pilot freeze. Это должна быть отдельная задача после подтверждения Rust parity и отката. 1. Не удалять `runtime` и `fallback` скрипты без burn-in/canary/rollback gate, acceptance gate и проверенного rollback-плана. 2. Любой PowerShell runtime, который остается в Scheduled Tasks или Services, должен иметь явный владелец, причину сохранения и целевой Rust replacement. 3. `installer`-скрипты можно заменять постепенно: сначала Rust dry-run и structured report, затем apply-режим, затем удаление PowerShell layer. 4. `obsolete`-скрипты удалять только после `rg`-проверки ссылок, проверки Scheduled Tasks/Services и контрольного deploy/validation прогона. 5. Новые runtime-функции не добавлять на PowerShell. Для runtime, long-running collectors, upload, guard и validation целевой путь: Rust EXE или service. 6. Pilot freeze не является основанием для автоматического удаления PowerShell layer: оставшиеся runtime/fallback пути сохраняются до подтвержденной стабильности Rust replacement, canary-наблюдения и документированного отката.