# Legacy и fragile boundaries Этот файл не является backlog. Он предотвращает случайную замену active behavior более новым, старым или внешне похожим кодом без отдельного решения. ## Исторический Archive - Path: `archive/2026-07-proxmox-migration/`. - Evidence: каталог содержит прежние NixOS, Docker Compose, GitOps, ZeroTier и другие pre-Ansible материалы. - Constraint: не редактировать и не возвращать файлы из archive как active config. - Decision: accepted historical reference; active implementation создается в `ansible/`. ZeroTier удален из active infrastructure 11 июля 2026 года. Active inventory, roles и playbooks его не содержат. ## Frozen Monitoring Stack - Paths: `ansible/roles/monitoring_server/`, `monitoring_exporter/`, `monitoring_blackbox/`, `ansible/playbooks/monitoring.yml`. - Evidence: `ansible/Makefile` помечает target `monitoring` как frozen и требует `CONFIRM=1`; role `uptime_kuma` останавливает `homelab-monitoring`. - Constraint: наличие кода не означает, что Prometheus stack активен. - Decision: defer; Uptime Kuma является active monitoring до нового решения. ## Prototype Roles - Paths: `ansible/roles/lxc_docker_host/`, `ansible/roles/compose_service/`. - Evidence: `ansible/roles/README.md`. `compose_service` с 2026-09-02 вызывается из `playbooks/ru-vps-base.yml` (стек Caddy); `lxc_docker_host` по-прежнему не вызывается ни одним playbook. - Constraint: не считать direct `pve-*.yml` dead code и не мигрировать service как opportunistic cleanup. Миграция меняет runtime, pull, firewall и recreation semantics. - Decision: defer; выполнять отдельно по одному service с backup и health validation. Empty `ansible/roles/base`, `docker` и `ufw` являются остатками ранней структуры, а не active reusable roles. ## Duplicated Service Facts - Paths: service registry, `pve-*.yml`, `pve-backup-jobs.yml`, backup audit defaults, monitoring templates, status playbook и SSH config. - Evidence: реестр потребляют reverse proxy, `ru-vps-base.yml`, backup jobs, backup audit и `validate.yml`; `pve-*.yml`, `status.yml`, monitoring и SSH config всё ещё дублируют значения. - Constraint: изменение VMID/IP/image/backup/monitoring требует сверки оставшихся consumers. `make validate` ловит расхождение реестра с Proxmox по hostname, IP, cores, memory и swap, но не по образам, бэкапам и SSH config. - Decision: accepted risk до отдельной migration/validator задачи. ## Partial Ownership - Caddy installation/container lifecycle на `ru-vps` и provisioning PBS CT 120 не управляются репозиторием. - Hermes playbook подготавливает runtime/proxy, но не deploy самого Hermes application. - UI state Uptime Kuma и AdGuard не полностью декларативен. - Constraint: не заявлять полную reproducibility этих компонентов без проверки внешнего состояния. ## Compatibility Layers - Gitea/Vaultwarden `caddy_legacy_regexp` удаляет старые Caddy sections. Не удалять поля до подтвержденного успешного reverse-proxy migration run. - Grimmory OPDS/KOReader headers и compression behavior являются device compatibility contract, а dual v1/v2 API handling MCP соответствует deployed Grimmory v3.2.4. - OpenVPN использует static-key configuration. OpenVPN 2.6 считает этот режим deprecated; миграция на TLS требует отдельного network change plan. ## Superseded Planning Documents - `current-task.md` - исторический Prometheus plan, не active task. - `tasks/grimmory-deployment-plan.md` - смешивает план и deployment record; текущее состояние проверять по Ansible. - Constraint: не выполнять оставшиеся пункты этих документов автоматически. - Decision: preserve as history; новые approved tasks записывать в `plan.md`.