34 KiB
34 KiB
AWatch-rus: план развития на следующие 6-12 месяцев
Дата аудита: 2026-07-01.
Статус: development planning после анализа текущего репозитория. Документ не добавляет новые продуктовые функции и не меняет runtime-поведение. Цель - снизить эксплуатационные, release, security и maintainability риски без нарушения обратной совместимости.
Границы плана
- Production уже существует; текущий DetMir контур рассчитан примерно на 5 RDP пользователей.
- Рабочие подсистемы не переписываются. Все изменения должны быть инкрементальными, проверяемыми и откатываемыми.
- DLP runtime остается
core_only/disabledпо умолчанию;lightвключается только вручную после resource preflight. - Loki и always-on Velociraptor не включаются как часть этого плана.
- PowerShell fallback на Windows сохраняется до доказанной parity и burn-in Rust-пути.
- GitHub остается public mirror validation; release evidence для российского контура должен формироваться отдельно.
Фактическое состояние репозитория
- Основной runtime слой стал Rust-first:
adk-rust/содержит 58 workspace crates; локальныйcargo metadata --lockedразрешает 349 пакетов. - Rust dependency hygiene уже включен:
cargo audit --deny warnings,cargo deny,cargo machete --with-metadata,cargo tree --duplicatesесть в workflow или локальных gate. Текущий аудит:cargo auditиcargo macheteчистые,cargo denyпроходит, но оставляет 36banswarnings. - CI уже покрывает Rust, docs/registry, smoke, operational maturity,
dependency hygiene, security scan и release binary build. Есть drift:
несколько workflows используют floating
stable, хотяrust-toolchain.tomlзакрепляет1.94.0. - DetMir DLP resource guardrails реализованы: runtime disabled/core-only by
default,
detmir-dlp-load-guard, documented rollback, skipped DLP buckets в smoke считаются нормой. - Security Finding Inbox, Hayabusa и Velociraptor оформлены как optional findings/forensics sources и не являются hot-path зависимостью Workforce.
- Документация registry/governance сильная, но
docs/PROJECT_STATUS_RU.mdиdocs/RESIDUAL_RISKS_RU.mdфиксируют открытые gaps: Gitea restore drill, Russian build-runner, первый release evidence build, legal/rightsholder package, external review evidence. - Самые крупные maintainability hotspots:
adk-rust/crates/detmir-portal/src/main.rs- 14200 строк,adk-rust/crates/aw-windows-telemetry/src/main.rs- 6411 строк,proxmox/tsj_guardian_bot.py- 4610 строк,adk-rust/crates/worktime-api/src/main.rs- 3988 строк,ansible/deploy_aw_server.yml- 3099 строк. - Найдены точные дубликаты скриптов:
scripts/aw-contour-diag.sh=scripts/detmir-full-diagnostics/aw-contour-diag.sh;scripts/check_production_inventory_placeholders.sh=scripts/detmir-full-diagnostics/check_production_inventory_placeholders.sh. - Найден security hygiene gap: ClickHouse/1C ops wrappers передают
CLICKHOUSE_PASSWORDчерез--password, что раскрывает секрет в process argv на хосте.
P0 - критично для production
P0-1. Gate фактической свежести production Rust-бинарников
- Почему нужно:
scripts/check_detmir_rust_release_artifacts.shпроверяет наличие локальных release artifacts, но не доказывает, что production service/timer/Windows task реально запускает тот же binary SHA256. - Риск: stale бинарник в production может отличаться от проверенного кода, усложнить rollback и скрыть регрессию в high-load контуре.
- Ожидаемый эффект: воспроизводимая цепочка
service/timer/task -> binary path -> crate -> local artifact -> prod sha256 -> git sha. - Сложность: средняя.
- Объем работ: 3-5 инженерных дней.
- Затрагиваемые файлы:
scripts/check_detmir_rust_release_artifacts.sh,scripts/package_rust_release_binaries.py,scripts/detmir-full-diagnostics/,adk-rust/crates/detmir-readiness/,windows/validate-deployment.ps1,docs/DETMIR_CURRENT_STATE_RU.md,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md. - Критерии приемки:
команда dry-run выводит все реально задействованные binaries на
10.10.10.2,10.10.10.13и Windows RDP host; для каждого binary есть crate, role, unit/timer/task, prod SHA256 и local release SHA256; gate падает при missing/stale binary; проверка не включает heavy DLP, Loki или always-on Velociraptor; rollback path документирован и проверен на одном canary binary.
P0-2. Bounded retention для state, evidence, queues и diagnostic output
- Почему нужно: DLP/evidence/backlog/diagnostic контуры уже имеют guardrails, но retention/cleanup policy для исторических artifacts остается отдельной future work; disk exhaustion на Proxmox/AW server является прямым outage риском.
- Риск: накопление JSONL queues, screenshots, Hayabusa drops, diagnostic runs, ClickHouse landing files или локальных state snapshots может забить диск и остановить ingestion, portal или ActivityWatch.
- Ожидаемый эффект: предсказуемое потребление диска, безопасный dry-run cleanup, понятный rollback через backup/hold rules.
- Сложность: средняя.
- Объем работ: 4-7 инженерных дней.
- Затрагиваемые файлы:
adk-rust/crates/aw-prune-local-state/,scripts/detmir-full-diagnostics/,scripts/detmir_dlp_warehouse_sync.sh,aw-server/logrotate.conf,windows/validate-deployment.ps1,adk-rust/crates/aw-windows-telemetry/,docs/DLP_OPTIONAL_RUNTIME_RU.md,docs/DLP_RESOURCE_PROFILES_RU.md,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md. - Критерии приемки:
есть единая retention matrix по путям, владельцам, age/size limits и dry-run;
cleanup never follows untrusted paths and only touches allowlisted roots;
Windows queues имеют max-age/max-size validation;
skipped DLP buckets при
AW_DLP_ENABLED=falseне считаются ошибкой; smoke показывает, что cleanup не удаляет active state и не требует downtime.
P0-3. Убрать секреты ClickHouse/1C из process argv
- Почему нужно:
clickhouse-1c/ops/run_*.shпередают пароль как--password "${CLICKHOUSE_PASSWORD}"; этот аргумент виден через process list локальному пользователю или диагностике. - Риск: утечка ClickHouse credentials с возможностью чтения/изменения production analytics data.
- Ожидаемый эффект: секреты передаются через env/config file descriptor или другой non-argv канал; logs и error output остаются redacted.
- Сложность: низкая-средняя.
- Объем работ: 2-4 инженерных дня.
- Затрагиваемые файлы:
clickhouse-1c/ops/run_ingest_cycle.sh,clickhouse-1c/ops/run_manager_brief.sh,clickhouse-1c/ops/run_recovery_brief.sh,clickhouse-1c/ops/run_company_registry_bindings_refresh.sh,clickhouse-1c/ops/run_company_intelligence_refresh.sh,clickhouse-1c/ops/check_ingest_freshness.sh,clickhouse-1c/ai/*.py,clickhouse-1c/etl/*.py,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md. - Критерии приемки:
rg -- '--password \"\\$\\{CLICKHOUSE_PASSWORD\\}\"' clickhouse-1cничего не находит в runtime wrappers; smoke черезpsдоказывает отсутствие password в argv; существующие env-based deployments остаются совместимыми; failed auth logs не печатают password;bash -n clickhouse-1c/ops/*.shи affected Python smoke проходят.
P1 - желательно выполнить до следующего релиза
P1-1. Выровнять Rust toolchain во всех CI workflows
- Почему нужно:
rust-toolchain.tomlзакрепляет1.94.0, но.github/workflows/ci.yml,security.yml,coverage.yml,dependency-hygiene.ymlиrelease-assets.ymlиспользуют floatingdtolnay/rust-toolchain@stable. - Риск: CI и release runner могут собирать разные версии компилятора, что снижает воспроизводимость и усложняет анализ regressions.
- Ожидаемый эффект: единый compiler baseline для local, GitHub mirror и будущего российского build-runner.
- Сложность: низкая.
- Объем работ: 1-2 инженерных дня.
- Затрагиваемые файлы:
rust-toolchain.toml,.github/workflows/ci.yml,.github/workflows/security.yml,.github/workflows/coverage.yml,.github/workflows/dependency-hygiene.yml,.github/workflows/release-assets.yml,.github/workflows/rust-binary-build.yml,.github/workflows/rust-workspace.yml,docs/QUALITY_STATUS_RU.md. - Критерии приемки:
все blocking Rust jobs используют
rust-toolchain.tomlили тот же explicit channel; nightly остается только для advisorycargo udeps; CI check names не меняются; локально и в CI проходятcargo fmt,cargo test,cargo clippy -D warnings.
P1-2. Staged triage для duplicate/deprecated Rust dependencies
- Почему нужно:
cargo denyпроходит, ноcargo tree --duplicatesпоказывает дублиbitflags,getrandom,hashbrown,mio,zip,windows-*;serde_yaml 0.9.34+deprecatedуже зафиксирован как средний риск. - Риск: supply-chain surface и binary size растут, а устаревшие crates могут стать будущим vulnerability blocker.
- Ожидаемый эффект: baseline по допустимым дублям, запрет новых необоснованных дублей, replacement path для deprecated crates.
- Сложность: средняя.
- Объем работ: 4-8 инженерных дней.
- Затрагиваемые файлы:
adk-rust/Cargo.toml,adk-rust/Cargo.lock,deny.toml,.github/workflows/dependency-hygiene.yml, crates usingserde_yaml,calamine,notify,zip,windows-sys,docs/THIRD_PARTY_LICENSES_RU.md,docs/QUALITY_STATUS_RU.md. - Критерии приемки:
для каждого duplicate family есть decision: keep with reason, update, or
remove;
cargo audit --deny warningsиcargo deny ...проходят; новые duplicates без allowlist/обоснования блокируются; replacement plan дляserde_yamlне ломает существующие YAML configs; изменения dependency graph идут отдельными PR, не смешиваются с runtime features.
P1-3. Load regression harness для portal/worktime/report hot paths
- Почему нужно:
docs/PROJECT_STATUS_RU.mdпрямо фиксирует residual risk: full report/snapshot prewarm может быть CPU/IO дорогим. Сейчас production малый, но расширение users/events без бюджета нагрузки рискованно. - Риск: рост RDP users или history window приводит к slow portal, stale cache, ClickHouse/AW amplification или datastore lock pressure.
- Ожидаемый эффект: измеримые budgets для p95 latency, memory, query count, cache hit/stale behavior и degradation semantics.
- Сложность: средняя-высокая.
- Объем работ: 1-2 недели.
- Затрагиваемые файлы:
scripts/operational-maturity-check.mjs,scripts/awatch-production-hardening-smoke.mjs,adk-rust/crates/detmir-portal/,adk-rust/crates/worktime-api/,adk-rust/crates/worktime-prewarm/,adk-rust/crates/aw-contour-smoke/,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md,docs/QUALITY_STATUS_RU.md. - Критерии приемки:
synthetic dataset проверяет минимум 5/20/50 users without prod data;
harness фиксирует p95 latency, max RSS, query count and stale-cache decisions;
disconnected RDP sessions and event-driven buckets не дают false-fail;
AW_DLP_ENABLED=falseprofile respected; heavy job остается scheduled/advisory, blocking smoke остается быстрым.
P1-4. Windows Rust validation parity before reducing PowerShell runtime
- Почему нужно:
docs/POWERSHELL_SCRIPT_STATUS_MATRIX_RU.mdпоказывает, что Rust overlay уже основной для части collectors, ноvalidate-deployment.ps1, Hayabusa upload и некоторые recovery paths остаются fallback/runtime. - Риск: преждевременное удаление PowerShell fallback ухудшит recovery на Windows Server 2019 и localized RDP sessions.
- Ожидаемый эффект: доказанная parity Rust validation, safe fallback policy и меньше runtime drift.
- Сложность: средняя.
- Объем работ: 1-2 недели.
- Затрагиваемые файлы:
adk-rust/crates/aw-windows-telemetry/,windows/validate-deployment.ps1,windows/export-upload-hayabusa-to-aw-server.ps1,windows/ActivityWatch.Windows.Common.psm1,ansible/deploy_aw_windows.yml,docs/POWERSHELL_SCRIPT_STATUS_MATRIX_RU.md,docs/POWERSHELL_TO_RUST_ROADMAP_RU.md. - Критерии приемки:
Rust
validate-deploymentпокрывает все 7 секций PowerShell validation; CP866/localized user handling covered by tests; canary run сравнивает Rust и PowerShell reports на одном RDP host; PowerShell fallback остается documented rollback; no removal before burn-in evidence.
P1-5. Российский build-runner и первый release evidence build
- Почему нужно:
ROADMAP.md,docs/PROJECT_STATUS_RU.mdиdocs/RESIDUAL_RISKS_RU.mdфиксируют, чтоawatch-build-01planned, а первый release evidence build pending. - Риск: registry/release package cannot be claimed reproducible in target Russian contour.
- Ожидаемый эффект: проверяемый release package: source archive, binaries, SBOM, SHA256SUMS, cargo metadata/tree, logs, manifest.
- Сложность: средняя.
- Объем работ: 3-6 инженерных дней плюс инфраструктурное окно.
- Затрагиваемые файлы:
scripts/build_release_evidence.sh,scripts/check_release_evidence.sh,scripts/verify_release_assets.sh,docs/registry/RU_BUILD_RUNNER_READINESS_RU.md,docs/registry/BUILD_RUNNER_SETUP_RUNBOOK_RU.md,docs/registry/RELEASE_EVIDENCE_RUNBOOK_RU.md,docs/registry/registry-evidence-manifest.json. - Критерии приемки:
build-runner имеет documented OS/toolchain;
release evidence build выполнен не на GitHub runner;
scripts/check_release_evidence.shпроходит; artifacts имеют SHA256 и manifest; public docs не заявляют registry completion раньше legal approval.
P1-6. Gitea backup restore drill
- Почему нужно: backup и SHA256 documented, но
restore_tested=falseостается открытым residual risk. - Риск: disaster recovery process может оказаться неполным только во время инцидента.
- Ожидаемый эффект: доказанный restore на отдельном хосте и понятный RTO/RPO baseline.
- Сложность: средняя.
- Объем работ: 2-4 инженерных дня.
- Затрагиваемые файлы:
docs/registry/GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU.md,docs/registry/registry-evidence-manifest.json,scripts/registry_readiness_check.sh,docs/PROJECT_STATUS_RU.md,docs/RESIDUAL_RISKS_RU.md. - Критерии приемки:
restore выполнен на отдельном сервере;
checksums, logs, repository accessibility и rollback notes сохранены;
manifest обновлен с
restore_tested=true; recovery evidence не содержит секреты.
P1-7. Hayabusa upload path: Rust helper parity and operational proof
- Почему нужно: матрица PowerShell-to-Rust помечает
windows/export-upload-hayabusa-to-aw-server.ps1как P1 runtime wrapper. Hayabusa is optional, but it is a security evidence path. - Риск: Windows PowerShell encoding, task principal или SSH wrapper drift ломает forensics upload без явной compile-time проверки.
- Ожидаемый эффект: Rust helper covers upload, sidecar metadata, checksum and server drop-zone contract; PowerShell remains fallback.
- Сложность: средняя.
- Объем работ: 5-8 инженерных дней.
- Затрагиваемые файлы:
adk-rust/crates/aw-windows-telemetry/,adk-rust/crates/hayabusa-tools/,windows/export-upload-hayabusa-to-aw-server.ps1,aw-server/hayabusa/aw-hayabusa.sh,ansible/deploy_aw_windows.yml,docs/POWERSHELL_SCRIPT_STATUS_MATRIX_RU.md,docs/POWERSHELL_TO_RUST_ROADMAP_RU.md. - Критерии приемки:
helper creates identical server-side intake result on fixture;
BOM/backslash/path traversal tests preserved;
task principal remains interactive Administrator where required;
server
aw-hayabusa-drop.pathprocessing stays optional and fail-closed; no automatic remediation is introduced.
P2 - улучшения архитектуры и сопровождаемости
P2-1. Инкрементальная декомпозиция крупных runtime modules
- Почему нужно: несколько production-critical files слишком крупные для
надежного review и локального reasoning, особенно
detmir-portal/main.rsиaw-windows-telemetry/main.rs. - Риск: высокий change-coupling, труднее делать точечные fixes и находить regressions.
- Ожидаемый эффект: smaller modules by domain, faster review, focused tests.
- Сложность: средняя-высокая.
- Объем работ: 2-4 недели несколькими малыми PR.
- Затрагиваемые файлы:
adk-rust/crates/detmir-portal/src/main.rs,adk-rust/crates/detmir-portal/src/*,adk-rust/crates/aw-windows-telemetry/src/main.rs,adk-rust/crates/worktime-api/src/main.rs,proxmox/tsj_guardian_bot.py,clickhouse-1c/ai/company_intelligence_api.py. - Критерии приемки:
каждый PR только moves/extracts one bounded domain;
public API, config names, systemd units and task names unchanged;
tests before/after identical;
no new dependencies without written justification;
line count decreases in target
main.rsfiles without behavioral rewrite.
P2-2. Consolidate exact duplicate diagnostic scripts
- Почему нужно: две пары скриптов имеют identical SHA256, что создает риск будущего drift при исправлениях.
- Риск: one copy fixed, bundled copy stale; diagnostics disagree.
- Ожидаемый эффект: single source of truth while preserving existing paths.
- Сложность: низкая.
- Объем работ: 1-2 инженерных дня.
- Затрагиваемые файлы:
scripts/aw-contour-diag.sh,scripts/detmir-full-diagnostics/aw-contour-diag.sh,scripts/check_production_inventory_placeholders.sh,scripts/detmir-full-diagnostics/check_production_inventory_placeholders.sh,scripts/detmir-full-diagnostics/detmir-full-diagnostics.sh,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md. - Критерии приемки: оба старых paths продолжают работать; есть один canonical implementation или generated copy check; CI/quality gate ловит future drift; shellcheck/bash syntax pass.
P2-3. Split oversized Ansible deployment playbook without behavior change
- Почему нужно:
ansible/deploy_aw_server.ymlимеет 3099 строк; это усложняет review и безопасные partial changes. - Риск: accidental deploy behavior changes in unrelated task blocks.
- Ожидаемый эффект: role/include structure with same task order and clearer ownership.
- Сложность: средняя.
- Объем работ: 1-2 недели.
- Затрагиваемые файлы:
ansible/deploy_aw_server.yml,ansible/roles/,ansible/group_vars/,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md. - Критерии приемки:
ansible-playbook --syntax-checkpasses;--list-tasksbefore/after is reviewed for ordering parity; no default vars changed; rollback is reverting includes to previous single playbook.
P2-4. Bound 1C ingest memory and file processing profile
- Почему нужно:
adk-rust/crates/aw-1c-ingest/src/main.rscurrently reads rows intoVecand builds large JSON batches; acceptable for pilot, but risky for larger exports. - Риск: memory spikes, long transaction windows, ClickHouse insert amplification on larger 1C files.
- Ожидаемый эффект: chunked processing where practical, explicit limits and predictable failure mode for oversized files.
- Сложность: средняя-высокая.
- Объем работ: 1-2 недели.
- Затрагиваемые файлы:
adk-rust/crates/aw-1c-ingest/src/main.rs,clickhouse-1c/etl/config.yml,clickhouse-1c/etl/config.example.yml,clickhouse-1c/sql/,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md,docs/QUALITY_STATUS_RU.md. - Критерии приемки: synthetic large CSV/XLSX fixture documents max RSS and runtime; oversized input fails closed with clear diagnostic; existing small DetMir files produce identical rows; ClickHouse insert batch size is configurable and bounded.
P2-5. Systematic command execution boundary audit
- Почему нужно:
detmir-portalalready validates shell probe commands and kills process groups on timeout, but other operational binaries also execute shell/commands (aw-slo-monitor,diag-and-manual-restart, quality tooling). - Риск: future config drift can reintroduce command injection, secrets in argv or incomplete timeout cleanup.
- Ожидаемый эффект: documented command execution policy and shared tests for allowlisted commands, timeouts, redaction and process-group cleanup.
- Сложность: средняя.
- Объем работ: 4-7 инженерных дней.
- Затрагиваемые файлы:
adk-rust/crates/detmir-portal/src/main.rs,adk-rust/crates/detmir-portal/src/production/limits.rs,adk-rust/crates/aw-slo-monitor/src/main.rs,adk-rust/crates/diag-and-manual-restart/src/main.rs,adk-rust/crates/quality-gate/src/main.rs,docs/SECURITY_OPERATIONS_RUNBOOK_RU.md. - Критерии приемки: every runtime command source is classified as constant, allowlisted config or operator-only diagnostic; tests reject shell control operators where config-driven; timeout tests verify child/grandchild cleanup; logs never include secrets from env or args.
P2-6. Install kit artifact reproducibility and stale payload checks
- Почему нужно: install kit is critical for Windows deployment, includes large LFS artifacts, and must not silently ship stale payloads.
- Риск: Windows production receives an older collector or mismatched config while repo checks pass.
- Ожидаемый эффект: deterministic installer evidence and stronger install-kit-vs-repo validation.
- Сложность: средняя.
- Объем работ: 5-8 инженерных дней.
- Затрагиваемые файлы:
windows/installkit/innosetup/,adk-rust/crates/check-install-kit-vs-repo/,adk-rust/crates/rebuild-install-kit/,adk-rust/crates/validate-install-kit/,adk-rust/crates/verify-innosetup-installer/,scripts/rebuild_install_kit.sh,docs/INSTALL_KIT_RUNBOOK_RU.md. - Критерии приемки: installer manifest lists exact source commit and payload SHA256; validation fails on stale collector payload; generated artifacts are not confused with source files; Windows task names and config schema remain backward compatible.
P2-7. Standardize operational metrics contract across Rust daemons
- Почему нужно: individual services expose useful fields, but there is no consistent minimal metrics/diagnostics contract for every long-running Rust daemon.
- Риск: incident response depends on service-specific knowledge; regressions in one daemon are harder to compare with another.
- Ожидаемый эффект: consistent
/health, structured log fields and optional metrics snapshots for status, cache, queue, retry, timeout and resource pressure. - Сложность: средняя.
- Объем работ: 2-3 недели staged by service.
- Затрагиваемые файлы:
adk-rust/crates/aw-rus-healthd/,adk-rust/crates/worktime-api/,adk-rust/crates/detmir-portal/,adk-rust/crates/dlp-*,adk-rust/crates/aw-1c-ingest/,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md,grafana/. - Критерии приемки: minimal contract documented; each daemon reports version/build, config profile, degraded reason and queue pressure where applicable; existing endpoints remain backward compatible; Grafana/dashboard changes are additive.
P3 - долгосрочные улучшения
P3-1. Coverage thresholds after baseline review
- Почему нужно: coverage workflow exists, but roadmap explicitly says threshold should be added after baseline review.
- Риск: coverage can silently decline while CI remains green.
- Ожидаемый эффект: gradual coverage floor without slowing blocking jobs.
- Сложность: средняя.
- Объем работ: 1-2 недели.
- Затрагиваемые файлы:
.github/workflows/coverage.yml,adk-rust/,docs/QUALITY_STATUS_RU.md,docs/REVIEW_CHECKLIST_RU.md. - Критерии приемки: initial threshold is based on measured baseline, not arbitrary target; critical crates get stricter per-crate goals; generated/fixture code excluded consistently; threshold moves from advisory to blocking only after stable history.
P3-2. Russian OS compatibility matrix
- Почему нужно: roadmap keeps Russian OS compatibility as planned validation.
- Риск: deployment assumptions can fail on target OS variants only after a customer deployment attempt.
- Ожидаемый эффект: explicit supported/unsupported OS matrix and installation evidence.
- Сложность: средняя-высокая.
- Объем работ: 2-4 недели depending on available test hosts.
- Затрагиваемые файлы:
docs/registry/,docs/INSTALLATION.md,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md,ansible/,windows/,windows/installkit/. - Критерии приемки: matrix lists OS version, role, test date, result and limitations; unsupported combinations are documented explicitly; no production defaults are changed only for compatibility claims.
P3-3. Reduce single-maintainer operational risk
- Почему нужно:
docs/RESIDUAL_RISKS_RU.mdidentifies one-main-developer risk and pending reviewed PR evidence. - Риск: incident response and release continuity depend too much on one person.
- Ожидаемый эффект: documented ownership, review evidence and handoff paths.
- Сложность: организационная, средняя.
- Объем работ: 1-3 месяца part-time.
- Затрагиваемые файлы:
.github/CODEOWNERS,.github/pull_request_template.md,docs/PR_REVIEW_WORKFLOW_RU.md,docs/PR_REVIEW_EVIDENCE_RU.md,docs/REVIEW_CHECKLIST_RU.md,docs/RESIDUAL_RISKS_RU.md. - Критерии приемки: at least one reviewed PR merged without bypass; release branch review policy documented; emergency maintainer handoff checklist exists; residual risk status updated only with real evidence.
P3-4. Historical docs and naming hygiene
- Почему нужно: older docs still reference staged statuses, older check names or public-readiness context; this increases cognitive load for maintainers.
- Риск: operators follow outdated docs or confuse GitHub public mirror checks with Russian release evidence.
- Ожидаемый эффект: clearer current-state docs and archived historical records.
- Сложность: низкая-средняя.
- Объем работ: 3-6 инженерных дней.
- Затрагиваемые файлы:
docs/PROJECT_STATUS_RU.md,docs/ROADMAP_CONFORMANCE_AUDIT_RU.md,docs/QUALITY_STATUS_RU.md,docs/registry/,README.md,ROADMAP.md. - Критерии приемки: current-state docs contain current required check names; historical docs are marked historical and not operational runbooks; no product claims are strengthened without evidence; broken/stale links are corrected.
P3-5. Long-horizon capacity sizing guide
- Почему нужно: current DetMir production is small; future deployments need sizing guidance for AW SQLite, ClickHouse, Influx/Grafana, DLP light profile and Windows collector load.
- Риск: deployments scale by guesswork and overload the small-Proxmox pattern.
- Ожидаемый эффект: sizing table by users/events/day, retention, disk, CPU/RAM and optional security contours.
- Сложность: средняя.
- Объем работ: 2-4 недели after P1 load harness data exists.
- Затрагиваемые файлы:
docs/DLP_RESOURCE_PROFILES_RU.md,docs/OPERATIONS_VALIDATION_RUNBOOK_RU.md,docs/DETMIR_CURRENT_STATE_RU.md,grafana/,scripts/operational-maturity-check.mjs. - Критерии приемки: guide is based on measured data, not estimates only; separate profiles exist for 5, 20, 50 and 100 users; optional DLP/Hayabusa/Velociraptor resource costs are explicit; default production profile remains conservative.
Не включено, потому что уже реализовано
- Включение dependency hygiene automation:
cargo machete,cargo deny,cargo audit,cargo tree --duplicates, advisorycargo udepsуже есть в workflow. - Удаление текущих unused Rust dependencies: текущий
cargo machete --with-metadataне нашел unused dependencies. - DetMir DLP light/core-only guardrails: runtime control, resource profiles, load guard and skipped-bucket semantics already implemented.
- Security Finding Inbox and optional Hayabusa/Velociraptor findings path: schema, portal/API and fail-closed executor path already documented as optional and approval-driven.
- Operational maturity smoke workflow: already exists and explicitly avoids heavy DLP/Loki/always-on Velociraptor.
- Branch protection/CODEOWNERS/PR checklist basics: already documented; the remaining work is evidence and regular use, not creating the mechanism.
Проверки, использованные для аудита
cd /mnt/usb_hdd2/Projects/ActivityWatch-Russian/adk-rust
export CARGO_TARGET_DIR=/home/igor/.cache/detmir-adk-rust-target
cargo metadata --locked --format-version 1
cargo tree --duplicates --locked
cargo audit --deny warnings
cargo deny --manifest-path Cargo.toml check --config ../deny.toml --hide-inclusion-graph --show-stats
cargo machete --with-metadata
cd /mnt/usb_hdd2/Projects/ActivityWatch-Russian
rg -n "dtolnay/rust-toolchain@(stable|[0-9])|rust-toolchain" .github/workflows rust-toolchain.toml
rg -n "CLICKHOUSE_PASSWORD|--password" clickhouse-1c/ops clickhouse-1c/ai clickhouse-1c/etl
sha256sum scripts/aw-contour-diag.sh scripts/detmir-full-diagnostics/aw-contour-diag.sh
sha256sum scripts/check_production_inventory_placeholders.sh scripts/detmir-full-diagnostics/check_production_inventory_placeholders.sh
wc -l adk-rust/crates/detmir-portal/src/main.rs adk-rust/crates/aw-windows-telemetry/src/main.rs proxmox/tsj_guardian_bot.py adk-rust/crates/worktime-api/src/main.rs ansible/deploy_aw_server.yml