docs: add session preflight and expand lint scope batch5

This commit is contained in:
Apple
2026-02-16 03:53:56 -08:00
parent 9c9f4fa182
commit de7533f97e
7 changed files with 120 additions and 25 deletions

View File

@@ -7,7 +7,7 @@
## ✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama) ## ✅ 1. Моделі — ВСІ ЗБЕРЕЖЕНІ (Ollama)
### 📦 8 моделей в Ollama (загалом ~118 GB): ### 📦 8 моделей в Ollama (загалом ~118 GB)
| Модель | Розмір | Параметри | Тип | Статус | | Модель | Розмір | Параметри | Тип | Статус |
|--------|--------|-----------|------|--------| |--------|--------|-----------|------|--------|
@@ -24,7 +24,7 @@
--- ---
### ❌ Видалено з `models/` (не Ollama): ### ❌ Видалено з `models/` (не Ollama)
- **qwen3-vl-32b-instruct** (~130 GB) — vision-модель для мультимодальності - **qwen3-vl-32b-instruct** (~130 GB) — vision-модель для мультимодальності
- 65.5 GB `.gguf` файл - 65.5 GB `.gguf` файл
@@ -33,7 +33,7 @@
**Проблема:** Немає vision-моделей для мультимодальних запитів! **Проблема:** Немає vision-моделей для мультимодальних запитів!
**Рішення:** **Рішення:**
1. Завантажити `llava:13b` через Ollama (~13 GB) 1. Завантажити `llava:13b` через Ollama (~13 GB)
2. АБО відновити Qwen3-VL з HuggingFace (якщо потрібен кастомний inference) 2. АБО відновити Qwen3-VL з HuggingFace (якщо потрібен кастомний inference)
@@ -77,7 +77,7 @@ curl http://localhost:9102/health
## ✅ 4. DAGI Stack — Частково ПРАЦЮЄ ## ✅ 4. DAGI Stack — Частково ПРАЦЮЄ
### Запущені сервіси: ### Запущені сервіси
| Сервіс | Статус | Порт | Призначення | | Сервіс | Статус | Порт | Призначення |
|--------|--------|------|-------------| |--------|--------|------|-------------|
@@ -91,7 +91,7 @@ curl http://localhost:9102/health
--- ---
### 🤖 12 CrewAI Агентів (4 Workflows): ### 🤖 12 CrewAI Агентів (4 Workflows)
#### 1. **Onboarding Workflow** (3 агенти) #### 1. **Onboarding Workflow** (3 агенти)
- `welcomer` — вітання нових користувачів - `welcomer` — вітання нових користувачів
@@ -123,7 +123,7 @@ curl http://localhost:9010/workflow/list
## ⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО ## ⚠️ 5. Мультимодальні сервіси — ЧАСТКОВО
### ✅ Працюють: ### ✅ Працюють
| Сервіс | Порт | Статус | Призначення | | Сервіс | Порт | Статус | Призначення |
|--------|------|--------|-------------| |--------|------|--------|-------------|
@@ -132,7 +132,7 @@ curl http://localhost:9010/workflow/list
| **Agent Cabinet** | 8898 | ✅ Healthy | Управління агентами | | **Agent Cabinet** | 8898 | ✅ Healthy | Управління агентами |
| **MeiliSearch** | 7700 | ✅ Running | Текстовий пошук | | **MeiliSearch** | 7700 | ✅ Running | Текстовий пошук |
### ❌ НЕ працюють: ### ❌ НЕ працюють
| Сервіс | Порт | Статус | Причина | | Сервіс | Порт | Статус | Причина |
|--------|------|--------|---------| |--------|------|--------|---------|
@@ -145,19 +145,19 @@ curl http://localhost:9010/workflow/list
## 📊 6. Інфраструктура NODE2 ## 📊 6. Інфраструктура NODE2
### Ресурси: ### Ресурси
- **CPU:** Apple M4 Max (40-core GPU) - **CPU:** Apple M4 Max (40-core GPU)
- **RAM:** 64 GB - **RAM:** 64 GB
- **VRAM:** 48 GB (GPU) - **VRAM:** 48 GB (GPU)
- **Диск:** ~500 GB вільно (після cleanup) - **Диск:** ~500 GB вільно (після cleanup)
### Docker мережа: ### Docker мережа
- `dagi-network` — всі DAGI сервіси - `dagi-network` — всі DAGI сервіси
- Bridge для комунікації між контейнерами - Bridge для комунікації між контейнерами
### Ollama: ### Ollama
- **Версія:** Latest - **Версія:** Latest
- **URL:** http://localhost:11434 - **URL:** [http://localhost:11434](http://localhost:11434)
- **Models dir:** `/Users/apple/.ollama/models` - **Models dir:** `/Users/apple/.ollama/models`
--- ---
@@ -258,14 +258,14 @@ POST http://localhost:9010/workflow/execute
## ✅ 9. ПІДСУМОК ## ✅ 9. ПІДСУМОК
### Готово: ### Готово
-**8 LLM-моделей збережені** в Ollama (включно з DeepSeek 70B) -**8 LLM-моделей збережені** в Ollama (включно з DeepSeek 70B)
-**Swapper Service запущено** на NODE2 (порт 8890) -**Swapper Service запущено** на NODE2 (порт 8890)
-**DAGI Router працює** (порт 9102) -**DAGI Router працює** (порт 9102)
-**12 CrewAI агентів готові** до інтеграції -**12 CrewAI агентів готові** до інтеграції
-**Web Search + Vector DB працюють** -**Web Search + Vector DB працюють**
### Потрібно: ### Потрібно
- ⚠️ **Відновити vision-модель** (LLaVA або Qwen3-VL) - ⚠️ **Відновити vision-модель** (LLaVA або Qwen3-VL)
- ⚠️ **Запустити STT/OCR** (для voice/photo) - ⚠️ **Запустити STT/OCR** (для voice/photo)
- ⚠️ **Підключити Swapper до Router** (NODE2 → NODE1) - ⚠️ **Підключити Swapper до Router** (NODE2 → NODE1)
@@ -280,4 +280,3 @@ POST http://localhost:9010/workflow/execute
--- ---
*Документ створено автоматично під час діагностики NODE2 після git cleanup операції.* *Документ створено автоматично під час діагностики NODE2 після git cleanup операції.*

