diff --git a/infrastructure/local-k8s/argocd-contours.md b/infrastructure/local-k8s/argocd-contours.md
new file mode 100644
index 0000000..c123e7b
--- /dev/null
+++ b/infrastructure/local-k8s/argocd-contours.md
@@ -0,0 +1,108 @@
+# Argo CD: `test-contour` и `promtail-test`
+
+На Edge-кластере (`vm-k8s-edge`) в UI Argo CD часто видны два приложения с похожими именами. Это **не два «контура» окружения**, а **зонтик** и один из его **дочерних** релизов.
+
+## Схема (локальная 4-VM ферма)
+
+```mermaid
+flowchart TB
+ subgraph edge [Edge — Argo CD]
+ TC[test-contour
App-of-Apps]
+ PT[promtail-test
Application]
+ BE[backend-test]
+ DO[docs-test]
+ TC --> PT
+ TC --> BE
+ TC --> DO
+ end
+ subgraph apptest [app-test — VM App]
+ PR[Promtail DaemonSet]
+ API[backend / cabinet / …]
+ PT -.->|sync| PR
+ BE -.->|sync| API
+ end
+ subgraph mgmt [Mgmt — Loki]
+ LOKI[Loki]
+ end
+ PR -->|логи| LOKI
+```
+
+| Уровень | Где крутится | Что делает |
+|---------|--------------|------------|
+| **Argo CD** | Edge | Читает Git `sova/sova-deploy`, ветка **`test`** |
+| **test-contour** | Edge, NS `argocd` | Создаёт дочерние `Application` из `argocd/child-apps/test/` |
+| **promtail-test**, **backend-test**, … | CR на Edge | Каждый указывает **куда** деплоить workload |
+| **Поды приложений** | **app-test** | Реальные сервисы в `sova-test`, `monitoring`, … |
+
+---
+
+## `test-contour` — зонтик (App-of-Apps)
+
+**Назначение:** одна точка входа GitOps для всего test-контура. Синхронизирует папку:
+
+`sova-deploy/argocd/child-apps/test/`
+
+**Откуда в UI:**
+
+| Поле | Значение (локально) |
+|------|---------------------|
+| Path | `argocd/child-apps/test` |
+| Destination | **in-cluster** (сам Edge) |
+| Namespace | **`argocd`** (только CR приложений, не поды API) |
+| Ветка | **`test`** |
+| Repo URL (локально) | `http://:30300/sova/sova-deploy.git` — **не** `git.sova.local` (из pod ArgoCD DNS не видит hosts Mac) |
+
+**Дочерние Application (примеры):** `backend-test`, `adminpanel-test`, `cabinet-test`, `docs-test`, `mocks-test`, `data-test`, **`promtail-test`**.
+
+**Типичная ошибка (исправлена):** `InvalidSpecError` — проект `sova` не разрешал destination `argocd` на Edge. В `argocd/projects/sova-project.yaml` добавлено разрешение namespace `argocd`.
+
+**Локальный bootstrap:** при `LOCAL_NONPROD=1` скрипт `bootstrap-argocd-multicluster.sh` ставит **только** `test-contour`, без ручного `kubectl apply` каждого child-app (иначе дубли в UI).
+
+---
+
+## `promtail-test` — агент логов
+
+**Назначение:** Helm-релиз **Promtail** на кластере **`app-test`**, namespace **`monitoring`**.
+
+**Зачем отдельно виден в UI:** это **дочерний** Application из той же папки, что подхватывает `test-contour`. В списке Argo CD он на одном уровне с зонтиком — так устроен App-of-Apps.
+
+**Что делает Promtail:**
+
+- читает логи подов (в т.ч. `sova-test`);
+- отправляет в **Loki** на Mgmt (`LOKI_PUSH_URL`, порт 3100);
+- смотреть в **Grafana → Explore → Loki**, запрос `{namespace="sova-test"}`.
+
+**Почему часто Healthy, когда `test-contour` был красным:** `promtail-test` деплоится на **`app-test`**, что разрешено в проекте `sova` с самого начала. Ошибка была только у **родителя** (`test-contour`), а не у Promtail.
+
+---
+
+## Как обновить / починить
+
+```bash
+cd k8s
+
+# 1. Залить sova-deploy (ветка test) в Gitea
+cd sova-deploy && git checkout test
+git add argocd/
+git commit -m "fix(argocd): test-contour — project argocd NS, repoURL Git VM IP"
+# push в Gitea (см. scripts в k8s/)
+
+# 2. Применить проект и test-contour на Edge
+export KUBECONFIG=~/.kube/config-k8s-edge
+LOCAL_NONPROD=1 GITEA_REPO_URL=http://192.168.252.4:30300 \
+ LOKI_PUSH_URL=http://:3100/loki/api/v1/push \
+ ./scripts/bootstrap-argocd-multicluster.sh ~/.kube/config-k8s-app-test
+
+# 3. Синхронизация
+argocd app sync test-contour --force
+```
+
+---
+
+
+## Связанные документы
+
+- [Запуск 4 VM](./local-nonprod)
+- [Доступы](./access)
+- [ArgoCD в test-контуре (k3s)](../test-contour/guides/argocd)
+- [ArgoCD: sova-root и data-test](../test-contour/argocd-apps)
diff --git a/infrastructure/local-k8s/issues-27-branches.md b/infrastructure/local-k8s/issues-27-branches.md
new file mode 100644
index 0000000..6371648
--- /dev/null
+++ b/infrastructure/local-k8s/issues-27-branches.md
@@ -0,0 +1,52 @@
+# Redmine #27: ветки в Gitea (k8s)
+
+Задача [#27](http://redmine.sova.local/issues/27) — content CRUD (backend + adminpanel) и доработки cabinet. Исходный код живёт в **monorepo** `apps/{backend,adminPanel,cabinet}`; в ферме k8s — отдельные репозитории `sova-*` на Gitea.
+
+## Ветки
+
+| Репозиторий Gitea | Ветка | Откуда | Назначение |
+|-------------------|-------|--------|------------|
+| `sova/backend` | `issues/27` | `apps/backend` | Интеграционный CRUD API (не для review; см. `feature/content-crud-*`) |
+| `sova/adminpanel` | `issues/27` | `apps/adminPanel` | UI «как `/promotions`» — отдельные страницы на ресурс |
+| `sova/adminpanel` | `issues/27-future` | `apps/adminPanel` | Рекомендуемый UI: `ContentListPage`, `apiContent`, [док](/apps/admin-panel-content-crud) |
+| `sova/cabinet` | `issues/27` | `apps/cabinet` | MIS-сессия, онлайн-визит/оплата |
+| `sova/cabinet` | `issues/27-cabinet-registration` | только k8s/k3s-test | Docker/webpack + регистрация на test |
+| `sova/cabinet` | `issues/27-cabinet-owl-fix` | только k8s/k3s-test | Lazy `owl.carousel` для Stimulus |
+
+Ветки **`prod` / `test` / `stage`** — контур деплоя (ArgoCD). Feature-ветки **не** триггерят CI на push (только `workflow_dispatch` или merge в `test` + тег).
+
+## Перенос / обновление из monorepo
+
+```bash
+cd k8s
+./scripts/migrate-issues-27-branches.sh
+```
+
+Скрипт:
+
+1. `git checkout` нужной ветки в `apps/*`;
+2. `rsync` в `sova-*` (сохраняет k8s-артефакты: `Dockerfile`, `.gitea/`, `docker/`, `.env.ci`);
+3. коммит на одноимённой ветке;
+4. `git push gitea` на `vm-k8s-git`.
+
+Альтернатива с историей коммитов (только backend/adminpanel): `scripts/migrate-monorepo-branch.sh` + диапазон коммитов monorepo.
+
+## Локальная работа
+
+```bash
+# backend CRUD на test
+cd k8s/sova-backend && git checkout issues/27
+
+# adminpanel (generic UI)
+cd k8s/sova-adminpanel && git checkout issues/27-future
+
+# собрать образ вручную или merge → test → ./scripts/release-tag.sh
+```
+
+После merge в `test` — релизный тег (`backend-v*`, `adminpanel-v*`) и ArgoCD sync, как в [CI/CD и Loki](./ci-and-logs).
+
+## Связанные документы
+
+- [Backend content CRUD](/apps/backend-content-crud)
+- [Adminpanel content CRUD](/apps/admin-panel-content-crud)
+- [Git-flow](./git-flow)