- 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
76 lines
4.6 KiB
Markdown
76 lines
4.6 KiB
Markdown
# 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`.
|