View File

@@ -21,6 +21,11 @@ Important: keep docs and runtime aligned via explicit drift checks, not assumpti
## Session Bootstrap (Services + Docs) ## Session Bootstrap (Services + Docs)
0. Preflight (must pass before any task):
```bash
bash scripts/session/preflight.sh --expected-root /Users/apple/github-projects/microdao-daarion
```
1. Run integrations bootstrap report: 1. Run integrations bootstrap report:
```bash ```bash
bash scripts/docs/session_bootstrap.sh bash scripts/docs/session_bootstrap.sh

View File

@@ -4,13 +4,13 @@
**Хардкод** = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду. **Хардкод** = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду.
### Приклад хардкоду: ### Приклад хардкоду
```python ```python
# ❌ ХАРДКОД - значення прямо в коді # ❌ ХАРДКОД - значення прямо в коді
local_model = "qwen3-8b" # Якщо треба змінити модель, треба редагувати код! local_model = "qwen3-8b" # Якщо треба змінити модель, треба редагувати код!
``` ```
### Проблеми хардкоду: ### Проблеми хардкоду
1. **Треба редагувати код** для зміни значення 1. **Треба редагувати код** для зміни значення
2. **Не можна змінити без перезапуску** сервісу 2. **Не можна змінити без перезапуску** сервісу
3. **Важко тестувати** різні конфігурації 3. **Важко тестувати** різні конфігурації
@@ -22,7 +22,7 @@ local_model = "qwen3-8b" # Якщо треба змінити модель, т
**Конфігурація** = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду. **Конфігурація** = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду.
### Приклад конфігурації: ### Приклад конфігурації
```yaml ```yaml
# ✅ КОНФІГ - значення в окремому файлі router-config.yml # ✅ КОНФІГ - значення в окремому файлі router-config.yml
llm_profiles: llm_profiles:
@@ -38,7 +38,7 @@ llm_profile = router_config.get("llm_profiles", {}).get("qwen3_science_8b")
model = llm_profile.get("model") # Беремо з конфігу, не хардкодимо! model = llm_profile.get("model") # Беремо з конфігу, не хардкодимо!
``` ```
### Переваги конфігурації: ### Переваги конфігурації
1. **Зміна без редагування коду** - просто змінити YAML файл 1. **Зміна без редагування коду** - просто змінити YAML файл
2. **Різні конфіги для різних середовищ** (dev/prod/staging) 2. **Різні конфіги для різних середовищ** (dev/prod/staging)
3. **Легко тестувати** - можна створити test-config.yml 3. **Легко тестувати** - можна створити test-config.yml
@@ -60,13 +60,13 @@ model = llm_profile.get("model") # Беремо з конфігу, не хар
## 🔧 ЩО МИ ВИПРАВИЛИ? ## 🔧 ЩО МИ ВИПРАВИЛИ?
### БУЛО (хардкод): ### БУЛО (хардкод)
```python ```python
# ❌ Хардкод - модель завжди "qwen3-8b" # ❌ Хардкод - модель завжди "qwen3-8b"
local_model = "qwen3-8b" local_model = "qwen3-8b"
``` ```
### СТАЛО (з конфігу): ### СТАЛО (з конфігу)
```python ```python
# ✅ Читаємо з конфігу # ✅ Читаємо з конфігу
if llm_profile.get("provider") == "ollama": if llm_profile.get("provider") == "ollama":
@@ -74,7 +74,7 @@ if llm_profile.get("provider") == "ollama":
local_model = ollama_model.replace(":", "-") # qwen3:8b → qwen3-8b local_model = ollama_model.replace(":", "-") # qwen3:8b → qwen3-8b
``` ```
### Результат: ### Результат
- ✅ Модель береться з `router-config.yml` - ✅ Модель береться з `router-config.yml`
- ✅ Якщо змінити конфіг → зміниться поведінка - ✅ Якщо змінити конфіг → зміниться поведінка
-Не треба редагувати код для зміни моделі -Не треба редагувати код для зміни моделі
@@ -84,12 +84,12 @@ if llm_profile.get("provider") == "ollama":
## 💡 КОЛИ ВИКОРИСТОВУВАТИ? ## 💡 КОЛИ ВИКОРИСТОВУВАТИ?
### Хардкод - тільки для: ### Хардкод - тільки для
- Константи (π = 3.14, версія API) - Константи (π = 3.14, версія API)
- Значення, які ніколи не зміняться - Значення, які ніколи не зміняться
- Технічні деталі (timeout = 5.0 сек) - Технічні деталі (timeout = 5.0 сек)
### Конфігурація - для: ### Конфігурація - для
- Моделі LLM - Моделі LLM
- API ключі - API ключі
- URL сервісів - URL сервісів
@@ -100,7 +100,7 @@ if llm_profile.get("provider") == "ollama":
## 📝 ПРИКЛАД З НАШОГО ПРОЄКТУ ## 📝 ПРИКЛАД З НАШОГО ПРОЄКТУ
### router-config.yml (конфігурація): ### router-config.yml (конфігурація)
```yaml ```yaml
agents: agents:
helion: helion:
@@ -112,7 +112,7 @@ llm_profiles:
model: qwen3:8b # ← Можна змінити модель тут model: qwen3:8b # ← Можна змінити модель тут
``` ```
### main.py (код): ### main.py (код)
```python ```python
# Читаємо з конфігу # Читаємо з конфігу
default_llm = agent_config.get("default_llm", "qwen3-8b") default_llm = agent_config.get("default_llm", "qwen3-8b")

