docs(platform): add policy configs, runbooks, ops scripts and platform documentation

Config policies (16 files): alert_routing, architecture_pressure, backlog,
cost_weights, data_governance, incident_escalation, incident_intelligence,
network_allowlist, nodes_registry, observability_sources, rbac_tools_matrix,
release_gate, risk_attribution, risk_policy, slo_policy, tool_limits, tools_rollout

Ops (22 files): Caddyfile, calendar compose, grafana voice dashboard,
deployments/incidents logs, runbooks for alerts/audit/backlog/incidents/sofiia/voice,
cron jobs, scripts (alert_triage, audit_cleanup, migrate_*, governance, schedule),
task_registry, voice alerts/ha/latency/policy

Docs (30+ files): HUMANIZED_STEPAN v2.7-v3 changelogs and runbooks,
NODA1/NODA2 status and setup, audit index and traces, backlog, incident,
supervisor, tools, voice, opencode, release, risk, aistalk, spacebot

Made-with: Cursor
This commit is contained in:
Apple
2026-03-03 07:14:53 -08:00
parent 129e4ea1fc
commit 67225a39fa
102 changed files with 20060 additions and 0 deletions

View File

@@ -0,0 +1,139 @@
# Humanized Stepan — Release Checklist
**Version:** v3 (оновлено з v2.7) | **Date:** 2026-02-24
---
## PRE-DEPLOY
- [ ] **Тести пройдені локально (232/232)**
```bash
python3 -m pytest \
tests/test_stepan_invariants.py tests/test_stepan_acceptance.py \
tests/test_stepan_light_reply.py tests/test_stepan_memory_followup.py \
tests/test_stepan_telemetry.py tests/test_stepan_v28_farm.py \
tests/test_stepan_v29_consolidation.py \
tests/test_stepan_v3_session_proactivity_stability.py -v
```
- [ ] **Diff review** — перевірити, що змінені тільки:
- `crews/agromatrix_crew/session_context.py` (новий файл — v3)
- `crews/agromatrix_crew/proactivity.py` (новий файл — v3)
- `crews/agromatrix_crew/depth_classifier.py` (stability guard + `session=` param)
- `crews/agromatrix_crew/run.py` (3 мінімальних гачки session/proactivity)
- `tests/test_stepan_v3_session_proactivity_stability.py` (новий файл)
- `docs/*.md` (документація, не runtime)
- [ ] **Env перевірка**
```bash
# На НОДА1 (значення масковані — тільки наявність)
ssh root@144.76.224.179 "docker exec dagi-gateway-node1 env \
| grep -E '^AGX_OPERATOR_IDS=|^AGX_STEPAN_MODE=|^TZ=' | sed 's/=.*/=***/' "
```
- [ ] `AGX_STEPAN_MODE=inproc`
- [ ] `TZ=Europe/Kyiv`
- [ ] `AGX_OPERATOR_IDS` не порожній
- [ ] **memory-service доступний**
```bash
docker exec dagi-gateway-node1 curl -s http://memory-service:8000/health
```
- [ ] **Rollback plan підготовлений** — знати попередній image tag або commit hash
---
## DEPLOY
```bash
cd /opt/microdao-daarion
# 1. Pull змін
git pull origin main # або потрібна гілка
# 2. Rebuild тільки gateway
docker compose -f docker-compose.node1.yml up -d --build dagi-gateway-node1
# 3. Перевірка старту (чекати ~30 сек)
sleep 30
docker logs dagi-gateway-node1 --since 1m 2>&1 | grep -E "Stepan mode|STEPAN_IMPORTS_OK" | tail -5
```
**Очікувані рядки в логах після старту:**
```
Stepan mode: inproc
STEPAN_IMPORTS_OK=True
```
---
## POST-DEPLOY
### Health перевірка
```bash
# Логи без помилок
docker logs dagi-gateway-node1 --since 5m 2>&1 \
| grep -E "ImportError|ModuleNotFoundError|Stepan disabled|ERROR" | wc -l
# Очікується: 0
```
### 5 Smoke сценаріїв (Telegram, від оператора)
| # | Повідомлення | Очікування | Лог-перевірка |
|---|---|---|---|
| 1 | `Привіт` | ≤80 символів, без "чим допомогти" | `depth=light, crew_launch=false, session_updated` |
| 2 | `Зроби план на завтра по полю 12` | Deep відповідь, crew запущений | `depth=deep, crew_launch=true, topics_push=true, session_updated` |
| 3 | `а на післязавтра?` | Light, підхоплює тему без нового push; якщо попереднє було light — `stability_guard_triggered` | `depth=light, topics_push=false, session_updated` |
| 4 | `обприскування гербіцидом якщо дощ` | Light + disclaimer "за етикеткою"/"за регламентом" | `depth=light` |
| 5 | `Дякую` | ≤40 символів, без питань | `depth=light, crew_launch=false` |
### Спостереження telemetry v3 (3060 хв після деплою)
```bash
# Session events (перевірити що є, не занадто багато expired)
docker logs dagi-gateway-node1 --since 1h 2>&1 \
| grep "AGX_STEPAN_METRIC session_" | tail -80
# Stability guard (має бути, але не домінувати)
docker logs dagi-gateway-node1 --since 1h 2>&1 \
| grep "AGX_STEPAN_METRIC stability_guard_triggered" | tail -50
# Proactivity (має бути рідко)
docker logs dagi-gateway-node1 --since 1h 2>&1 \
| grep "AGX_STEPAN_METRIC proactivity_added" | tail -20
```
### Memory validate
```bash
# Перевірити що profile зберігся після deep взаємодії
# (через memory-service API або логи)
docker logs dagi-gateway-node1 --since 10m 2>&1 | grep -E "UserProfile.*updated|FarmProfile.*updated" | tail -10
```
---
## ROLLBACK TRIGGER CONDITIONS
Негайний rollback якщо:
- [ ] `Stepan disabled` у логах після старту
- [ ] `ModuleNotFoundError` або `ImportError` у логах
- [ ] Більше 3 помилок типу `500` у gateway за 5 хв після деплою
- [ ] `light_rate < 0.40` за 30+ повідомлень (занадто багато deep)
- [ ] ZZR disclaimer з'являється на не-ЗЗР контекст > 3 рази за сесію
**v3-специфічні тригери:**
- [ ] `proactivity_added` > 3 рази за 30 хв в одному чаті → перевірити `interaction_count` логіку
- [ ] `stability_guard_triggered` домінує і deep майже зник (`light_rate > 0.90` при `total >= 30`) → guard надто агресивний
- [ ] `session_expired` > 20/год на активному чаті → перевірити TZ контейнера (`docker exec dagi-gateway-node1 date`)
```bash
# Швидкий rollback (v3-файли)
cd /opt/microdao-daarion
git checkout HEAD~1 -- \
crews/agromatrix_crew/run.py \
crews/agromatrix_crew/depth_classifier.py
# Якщо потрібно прибрати нові модулі повністю:
# git checkout HEAD~1 -- crews/agromatrix_crew/session_context.py
# git checkout HEAD~1 -- crews/agromatrix_crew/proactivity.py
docker compose -f docker-compose.node1.yml up -d --build dagi-gateway-node1
```