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:
139
docs/HUMANIZED_STEPAN_v2.7_RELEASE_CHECKLIST.md
Normal file
139
docs/HUMANIZED_STEPAN_v2.7_RELEASE_CHECKLIST.md
Normal 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 (30–60 хв після деплою)
|
||||
|
||||
```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
|
||||
```
|
||||
Reference in New Issue
Block a user