View File

@@ -7,6 +7,13 @@ Scope: GitHub, Gitea, Jupyter, Pieces documentation integration workflow.
Keep docs state synchronized with service reality and publish curated docs updates safely. Keep docs state synchronized with service reality and publish curated docs updates safely.
## 0) Session preflight
```bash
cd /Users/apple/github-projects/microdao-daarion
bash scripts/session/preflight.sh --expected-root /Users/apple/github-projects/microdao-daarion
```
## 1) Refresh service status ## 1) Refresh service status
```bash ```bash

View File

@@ -33,6 +33,8 @@ docs/DEPLOYMENT_OVERVIEW.md
docs/DEPLOY_MIGRATIONS.md docs/DEPLOY_MIGRATIONS.md
docs/ACTION_PLAN.md docs/ACTION_PLAN.md
docs/NODE2_GUARDIAN_SETUP.md docs/NODE2_GUARDIAN_SETUP.md
docs/hardcode_vs_config.md
docs/NODE2_DIAGNOSTIC_REPORT.md
docs/consolidation/README.md docs/consolidation/README.md
docs/consolidation/SOURCES.md docs/consolidation/SOURCES.md
docs/runbooks/DOCS_SERVICES_AUTOMATION_RUNBOOK.md docs/runbooks/DOCS_SERVICES_AUTOMATION_RUNBOOK.md

