docs: AI project context (docs/ai) and repository documentation refresh

- 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
This commit is contained in:
Dmitry
2026-09-03 07:06:10 +03:00
co-authored by Claude Sonnet 5
parent 5e27ba2513
commit d2e1e6876a
13 changed files with 1955 additions and 377 deletions
+75
View File
@@ -0,0 +1,75 @@
# 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`.