- docs/ai/: stable, repo-verified context - README, architecture, tech-stack, edge-cases, plan (confirmed active work only), migration-tofu (the blue-green OpenTofu migration runbook and per-service findings), legacy-warning, links. - AGENTS.md: slimmed to a working contract that points at docs/ai instead of restating it; CLAUDE.md is an adapter that @-includes it. - README.md, ansible/README.md, ansible/roles/README.md, roles/lxc_docker_host/README.md: bring wording in line with the current control plane (Makefile entry point, registry, tofu, memoir-bot gone). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
4.6 KiB
4.6 KiB
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помечает targetmonitoringкак frozen и требуетCONFIRM=1; roleuptime_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-*.ymldead 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.