View File

@@ -118,6 +118,7 @@ doc_paths=(
scripts/docs/docs_lint.sh scripts/docs/docs_lint.sh
scripts/docs/run_docs_maintenance.sh scripts/docs/run_docs_maintenance.sh
scripts/docs/install_local_cron.sh scripts/docs/install_local_cron.sh
scripts/session/preflight.sh
scripts/docs/jupyter_sync.sh scripts/docs/jupyter_sync.sh
scripts/docs/pieces_sync.sh scripts/docs/pieces_sync.sh
scripts/docs/services_sync.sh scripts/docs/services_sync.sh

81
scripts/session/preflight.sh Executable file
View File

@@ -0,0 +1,81 @@
#!/usr/bin/env bash
set -euo pipefail
EXPECTED_ROOT="${EXPECTED_ROOT:-/Users/apple/github-projects/microdao-daarion}"
REQUIRE_SESSION_STARTER=1
usage() {
cat <<'USAGE'
Usage:
bash scripts/session/preflight.sh [--expected-root /path/to/repo] [--no-session-starter]
Checks:
- current working directory
- git repository root
- current branch
- latest commit
- docs/SESSION_STARTER.md presence (default required)
- docs directory presence
Exit codes:
0 all checks passed
10 wrong repo root
11 missing SESSION_STARTER.md
12 missing docs directory
13 git not initialized / not a repo
USAGE
}
while [[ $# -gt 0 ]]; do
case "$1" in
--expected-root)
EXPECTED_ROOT="$2"
shift 2
;;
--no-session-starter)
REQUIRE_SESSION_STARTER=0
shift
;;
-h|--help)
usage
exit 0
;;
*)
echo "Unknown arg: $1" >&2
usage
exit 2
;;
esac
done
if ! git_root="$(git rev-parse --show-toplevel 2>/dev/null)"; then
echo "[FAIL] not a git repository" >&2
exit 13
fi
pwd_now="$(pwd)"
branch="$(git branch --show-current || true)"
head_line="$(git log --oneline -n 1 2>/dev/null || echo 'NO_COMMITS')"
printf "[INFO] pwd: %s\n" "$pwd_now"
printf "[INFO] git_root: %s\n" "$git_root"
printf "[INFO] branch: %s\n" "${branch:-DETACHED_OR_NONE}"
printf "[INFO] head: %s\n" "$head_line"
printf "[INFO] expected_root: %s\n" "$EXPECTED_ROOT"
if [[ "$git_root" != "$EXPECTED_ROOT" ]]; then
echo "[FAIL] unexpected repository root" >&2
exit 10
fi
if [[ ! -d "$git_root/docs" ]]; then
echo "[FAIL] missing docs directory: $git_root/docs" >&2
exit 12
fi
if [[ "$REQUIRE_SESSION_STARTER" -eq 1 && ! -f "$git_root/docs/SESSION_STARTER.md" ]]; then
echo "[FAIL] missing SESSION_STARTER: $git_root/docs/SESSION_STARTER.md" >&2
exit 11
fi
echo "[PASS] preflight OK"